Bootstrap

Linux基本操作命令

一、基本操作命令

1. su命令:切换用户

su 【用户名】

  • su root #切换到root用户
  • su #切换到root用户。①和②等同
  • su rjxy #切换到rjxy用户

2. pwd命令:查看当前的工作路径

3. cd命令:更改工作目录路径

  • cd /etc #切换到“/etc”目录
  • cd … #更改至当前目录的父目录(上一级)
  • cd ~rjxy #更改至用户rjxy的宿主目录(宿主目录,即用户的个人目录)

★ 非root用户下达“cd ~root”命令是否有意义?

4. ls命令

ls 【选项】 【目录或文件】

  • ls /home #查看/home目录下的文件(不包括隐藏文件)
  • ls –a /home #显示/root目录下所有文件(包括隐藏文件,隐藏文件前面带“.”)
  • ls –l /etc #长格式显示所有内容(相当于ll命令)

5. ctrl+l:清屏

6. touch:创建空文件,更改文件的时间

touch【-r<参考文件或目录>】【-t<日期时间>】【文件名】

u -r:使用参考档的时间

u -t:设定(修改)文件的修改时间,日期格式为“MMDDHHmm”

  • touch file #创建文件file
  • touch file1 file2 file3 #创建文件“file1”、“file2”和“file3”

7. mkdir:创建目录

mkdir 【选项】 【目录名】

  • mkdir a #在当前目录下创建新目录“a”
  • mkdir /home/b #在“/home”目录下创建新目录“b”

【注意】绝对路径和相对路径

★ 绝对路径:从根目录出发,以根目录为参考,如/home,表示根目录下的home子目录;

★ 相对路径:从当前目录出发,以当前目录为参考,如home,表示当前目录下的home子目录。

8. rm:删除文件和目录

u -f:强制删除,不再询问

u -r:删除全部文件、目录和子目录

  • touch file1 #在当前目录下创建文件file1

    rm file1 #交互式地删除文件file1

  • mkdir m1 #在当前目录下创建目录m1

  • rm –r m1 #交互式地删除目录m1

  • touch file2 file3 #在当前目录下创建文件file2和file3

    rm file2 #不带-f选项,交互式删除

    rm -f file3 #带-f选项,非交互式,不提示,直接删除

  • mkdir m2 m3 #在当前目录下创建目录m2和m3

    rm -r m2 #不带-f选项,交互式删除

    rm -rf m3 #带-f选项,非交互式,不提示,直接删除

二、vi/vim编辑器

1. vi/vim编辑器

vi是Linux操作系统的一个编辑器,vim是vi的升级版,不仅兼容vi编辑器的所有指令,而且在vi编辑器的基础上增加了颜色显示,便于程序开发人员编写程序,同时vim也加入了很多额外的功能,如支持多文本编辑、多窗口显示等。

2. vi/vim命令

  • vi file1 #用vi打开文件file1进行编辑
  • vim file1 #用vim打开文件file1进行编辑

3. vi/vim的三种模式

vi/vim编辑器共分为三种工作模式:普通模式、编辑模式和命令模式。

(1) 普通模式

普通模式:用vim打开一个文档后,直接见到的就是普通模式,在该模式下,用户可以通过“←↑↓→”按键来移动光标,可以删除字符或删除整行,也可以复制和粘贴数据。

  • 复制一行-yy;
  • 复制多行-nyy(n为数字,是要复制的行数);
  • 粘贴-p或P(p是粘贴到光标所在行的下一行,P是粘贴到光标所在行的上一行);
  • 删除一行-dd;
  • 删除多行-ndd(n为数字,是要复制的行数);
  • 撤销-u;
  • 恢复-Ctrl+r。

(2) 编辑模式

编辑模式:

  • 在普通模式中可以进行删除、复制、粘贴等操作,但是却无法向文档中输入字符。
  • 此时按下字母“i”、“I”、“o”、“O”、“a”、“A”、“r”或“R”,编辑器将从普通模式转入编辑模式,同时在屏幕左下方会出现“INSERT”或“REPLACE”的字样,此时才可以向文档中输入字符。
  • 在整个输入过程结束后,按“Esc”键,即可返回普通模式,此时光标将处于刚才输入的最后一个字符的位置。

