Linux系统命令基本介绍

长久以来呢,Linux操作系统以其稳定、高效且可靠等优点被大量的应用于企业服务器领域。
大部分对Linux服务器的管理和维护都是通过远程登录的方式来进行的。
而绝大部分的管理维护操作都是基于Linux命令来实现的,所以Linux命令在工作中就显得至关重要。
在将Linux命令之前,先得了解它的工作原理
原理很简单,其实就是我们用户输入一串字符命令,由shell将这条命令“翻译”为系统内核能够懂的“语言”,然后系统内核便根据这条命令去执行相关操作。
Linux centos7系统基础命令详解_第1张图片
讲完原理之后,我们了解一下Linux命令有哪些类型
其实很简单,Linux命令有两种,内部命令和外部命令
具体区别如下
Linux centos7系统基础命令详解_第2张图片
了解了Linux命令类型,我们再了解一下命令的结构
一条Linux命令,一般由三个部分组成,分别为:命令字选项参数
在这三个部分中,命令字是最关键的一部分,也是不能缺少的,另外两个部分根据具体情况是可以不要的
选项,分为长格式选项和短格式选项,长格式选项用“--”符号引导,一般后面接单词代表一个功能;短格式选项用“-”符号引导,一般后面接单个字母为一个功能。
参数,是命令字的处理对象,可以是文件名、目录名或用户名等,数量可以是零到多个
Linux centos7系统基础命令详解_第3张图片
在介绍基础命令之前,我们先了解一些Linux命令行的辅助操作,熟练掌握这些操作能够帮我们更好的使用Linux命令哦。

Tab键:自动补齐
反斜杠“\”:强制换行
快捷键Ctrl+U:清空至行首
快捷键Ctrl+K:清空至行尾
快捷键Ctrl+L:清空屏幕
快捷键Ctrl+C:取消本次命令编辑

tab键的自动补齐功能是我最喜欢的辅助操作,当你输入参数时,发现这个目录名太长,此时你只用输入前几个字母,按下tab键,就能自动帮你补齐目录名,比如我想输入“sysconfig”这个目录名,我只用输入“sysco”后面直接tab键就能自动补齐
Linux centos7系统基础命令详解
Linux centos7系统基础命令详解
反斜杠“\”是用来强制换行的,如果我要输入vim /etc/sysconfig/network-scripts/ifcfg-ens33这条命令,我可以在中间任意地方用“\”来强制换行
Linux centos7系统基础命令详解_第4张图片
Ctrl+U清空至行首,简单来说就是删除光标前面的字符
Linux centos7系统基础命令详解
Linux centos7系统基础命令详解
Ctrl+K清空至行尾,简单说就是删除光标后面的所有字符
Linux centos7系统基础命令详解
Linux centos7系统基础命令详解
Ctrl+L清空屏幕,不是说删除之前输入的命令,而是当你输入的命令太多占据了所有用户界面,它可以让你重新从用户界面的第一行开始输入
Linux centos7系统基础命令详解_第5张图片
Linux centos7系统基础命令详解_第6张图片
Ctrl+C取消本次命令编辑,用来终止命令的。例如我用ping命令检查网络是否互通时,它会一直持续发送数据包过去,当我想停止时就可以使用Ctrl+C
Linux centos7系统基础命令详解_第7张图片

获得命令帮助的方法:

除了这些辅助操作,当我们忘了某条命令,或者不知道某条命令是什么意思时,可以获取命令帮助,具体方法如下:
内部命令help
选项:

-L 打印$PWD 变量的值,如果它命名了当前的工作目录 
-P 打印当前的物理路径,不带有任何的符号链接 
  • 查看Bash内部命令的帮助信息。你只需要输入“help”就能查看一些命令和它的功能,但并不是包括所有命令。
    Linux centos7系统基础命令详解_第8张图片
    命令的“--help”选项
  • 适用于大多数外部命令。当你突然忘了一个命令的功能,或是忘了选项的功能,都可以直接在这个命令后面直接加“--help”,查看命令的具体功能。
    Linux centos7系统基础命令详解_第9张图片
    使用man命令阅读手册页
  • 使用“向上键”、“向下键”滚动文本
  • 使用Page Up和Page Down键翻页
  • 按Q或q键退出阅读环境、按“/”键查找内容
    因为我安装Linux时,安装了图形化界面,而很多服务器在安装时是不会安装图形化界面的,这时你用“--help”查询是不能滚动的界面,很多内容看不到。
    Linux centos7系统基础命令详解_第10张图片
    所以这时可以用“man”命令来弥补“--help”命令这方面的缺点。应为“man”命令可以进入一个阅读环境,能够滚动、翻页。
    Linux centos7系统基础命令详解_第11张图片

目录和文件基本操作

在我们在输入命令时,前面会有一串字符[root@localhost ~]# ,这些字符具体代表什么呢,下面我会逐个说明

root:当前系统登录用户,可以用su 加上用户名切换用户
localhost:主机名称,可以用hostname命令查看,用hostnamectl set-hostname 加上新的主机名来更改主机名
~:当前所在的位置(“~”代表家目录)
#:代表当前是管理员身份
$:代表当前是普通用户身份

了解前面这些,下面我们开始讲解Linux基础命令
命令:“pwd”查看当前工作目录(Print Working Directory)
“pwd”用来查看当前所在的目录,记住查看的是绝对路径,比如我在sysconfig目录底下用“pwd”查看目录,会显示绝对路径/etc/sysconfig
Linux centos7系统基础命令详解
讲到绝对路径,那就说一下,路径分为绝对路径和相对路径。绝对路径较简单是以根目录“/”为开头,以根目录为起点,一直到当前所在目录。
相对路径表现形式有一下几种:
Linux centos7系统基础命令详解_第12张图片
命令:“cd”切换工作目录(Change Directory)
“cd”用来切换工作目录的,例如我想进入/etc/sysconfig/network-scripts这个目录
就可以直接输入“cd /etc/sysconfig/network-scripts”就能进入这个目录了。
Linux centos7系统基础命令详解
除了切换到指定的工作目录,“cd”命令还有几个选项功能:

  • “cd ~”或“cd”:切换到当前用户的宿主目录
    Linux centos7系统基础命令详解_第13张图片
  • “cd -”切换到上次执行“cd”命令的目录
    Linux centos7系统基础命令详解_第14张图片
  • “cd ..”返回到当前目录的上一级目录
    Linux centos7系统基础命令详解_第15张图片

在 Linux 操作系统中表示某个目录(或文件)的位置时,根据其参照的起始目录不同, 可以使用两种不同的形式,分别称为绝对路径和相对路径。
绝对路径:这种方式以根目录“/”作为起点,如“/boot/grub”表示根目录下 boot 子目录中的 grub 目录。若要确切表明 grub 是一个目录(而不是一个文件),可以 在最后也加上一个目录分隔符,如表示为“/boot/grub/”。因为 Linux 操作系统中 的根目录只有一个,所以不管当前处于哪个目录中,使用绝对路径都可以非常准确 地表示一个目录(或文件)所在的位置。但是如果路径较长,输入的时候会比较烦 琐。
相对路径:这种方式一般以当前工作目录作为起点,在开头不使用“/”符号,因 此使用的时候更加简短、便捷。相对路径主要包括如下几种形式: 直接使用目录名或文件名表示当前工作目录中的子目录、文件的位置。例如,
“grub.conf”可表示当前目录下的 grub.conf 文件。

  • 使用一个点号“.”开头可明确表示以当前的工作目录作为起点。例如, “./grub.conf”也可表示当前目录下的 grub.conf 文件。
  • 使用两个点号“..”开头表示以当前目录的上一级目录(父目录)作为起点。 例如 , 若 当 前 处 于 /boot/grub/ 目 录 中 , 则 “ ../vmlinuz ”等同于 “/boot/vmlinuz”。
  • 使用“~用户名”的形式开头表示以指定用户的宿主目录作为起点,省略用户名时默认为当前用户。例如,“~teacher”表示 teacher 用户的宿主目录,而 “~”可表示当前用户的宿主目录。
    命令:“ls”显示当前目录的内容(“dir”命令与它功能差不多,但很少用,一般都用“ls”),后面常用的选项有“-l”、“-a”、“-A”、“-d”、“-h”、“-R”、“--color”
-l:以长格式(Long)显示文件和目录的列表,包括权限、大小、最后更新时间等 详细信息。不使用-l 选项时,ls 命令默认以短格式显示目录名或文件名信息。 
-a:显示所有(All)子目录和文件的信息,包括名称以点号“.”开头的隐藏目录 和隐藏文件。 
-A:与-a 选项的作用基本类似,但有两个特殊隐藏目录不会显示,即表示当前目 录的“.”和表示父目录的“..”。 
-d:显示目录(Directory)本身的属性,而不是显示目录中的内容。 
-h:以更人性化(Human)的方式显示目录或文件的大小,默认的大小单位为字节 (B),使用-h 选项后将显示为 KB、MB 等单位。此选项需要结合-l 选项一起使用。 
-R:以递归(Recursive)的方式显示指定目录及其子目录中的所有内容。 
--color:在字符模式中以颜色区分不同的文件,如果使用“--color=tty”,则表 示使用终端预定义的颜色方案。通常情况下,深蓝色表示目录,白色或黑色(若背景颜色为黑色则文件颜色为白色,相反则互换)表示一般文件, 绿色表示可执行的文件,黄color表示设备文件,红色表示压缩文件。