(3) 命令模式

命令模式:在普通模式中,输入“:”、“/”或“?”,编辑器将从普通模式转入命令模式,此时屏幕左下角将出现“:”、“/”或“?”的标志。在命令模式中,用户可以完成搜索、替换、高亮显示、行号显示、保存、退出甚至执行shell 指令等操作。

  • 显示行号-set nu;(取消显示行号-set nonu)
  • 存盘 -w;
  • 退出 -q;
  • 存盘退出 -wq;
  • 强制存盘退出 -wq!
  • 不存盘强制退出 -q!

**【注意】**如果编辑过程中用ctrl+z组合键,则vi编辑器会转入后台,此时再用vim编辑文件时会有警告信息,因为vim编辑文件时生成一个交换文件,如果vim没有正常退出,该交换文件还存在,会影响再次编辑,解决方法是删除交换文件“.ceshi.swp”。交换文件和原文件在同一个目录下,是一个隐藏文件,可用“ls -a”查看到。

三、嵌入式Linux编译器gcc

1.gcc概述

gcc (GNU Compiler Collection,GNU编译器套件)是GNU 项目的编译器组件之一,也是GNU 软件产品家族具有代表性的作品。

gcc 是一个交叉平台的编译器,目前支持几乎所有主流CPU 处理器平台,它可以完成从C、C++、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换,gcc不仅功能非常强大,结构也异常灵活,便携性(portable)与跨平台支持(cross-platform support)特性是gcc的显著优点。

在gcc 设计之初,仅仅是作为一个C语言的编译器,可是经过十多年的发展,gcc已经不仅仅能支持C语言;它现在还支持Ada、C++、Java、Objective C、Pascal、COBOL,以及支持函数式编程和逻辑编程的Mercury语言等等

gcc 是一组编译工具的总称,其软件包里包含众多的工具,按其类型,主要有以下的分类:

  • C编译器 cc, cc1, cc1plus, gcc
  • C++编译器 c++, cc1plus, g++
  • 库文件 libgcc.a, libgcc_eh.a, libgcc_s.so, libiberty.a, libstdc++.[a,so], libsupc++.a

用gcc编译程序生成可执行文件有时候看起来似乎仅通过编译一步就完成了,但事实上,使用gcc编译工具由C语言源程序生成可执行文件的过程并不单单是一个编译的过程,完整的编译流程要经过下面的几个过程:

  • 预处理(Pre-Processing):gcc首先调用cpp命令进行预处理,主要实现对源代码编译前的预处理,比如将源代码中指定的头文件包含进来;
  • 编译(Compiling):调用cc1 命令进行编译,将源代码翻译生成汇编代码;
  • 汇编(Assembling):调用as 命令进行工作,将汇编代码生成扩展名为.o 的目标文件;目标文件包含机器代码(可直接被CPU执行)以及代码在运行时使用的数据,如重定位信息、用于链接或调试的程序符号(变量和函数的名字)等;
  • 链接(Linking):调用链接器ld处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。

2. gcc的安装

2.1 RHEL 6.0 环境下安装(需要用到 rhel-server-6.0-x86_64-dvd.iso镜像)

gcc使用时需安装如下软件:

  • ppl-0.10.2-11.el6.i686.rpm
  • cloog-ppl-0.15.7-1.2.el6.i686.rpm
  • mpfr-2.4.1-6.el6.i686.rpm
  • cpp-4.4.5-6.el6.i686.rpm
  • glibc-headers-2.12-1.25.el6.i686
  • glibc-headers-2.12-1.25.el6.i686.rpm
  • glibc-devel-2.12-1.25.el6.i686.rpm
  • gcc-4.4.5-6.el6.i686.rpm
  • libstdc+±devel-4.4.5-6.el6.i686.rpm
  • gcc-c+±4.4.5-6.el6.i686.rpm

由于所需安装软件包较多,可以只记住gcc和gcc-c++,由于其他的软件包都是这两个安装包的依赖文件,所以只需在安装gcc和gcc-c++的过程中根据提示再安装相应的依赖包即可。