Linux centos7系统基础命令详解_第16张图片
“ls”只是单纯的显示当前目录的内容,当后面加上不同选项,又能实现不同的功能,下面我将详细介绍:
“ls -a” 列出目录下的所有文件(显示隐藏文件),包括以 “.”、“..”开头的隐藏文件,而“ls -A”也是显示隐藏文件与“ls -a”的唯一区别就是不显示“.”、“..”开头的隐藏文件。
Linux centos7系统基础命令详解_第17张图片
“ls -d”是将目录象文件一样显示,而不是显示其下的文件
Linux centos7系统基础命令详解
“ls -l”是显示目录下文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。
Linux centos7系统基础命令详解_第18张图片
“ls -h”将目录下文件的大小以带单位的形式显示出来,如果只用“ls -l”文件大小的单位统一都是“字节”,具体还得我们自己进行单位换算。
Linux centos7系统基础命令详解_第19张图片
“ls -R”将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现。
Linux centos7系统基础命令详解_第20张图片
“ls -color”是用不同颜色将不同格式的文件区分开来,一般默认情况下就已经执行了此命令,下面介绍一下常见的颜色代表的文件类型:

黑色------数据文件
绿色------可执行文件
红色------压缩文件
深蓝色------目录(文件夹)
淡蓝色------软链接文件(快捷方式)

除了这些常见的选项,还有通配符“ ? ”、“ * ”

“?”是匹配文件名中的一个未知字符,例如你想用“ls”命令查看一个文件,文件名其中几个字母不确定就可以用“?”代替
Linux centos7系统基础命令详解_第21张图片
“ * ”是匹配文件中的任意多个字符,例如你想用“ls”命令查看一个文件,但你只记得其中一个字母,就可以用这个字母加上“ * ”来进行查找
Linux centos7系统基础命令详解_第22张图片

命令:“du”统计目录及文件空间占用情况(Disk Usage)
常用选项:

-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。 
-h:以更人性化的方式(默认以 KB 计数,但不显示单位)显示出统计结果,使用 -h 选项后将显示出 KB、MB 等单位。 
-s:只统计每个参数所占用空间总的(Summary)大小,而不是统计每个子目录、 文件的大小。 

“du -a”统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
Linux centos7系统基础命令详解_第23张图片
Linux centos7系统基础命令详解_第24张图片
“du -h”以更人性化的方式显示出统计结果,默认以KB为计数,但不显示单位
Linux centos7系统基础命令详解_第25张图片
Linux centos7系统基础命令详解_第26张图片
“du -s”只统计所占空间总的大小,而不统计每个子目录、文件大小
Linux centos7系统基础命令详解
当然这些选项也可以结合起来用,例如你想统计/var/log/目录的总大小,同时显示出具体单位就可以输入
“du -sh /var/log/”来进行统计
Linux centos7系统基础命令详解

命令:“alias”设置别名
当你觉得一条命令输入太麻烦,而这条命令你要经常得用,此时你可以给它设置一个简单的别名,方便输入。
例如你想将“ls -alh”设置个别名为“myls”,就可以输入“alias myls='ls -alh'”
Linux centos7系统基础命令详解_第27张图片

创建目录和文件

命令:“mkdir”创建新目录(Make Directory)

如果你想在当前目录下创建一个新目录aaa,你可以输入“mkdir aaa”即可
Linux centos7系统基础命令详解
同时创建多个目录,只用在目录之间加上空格即可例如“mkdir 111 222 333”
Linux centos7系统基础命令详解
“mkdir -p”可以实现一次性创建嵌套的多层目录,不然的话只能先创建一个目录,再通过“cd”命令进入这个目录才能接着创建子目录
Linux centos7系统基础命令详解_第28张图片

命令:“touch”创建空文件

“touch”命令当你不指定创建文件的目录时,它会默认创建在当前目录下,同时创建多个文件时只需用空格将文件隔开即可。
Linux centos7系统基础命令详解_第29张图片
“touch”命令创建的文件是空文件,当我们想直接在创建文件时将内容一起添加进去时,我们可以用“echo”命令,例如我想在/root/aaa/bbb/目录创建一个文件bbb01.txt,内容为“this is bbb01”,我可以输入“echo “this is bbb01” > /root/aaa/bbb/bbb01.txt”。
Linux centos7系统基础命令详解_第30张图片
命令:“ln”创建链接文件

**格式: **ln [-s] 源文件或目录 链接文件或目标位置

在讲“ln”命令之前先了解一下链接文件,链接文件就是类似于Windows系统的快捷方式。链接分为两种,软链接(又称符号链接)、硬链接,下面介绍一下两种链接:
Linux centos7系统基础命令详解_第31张图片

使用 ln 命令时,默认创建的是硬链接。如果需要创建软链接,必须结合“-s”选项明
确指定。ln 命令的基本使用格式如下:
ln [-s] 源文件或目录„ 链接文件或目标位置
当目标位置是一个已经存在的目录时,新创建的链接文件将保存到该目录中,并使用与
源文件或目录相同的名称。例如,以下操作将为文件/bin/bzip2 创建一个软链接文件
/bin/soft/bzip2(未指定链接名称时,使用与原始文件相同的文件名)。

[root@localhost ~]# mkdir /bin/soft 
[root@localhost ~]# ln -s /bin/bzip2 /bin/soft/ 
[root@localhost ~]# ls -lh /bin/soft/bzip2 
lrwxrwxrwx. 1 root root 10 4 月 6 02:10 /bin/soft/bzip2 -> /bin/bzip2 

复制、删除、移动目录和文件

命令:cp复制(Copy)文件或目录
cp 命令用于复制文件或目录,将需要复制的文件或目录(源)重建一份并保存为新的 文件或目录(可保存到其他目录中)。需要复制多个文件或目录时,目标位置必须是目录,且目标目录必须已经存在。

格式:cp [选项] 源文件或目录 目标文件或目录

常用选项:

-f:覆盖目标同名文件或目录时不进行提醒,而直接强制(Force)复制。 
-i:覆盖目标同名文件或目录时提醒用户确认(Interactive,交互式)。 
-p:复制时保持(Preserve)源文件的权限、属主及时间标记等属性不变。 
-r:复制目录时必须使用此选项,表示递归复制所有文件及子目录。

例如,以下两个操作将把/bin/touch 命令程序复制到当前目录下,并命名为 mytouch; 另外将/etc/yum.conf 文件复制一份作为备份,添加.bak 扩展名,仍存放在/etc 目录中。

[root@localhost ~]# cp /bin/touch./mytouch 
[root@localhost ~]# cp /etc/yum.conf /etc/yum.conf.bak 

如果需要复制的数据包括完整的目录,则需要结合“-r”选项才能成功执行,否则目录 将被忽略。例如,以下操作将把目录/boot/grub、文件/etc/host.conf 复制到当前目录下 的 public_html 文件夹中。

[root@localhost ~]# cp -r /boot/grub/ /etc/host.conf public_html/ 
[root@localhost ~]# ls public_html/ 
grub host.conf 

命令:rm 删除(Remove)文件或目录

rm 命令用于删除指定的文件或目录,在 Linux 命令行界面中,删除的文件是难以恢复 的,因此使用 rm 命令删除文件时需要格外小心。rm 命令使用要删除的文件或目录名作为参 数。
常用的几个选项如下(与 cp 命令的对应选项含义基本相似):

-f:删除文件或目录时不进行提醒,而直接强制删除。 
-i:删除文件或目录时提醒用户确认。 
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)

对于已经确定不再使用的数据(包含目录、文件),通常结合“-rf”选项直接进行删除 而不进行提示。例如,若要删除刚复制到 public_html 目录中的 grub 目录树,且不提示用 户进行确认(直接删除),可以执行“rm -rf public_html/grub/”命令,具体操作如下:

[root@localhost ~]# rm -rf public_html/grub/ 
[root@localhost ~]# ls public_html/ 
host.conf

如果需要在执行删除操作前进行确认,可以使用“-i”选项(不要和-f 选项同时使用), rm 命令将对每个待删除的文件或目录提示用户是否真的删除,需要输入 y(表示删除)或 n (表示不删除)进行确认。例如,以下操作将以提示确认的方式删除 public_html 目录中的 host.conf 文件(根据提示信息输入 y 确认删除)。

[root@localhost ~]# rm -i public_html/host.conf 
rm:是否删除 普通文件 "public_html/host.conf"? y 

命令:mv 移动(Move)文件或目录

mv 命令用于将指定的文件或目录转移位置,如果目标位置与源位置相同,则效果相当 于为文件或目录改名。

格式:mv [选项] 源文件或目录 目标文件或目录
需要移动多个文件或目录时,目标位置必须是目录,且目标目录必须已经存在。 如果在同一个目录下移动文件或目录,则相当于执行重命名操作。例如,以下操作将把 当前目录中的 mytouch 程序文件改名为 mkfile。

[root@localhost ~]# mv mytouch mkfile 
[root@localhost ~]# ls -lh mytouch mkfile 
ls: 无法访问 mytouch: 没有那个文件或目录 
-rwxr-xr-x. 1 root root 62K 4 月 11 10:42 mkfile

如果移动一个文件或目录到一个已经存在的文件夹中,可以只指定目标文件夹位置。例 如,以下操作将把 mkfile 文件移动到 public_html 目录(已经存在)中,文件名仍然是 mkfile。

[root@localhost ~]# mv mkfile public_html/ 
[root@localhost ~]# ls -l public_html/mkfile 
-rwxr-xr-x. 1 root root 62488 4 月 11 10:42 public_html/mkfile 

查找目录和文件

命令:which 查找用户所执行的命令文件存放的目录 。

which 命令用于查找 Linux 命令程序并显示所在的具体位置,其搜索范围主要由用户的 环境变量 PATH 决定(可以执行“echo $PATH”命令查看),这个范围也是 Linux 操作系统在 执行命令或程序时的默认搜索路径。

which 命令使用要查找的命令或程序名作为参数,默认当找到第一个目标后即不再继续 查找,若希望在所有搜索路径中查找,可以添加“-a”选项。例如,执行“which ls”命令 后,可以找到名为 ls 的、位于/usr/bin/ls 的命令程序文件,具体操作如下:

[root@localhost ~]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 
[root@localhost ~]# which ls 
alias ls='ls --color=auto' 
/usr/bin/ls 

注意:由于 Shell 内置的命令并没有对应的程序文件,因此使用 which 查找内部命令时, 将找不到对应的程序。例如,查找内部命令 history 的位置时,会提示在搜索路径中没有这 个程序文件,具体操作如下:

[root@localhost ~]# which history 
/usr/bin/which: no history in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr 
/bin:/root/bin) 

命令:find 查找文件或目录

find 命令是 Linux 操作系统中功能非常强大的查找命令,可以根据目标的名称、类型、 大小等不同属性进行精细查找。find 命令在查找时采用递归的方式,其使用形式相当灵活, 也可以相当复杂。这里只介绍最常用的几种用法。

格式: find [查找范围] [查找条件表达式]

其中,查找范围对应的是在其中查找文件或子目录的目录位置(可以有多个),而查找 条件则决定了 find 命令根据哪些属性、特征进行查找。较常用的几种查找条件类型如 下所述。

按名称查找:关键字为“-name”,根据目标文件的名称进行查找,允许使用“ * ” 及“ ? ”通配符。 
按文件大小查找:关键字为“-size”,根据目标文件的大小进行查找,一般使用“+” 和“-”号设置超过或小于指定的大小作为查找条件。常用的容量单位包括 kB(注 意 k 是小写)、MB、GB。 
按文件属主查找:关键字为“-user”,根据文件是否属于目标用户进行查找。 
按文件类型查找:关键字为“-type”,根据文件的类型进行查找,这里的类型指的 是普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。块设备指 的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取 数据的设备(如键盘、鼠标等)。 

设置 find 命令的查找条件时,若需要使用“ * ”或“ ? ”通配符,最好将文件名用双引号括起来,以避免当前目录下符合条件的文件干扰查找结果。例如,以下操作将在/etc 目 录中递归查找名称以“resol”开头、以“.conf”结尾的文件。

[root@localhost ~]# find /etc –name "resol*.conf" 
/etc/resolv.conf 

使用“-type”查找条件可以过滤出指定类型的文件。例如,以下操作将在/boot 目录 中查找出所有的文件夹(对应的类型为 d),而忽略其他类型的文件。

[root@localhost ~]# find /boot -type d 
/boot 
/boot/grub 

需要同时使用多个查找条件时,各表达式之间可以使用逻辑运算符“-a”与“-o”分别 表示而且(and)、或者(or)。例如,以下两个操作使用了两个查找条件,即“超过 1024kB” 和“名称以vmlinuz 开头”,但分别使用“-a”“-o”组合两个条件,前者表示两个条件必 须同时满足,后者表示只需满足其中任何一个条件即可。

[root@localhost ~]# find /boot -size +1024k -a -name "vmlinuz*" 
/boot/vmlinuz-3.10.0-514.el7.x86_64 
/boot/vmlinuz-0-rescue-8d265977c0c0459d98aff332d2544503 
[root@localhost ~]# find /boot -size +1024k -o -name "vmlinuz*" 
/boot/grub2/fonts/unicode.pf2 
/boot/System.map-3.10.0-514.el7.x86_64 
/boot/vmlinuz-3.10.0-514.el7.x86_64 

Linux 目录结构

下面将要讲解一些目录、文件相关的命令,在讲解前先讲一下Linux的目录结构方便大家理解。Linux 操作系统在定位文件或目录位置时,使用斜杠“/”进行分隔(区别于 Windows 操作系统中的反斜杠“\”)。整个树形目录结构中,使用独立的一个“/”表示根目录,根目 录是 Linux 操作文件系统的起点,其所在的分区称为根分区。在根目录下,Linux 操作系统 将默认建立一些特殊的子目录,分别具有不同的用途。下面简单介绍一下其中常见的子目录及其作用。

/boot:此目录是系统内核存放的目录,同时也是系统启动时所需文件的存放目录, 如 vmlinuz 和 initrd.img。在安装 Linux 时,为 boot 目录创建一个分区,有利于 对系统进行备份。 
/bin:bin 是 binary 的缩写。这一目录存放了所有用户都可执行的且经常使用的 命令,如 cp、ls 等。 
/dev:此目录保存了接口设备文件,如/dev/hda1、/dev/cdrom 等。 
/etc:此目录保存有关系统设置与管理的文件。 
/home:存放所有普通系统用户的默认工作文件夹(即宿主目录、家目录),如用户 账号“teacher”对应的宿主目录位于“/home/teacher/”。如果服务器需要提供 给大量的普通用户使用,建议将“/home”目录也划分为独立的分区,以方便用户 数据的备份。 
/root:该目录是 Linux 操作系统管理员(超级用户)root 的宿主目录,默认情况 下只有 root 用户的宿主目录在根目录下而不是在“/home”目录下。 
/sbin:存放 Linux 操作系统中最基本的管理命令,一般管理员用户才有权限执行。
/usr:存放其他的用户应用程序,通常还被划分成很多子目录,用于存放不同类型 的应用程序。 
/var:存放系统中经常需要变化的一些文件,如系统日志文件、用户邮箱目录等, 在实际应用系统中,“/var”目录通常也被划分为独立的分区。 以上列举的只是 Linux 操作系统中用户经常用到的子目录,还有其他一些子目录需要用 户在使用 Linux 操作系统的过程中逐渐去熟悉。