简便的方式是使用yum安装:

  • yum install gcc
  • yum install gcc-c++。

**【注意】**yum 是基于rpm 包管理工具,能够从指定的安装源(服务器,本地目录等)自动下载目标 rpm包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。但是yum的rpm包来源于安装源,所以要使用yum,必须先设置yum安装源,安装源由/etc/yum.repos.d/目录中的.repo文件配置指定。安装源可以是一个网络服务器地址,也可以是本地的安装光盘。

2.2 用yum安装gcc方法

(1) 用RHEL安装光盘建立本地yum安装源

①“虚拟机”→“设置”→“CD/DVD(IDE)”→“连接”→“使用ISO镜像文件”,通过“浏览”,选择Redhat安装光盘,并确保“设备状态”中的“已连接”选项被勾选;

②把光驱挂载到/aa目录(也可以是其他目录)

**【说明】**挂载:在Linux操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。

mkdir /aa           #创建目录(挂载点)
mount /dev/sr0 /aa      #挂载光驱
mount -s           #查看是否挂载成功

③ vim /etc/yum.repos.d/rhel-source.repo #rhel-source.repo文件是系统自带的yum源文件,可以直接在该文件上添加安装源的信息,但该文件只能由root用户修改。如果没有该文件,也可以自行创建一个新的文件,文件名可以任意,只需要以“.repo”结尾即可,如dvd.repo。

【向配置文件里面添加新如下新内容】

[dvd]
name = install dvd
baseurl = file:///aa
enabled = 1            #yum源生效
gpgcheck = 0            #不对文件进行校验
(2) 安装gcc

yum install gcc #安装c编译器,安装时可以加上“-y”选项,在安装时就不再需要确认

yum install gcc-c++ #安装c++编译器

【注意】如果安装gcc时正常,继续安装gcc-c++时提示如下错误:

img

这种情况说明yum安装源有问题,查看/etc/yum.repos.d目录,发现该目录下除了dvd.repo外多了一个文件packagekit-media.repo

img

将该文件删除,删除后再次运行yum install gcc-c++重新安装gcc-c++即可。

img

四、VMware Tools

Linux操作系统安装在VMware虚拟机中,默认情况下不能和外部的windows主机共享文件,编译完成的可执行文件不能直接移动到Linux系统中,这在开发过程中很麻烦,所以需要安装增强工具VMware Tools,来实现主机和虚拟机之间的文件共享。

VMware Tools支持文件自由拖拽,可以直接拖拽文件,在windows主机和Linux虚拟机之间自由移动。

1. 虚拟机→安装VMware Tools

(此时默认将VMware Workstation目录下的linux.iso挂载到虚拟光驱)

image-20220902154048628

2. 安装VMware Tools

mkdir /aa            #创建挂载点/aa
mount /dev/sr0  /aa       #将光驱挂载到挂载点

**【注意】**Linux系统中将光驱等存储设备也当成文件来处理,不能直接访问设备里面的数据,要访问设备里的数据,必须通过挂载操作,将设备挂载到一个已存在的目录上,此时目录的作用相当于一个入口,可以通过这个入口访问设备里的数据。

ls /aa             #查看光驱里的内容,可以看到VMwareTools-8.8.0-471268.tar.gz压缩包
mkdir /bb            #创建目录/bb
cp /aa/VMwareTools-8.8.0-471268.tar.gz  /bb     #将光驱中的VMwareTools-8.8.0-471268.tar.gz压缩包拷贝到目录/bb中

**【注意】**Linux系统下“Tab”键具有自动补全功能,如文件“VMwareTools-8.8.0-471268.tar.gz”名字很长,容易输错,可以只输入“V”,然后按下“Tab”键,即可自动把后面内容补全。

cd /bb             #切换到目录/bb 
ls               #可以查看到VMwareTools压缩包
tar –zxvf VMwareTools-8.8.0-471268.tar.gz      #将压缩包解压,解压后,/bb目录下增加了vmware-tools-distrib目录
ls    #再次查看,可以看到增加了vmware-tools-distrib 目录
cd vmware-tools-distrib     #进入目录
./vmware-install.pl       #开始安装
init 6             #安装完成后重启Linux
;