查看文件内容

命令:cat 显示并连接(Concatenate)文件的内容

cat 命令本来用于连接(Concatenate)多个文件的内容,但在实际使用中更多地用于 查看文件内容。cat 命令是应用最为广泛的文件内容查看命令。使用该命令时,只需要 把 要 查 看 的 文 件 路 径 作 为 参 数 即 可 。 例 如 , 以 下 操 作 就 可 以 查 看 /etc/sysconfig/network-scripts/ifcfg-ens33 配置文件中的内容,并了解第一块以太网
卡的配置信息。

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet 
BOOTPROTO=none 
DEFROUTE=yes 
PEERDNS=yes 
PEERROUTES=yes 
IPV4_FAILURE_FATAL=noIPV6INIT=yes 
IPV6_AUTOCONF=yes 
IPV6_DEFROUTE=yes 
IPV6_PEERDNS=yes 
IPV6_PEERROUTES=yes 
IPV6_FAILURE_FATAL=no 
IPV6_ADDR_GEN_MODE=stable-privacy 
NAME=ens33 
UUID=918487c2-e150-422b-acdd-8b7b61d0239b 
DEVICE=ens33 
ONBOOT=yes 
IPADDR=192.168.10.114 
NETMASK=255.255.255.0 
GATEWAY=192.168.10.1

如果需要同时查看多个文件的内容,可以添加多个文件路径作为查看对象。例如,以下 操作将依次显示/etc/redhat-release、/proc/version 文件的内容,前者记录了 CnetOS 系 统的发行版本信息,后者记录了系统内核及开发环境、时间等信息。

[root@localhost ~]# cat /etc/redhat-release /proc/version 
CentOS Linux release 7.3.1611 (Core) 
Linux version 3.10.0-514.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 
4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016

命令:more 和 less 分页查看文件内容

使用 cat 命令可以非常简单地直接显示整个文件的内容,但是当文件中的内容较多时, 很可能只能看到最后一部分信息,文件前面的大部分内容都来不及看到。而 more 和 less 命令通过采用全屏的方式分页显示文件,便于我们从头到尾仔细地阅读文件内容。
more 命令是较早出现的分页显示命令,表示文件内容还有更多(more)的意思,less 命令是较晚出现的分页显示命令,提供了比早期 more 命令更多的一些扩展功能。两个命令 的用法基本相同。
使用 more 命令查看超过一屏的文件内容时,将进行分屏显示,并在左下角显示当前内 容在整个文件中的百分比。在阅读界面中,可以按 Enter 键向下逐行滚动查看,按 Space 键可以向下翻一屏,按 b 键向上翻一屏,按 q 键退出并返回原来的命令环境。例如,以下操 作将可以分屏查看/etc/httpd/ conf/httpd.conf(网站配置文件)文件的内容。

[root@localhost ~]# more /etc/httpd/conf/httpd.conf 
# 
# This is the main Apache HTTP server configuration file. It contains the 
# configuration directives that give the server its instructions. 
# See  for detailed information. 
# In particular, see 
#  
# for a discussion of each configuration directive. 
--more--(1%) 

more 命令除了可以分屏查看文件内容以外,还可以结合管道符号“|”分屏查看执行命 令时的输出信息,这在命令输出内容较多的情况下特别有用。例如,以下操作可以分页查看 /etc/目录下扩展名为“.conf”的配置文件。

[root@localhost ~]# ls -lh /etc/*.conf | more 
-rw-r--r--. 1 root root 55 11 月 5 00:29 /etc/asound.conf 
-rw-r--r--. 1 root root 14K 11 月 6 02:19 /etc/autofs.conf 
-rw-------. 1 root root 232 11 月 6 02:19 /etc/autofs_ldap_auth.conf 
-rw-r--r--. 1 root root 22K 11 月 6 01:31 /etc/brltty.conf 
 ...................//省略部分内容 
--more-- 

less 命令使用方法与 more 命令基本类似,但是比 more 更好的是,less 命令结合管道 符号“|”分屏查看执行命令时输出的信息时,既可以向下翻页,也可以向上翻页。而 more 命令只能向下翻页,不能向上翻页。

命令:head 和 tail 查看文件开头或末尾的部分内容

head 和 tail 是一对作用相反的命令,前者用于显示文件开头的一部分内容,后者用于 显示文件末尾的一部分内容。可以使用“-n”选项(n 为具体的行数)指定需要显示多少行 的内容,若不指定行数,默认只显示十行。 执行“head -4 /etc/passwd”命令,可以查看用户账号文件/etc/passwd 开头第一行至第 四行的部分内容。

[root@localhost ~]# head -4 /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
bin:x:1:1:bin:/bin:/sbin/nologin 
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
adm:x:3:4:adm:/var/adm:/sbin/nologin 

tail 命令则正好相反,用于查看文件末尾的内容。tail 命令通常用于查看系统日志(因为较新的日志记录总是添加到文件最后),以便观察网络访问、服务调试等相关信息。配合 “-f ”选项使用时,还可以跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化。例如,以下操作可以查看系统公共日志文件/var/log/messages 的最后十行内容,并在 末尾跟踪显示该文件中新记录的内容(按 Ctrl+C 组合键终止)。

[root@localhost ~]# tail -f /var/log/messages 
„„ //省略显示内容 
May 3 22:17:22 localhost PackageKit: uid 0 is trying to obtain org.freedesktop. 
packagekit.system-sources-refresh auth (only_trusted:0) 
May 3 22:17:22 localhost PackageKit: uid 0 obtained auth for org.freedesktop. 
packagekit.system-sources-refresh 
May 3 22:17:23 localhost kernel: TCP: lp registered 

统计和检索文件内容

命令:wc 统计文件内容中的单词数量(Word Count)、行数等信息

wc 命令用于统计文件内容中包含的行数、单词数量、字节数等信息,使用文件名作为 参数,可以同时统计多个文件。
常用选项:

-c:统计文件内容中的字节数。 
-l:统计文件内容中的行数。 
-w:统计文件内容中的单词个数(以空格或制表位作为分隔)。 

当文件的行数、单词数或字节数具有特定的意义时,使用 wc 命令可以巧妙地获得一些 特殊信息。例如,Linux 操作系统中的用户账号数据保存在/etc/passwd 文件中,其中每一 行记录对应一个用户,则以下操作可以统计出当前 Linux 操作系统中拥有的用户账号数量,具 体操作如下:

[root@localhost ~]# wc -l /etc/passwd 
46 /etc/passwd 

若将 wc 命令与管道符号一起使用,还可以对命令输出结果进行统计。例如,若要统计 /etc/目录下共包含多少个扩展名为“.conf”的文件,可以先通过“find /etc -name "*.conf"” 命令找出符合条件的文件位置,由于 find 命令的输出结果也是每行一个文件记录,因此只 需结合管道符号执行“wc -l”操作即可得出符合条件的文件数量,具体操作如下:

[root@localhost ~]# find /etc -name "*.conf" | wc -l 
432 

使用不带任何选项的 wc 命令时,默认将统计指定文件的字节数、行数、单词个数(相 当于同时使用“-c”“-l”“-w”三个选项)。例如,以下操作统计出/etc/hosts 文件中共包 含 2 行、10 个单词、158 字节的内容,然后通过“cat /etc/hosts”命令列出文件内容,可 核对统计结果是否正确。

[root@localhost ~]# wc /etc/hosts 
2 10 158 /etc/hosts 

命令:grep 检索、过滤文件内容

grep 命令用于在文件中查找并显示包含指定字符串的行,可以直接指定关键字符串作 为查找条件,也可以使用复杂的条件表达式(例如,“^word”表示以 word 开头,“word$” 表示以 word 结尾,“^$”表示空行)。

格式: grep [选项] 查找条件 目标文件

常用选项:

-i:查找内容时忽略大小写(Ignore Case)。 
-v:反转查找(Invert),即输出与查找条件不相符的行。

例如,执行“grep "ftp" /etc/passwd”命令,可以在账号文件/etc/passwd 中查找包 含“ftp”字符串的行,实际上输出了名为 ftp 的用户账号的信息,具体操作如下:

[root@localhost ~]# grep "ftp" /etc/passwd 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 

在维护 Linux 操作系统的过程中,经常会遇到包含大量内容的配置文件,而其中往往包 含了许多空行和以“ # ”开头的注释文字,当只需要分析其中的有效配置信息时,这些空行 和注释文字的存在不利于快速浏览。使用 grep 命令可以过滤掉这些无关信息。例如,以下 操作可以显示/etc/yum.conf 文件中以“#”开头的行和空行以外的内容。

[root@localhost ~]# grep -v "^#" /etc/yum.conf | grep -v "^$" 
[main] 
cachedir=/var/cache/yum/$basearch/$releasever 
keepcache=0 
debuglevel=2 
........................................//省略部分内容 

使用压缩工具备份与恢复文档

gzip 和 bzip2 是 Linux 操作系统中使用最多的两个压缩工具,这两个命令都可以压缩 指定的文件,或者将已经压缩过的文件进行解压。两者使用的压缩算法各不相同,但命令使 用格式基本类似,一般来说 bzip2 的压缩效率要好一些。

命令:gzip 和 gunzip 压缩和解压缩

使用 gzip 制作的压缩文件默认的扩展名为“.gz”。制作压缩文件时,使用“-9”选项 可以提高压缩的比率,但文件较大时会需要更多的时间。例如,以下操作将对当前目录下的 mkfile 文件进行压缩,生成压缩文件 mkfile.gz(原始文件 mkfile 不再保留),压缩后的文 件大小变为 30KB(未压缩时为 62KB)。

[root@localhost ~]# ls -lh mkfile* 
-rwxr-xr-x. 1 root root 62K May 4 01:32 mkfile 
[root@localhost ~]# gzip mkfile 
[root@localhost ~]# ls -lh mkfile* 
-rwxr-xr-x. 1 root root 30K May 4 01:32 mkfile.gz 

当需要解压缩经 gzip 压缩的文件时,只需使用带“-d”选项的 gzip 命令即可,或者直接使 用 gunzip 命令。例如,若将压缩文件 mkfile.gz 进行解压缩,可执行以下操作。

[root@localhost ~]# gzip -d mkfile.gz 
或
[root@localhost ~]# gunzip mkfile.gz 

命令:bzip2 和 bunzip2 压缩和解压缩

bzip2 和 bunzip2 命令的用法与 gzip、gunzip 命令基本相同,使用 bzip2 制作的压缩 文件默认的扩展名为“.bz2”。例如,以下操作将对当前目录下的 mkfile 文件以较高压缩比 进行压缩,生成压缩文件 mkfile.bz2(原始文件 mkfile 不再保留),压缩后的文件大小变 为 30KB(未压缩时为 62KB)。

[root@localhost ~]# ls -lh mkfile* 
-rwxr-xr-x. 1 root root 62K May 4 01:32 mkfile 
[root@localhost ~]# bzip2 -9 mkfile 
[root@localhost ~]# ls -lh mkfile* 
-rwxr-xr-x. 1 root root 30K May 4 01:32 mkfile.bz2 

与 gzip、gunzip 命令相同,当需要解压缩经 bzip2 压缩的文件时,只需使用带“-d”选 项的 bzip2 命令即可,或者直接使用 bunzip2 命令。例如,若要将压缩文件 mkfile.gz 进行 解压缩,可执行以下操作。

[root@localhost ~]# bzip2 -d mkfile.bz2 
或者
[root@localhost ~]# bunzip2 mkfile.bz2 

使用 tar 归档和释放工具

tar 命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也 会将包文件进行压缩(需要调用前面的 gzip 或 bzip2 命令),以节省磁盘空间。使用 tar 命令时,选项前的“-”号可以省略。常用的几个选项如下所述。

-c:创建(Create).tar 格式的包文件。 
-C:解压时指定释放的目标文件夹。 
-f:表示使用归档文件。 
-j:调用 bzip2 程序进行压缩或解压。 
-p:打包时保留文件及目录的权限。 
-P:打包时保留文件及目录的绝对路径。 
-t:列表查看包内的文件。 
-v:输出详细信息(Verbose)。 
-x:解开.tar 格式的包文件。 
-z:调用 gzip 程序进行压缩或解压。 

制作归档备份文件

基本格式:tar [选项] 归档及压缩文件名 需要归档的源文件或目录

如果需要对制作的归档文件进行压缩,可以通过“-z”或“-j”选项自动调用压缩工具(分别对应 gzip、bzip2 命令程序)进行压缩。例如,以下操作将会对/etc 和/boot 目录进行备份,在当前目录下生成名为 sysfile.tar.gz 的归档压缩包,执行过程中可以看到被归 档的文件列表信息。需要注意的是,在备份恢复目录或文件时,最好先将工作路径切换至目 标目录或文件的所在路径,然后在执行备份命令时使用相对路径,以防输入命令时因手误而导致根目录“/”下重要文件损坏。

[root@localhost ~]# cd / 
[root@localhost /]# tar zcvf sysfile.tar.gz etc boot 
etc/ 
etc/login.defs 
etc/cron.hourly/ 
etc/fstab 
„„ //省略部分内容 
[root@localhost /]# ls -lh sysfile.tar.gz 
-rw-r--r--. 1 root root 125M 4 月 10 11:46 sysfile.tar.gz 

若需要制作“.tar.bz2”格式的归档压缩包,则将“-z”选项改为“-j”选项使用即可。 例如,以下操作将会对/etc/passwd、/etc/shadow 文件进行备份,在/tmp 目录下生成名为 usershome.tar.bz2 的归档压缩包。

[root@localhost ~]# cd /etc 
[root@localhost etc]# tar jcvf /tmp/usershome.tar.bz2 passwd shadow 
etc/passwd 
etc/shadow 
[root@localhost etc]# ls -lh /tmp/usershome.tar.bz2 
-rw-r--r--. 1 root root 2.2K 4 月 10 11:50 /tmp/usershome.tar.bz2 

从归档文件中恢复数据

基本格式: tar [选项] 归档及压缩文件名 [-C 目标目录]

类似地,当从“.tar.gz”格式的归档压缩包恢复数据时,需要结合“-z”选项来自动 调用压缩工具,而对于“.tar.bz2”格式的归档压缩包,对应的是“-j”选项。默认情况 下,恢复的数据将释放到当前目录中,如果需要恢复到指定文件夹,还需要结合“-C”选项 来指定目标目录。例如,以下操作将从备份文件 usershome.tar.bz2 中恢复数据,释放到/etc 目录下(将覆盖现有文件)。

[root@localhost ~]# tar jxf /tmp/usershome.tar.bz2 -C /etc

在大部分的备份及恢复工作中,只使用 tar 命令就可以很好地结合 gzip、bzip2 工具协 同工作,无须再执行 gzip 或 bzip2 命令。但是要注意这两个压缩工具的命令程序必须存在。