1.2.3 Linux的基本命令

Linux操作系统的Shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

Shell是用户与Linux内核之间的接口程序,如果把Linux内核想象成球体的中心,Shell就是围绕内核的外层。当从Shell或其他程序向Linux传递命令时,内核会做出相应的反应。

1.Shell命令的基本格式

在Linux操作系统中看到的命令其实就是Shell命令,Shell命令的基本格式如下。


command [选项] [参数] 

(1)command为命令名称,例如,查看当前文件夹下文件或文件夹的命令是ls。

(2)[选项]表示可选项,是对命令的特别定义,以连接符“-”开始。多个选项可以用一个连接符“-”连接起来,例如,ls -l -a与ls -la的作用是相同的。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参数。

ls是常用的一个命令,它属于目录操作命令,用来列出当前目录下的文件和文件夹。ls命令后可以加选项,也可以不加选项,不加选项的写法如下。


[root@localhost ~]# ls 
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面 
[root@localhost ~]# 

ls命令之后不加选项和参数也能执行,但只能执行最基本的功能,即显示当前目录下的文件名。那么,ls命令之后加入一个选项后,会出现什么结果?


[root@localhost ~]# ls  -l 
总用量 8 
-rw-------. 1 root root 1647 6月   8 01:27 anaconda-ks.cfg 
-rw-r--r--. 1 root root 1695 6月   8 01:30 initial-setup-ks.cfg 
drwxr-xr-x. 2 root root    6 6月   8 01:41 公共 
…… 
drwxr-xr-x. 2 root root   40 6月   8 01:41 桌面 
[root@localhost ~]# 

如果加-l选项,则可以看到显示的内容明显增多了。-l是长格式(long list)的意思,即显示文件的详细信息。

可以看到,选项的作用是调整命令的功能。如果没有选项,那么命令只能执行最基本的功能;而一旦有选项,就能执行更多功能,或者显示更加丰富的数据。

Linux的选项又分为短格式选项和长格式选项两类。

短格式选项是长格式选项的简写,用一个“-”和一个字母表示,如ls -l。

长格式选项是完整的英文单词,用两个“-”和一个单词表示,如ls --all。

一般情况下,短格式选项就是长格式选项的缩写,即一个短格式选项会有对应的长格式选项。当然也有例外,例如,ls命令的短格式选项-l就没有对应的长格式选项,所以具体的命令选项需要通过帮助手册来查询。

(3)[参数]为跟在可选项后的参数,或者是command的参数。参数可以是文件,也可以是目录,可以没有,也可以有多个。有些命令必须使用多个参数,例如,cp命令必须指定源操作对象和目标对象。

(4)command [选项] [参数]等项目之间以空格隔开,无论有几个空格,Shell都视其为一个空格。

2.输入命令时键盘操作的一般规律

(1)命令名、文件名、参数等都要区分英文大小写,例如,md与MD是不同的。

(2)命令名、选项、参数之间必须有一个或多个空格。

(3)命令太长时,可以使用“\”符号来转义Enter符号,以实现一条命令跨多行。


[root@localhost ~]# hostnamectl set-hostname  \     //输入“\”符号来转义Enter符号 
> test1                                              //输入主机名为test1 
[root@localhost ~]# bash                            //bash执行命令 
[root@test1 ~]# 

(4)按“Enter”键以后,该命令才会被执行。

3.配置显示系统的常用命令

(1)使用cat命令查看Linux内核版本,执行命令如下。


[root@localhost ~]# cat  /proc/version 
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc 
version 1.8.5 20150623 (Red Hat 1.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018 
[root@localhost ~]# 
[root@localhost ~]# cat  /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)  
[root@localhost ~]# 

cat命令的作用是连接文件或标准输入并输出。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,常与重定向符号配合使用。其命令格式如下。


cat [选项]  文件名 

cat命令各选项及其功能说明如表1.1所示。

表1.1 cat命令各选项及其功能说明

使用cat命令显示文件内容时,执行命令如下。


[root@localhost ~]# dir              
a1-test01.txt     history.txt             mkfs.ext2   mkrfc2734  公共   图片 音乐 
anaconda-ks.cfg   initial-setup-ks.cfg    mkfs.msdos  mnt        模板   文档 桌面 
font.map         mkfontdir                  mkinitrd      user01     视频    下载 
[root@localhost ~]# cat  a1-test01.txt       //显示a1-test01.txt文件的内容 
aaaaaaaaaaaaaa 
bbbbbbbbbbbbbb 
cccccccccccccccc 
[root@localhost ~]# cat  -nE  a1-test01.txt   /*显示a1-test01.txt文件的内容,对输
出的所有行编号,由1开始对所有输出的行进行编号,在每行结束处显示$*/ 
     1  aaaaaaaaaaaaaa$ 
     2  bbbbbbbbbbbbbb$ 
     3  cccccccccccccccc$ 
[root@localhost ~]# 

(2)使用tac命令反向显示文件内容。

tac命令与cat命令的作用相反,只适用于显示内容较少的文件。其命令格式如下。


tac [选项]  文件名 

tac命令各选项及其功能说明如表1.2所示。

表1.2 tac命令各选项及其功能说明

使用tac命令来反向显示文件内容时,执行命令如下。


[root@localhost ~]# tac   -r   a1-test01.txt  
cccccccccccccccc 
bbbbbbbbbbbbbb 
aaaaaaaaaaaaaa 
[root@localhost ~]# 

(3)使用head命令查看文件的若干行。

head命令用来查看具体文件的前几行的内容,默认情况下显示文件前10行的内容。其命令格式如下。


head  [选项]  文件名

head命令各选项及其功能说明如表1.3所示。

表1.3 head命令各选项及其功能说明

使用head命令来查看具体文件的前几行的内容时,执行以下命令。


[root@localhost ~]# head  -n5  -v  /etc/passwd
==> /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 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 
[root@localhost ~]# 

(4)使用tail命令查看文件的最后若干行。

tail命令用来查看具体文件的最后几行的内容,默认情况下显示文件最后10行的内容,可以使用tail命令来查看日志文件被更改的过程。其命令格式如下。


tail  [选项]  文件名 

tail命令各选项及其功能说明如表1.4所示。

表1.4 tail命令各选项及其功能说明

使用tail命令来查看具体文件的最后几行的内容时,执行以下命令。


[root@localhost ~]# tail  -n5  -v  /etc/passwd 
==> /etc/passwd <== 
postfix:x:89:89::/var/spool/postfix:/sbin/nologin 
tcpdump:x:72:72::/:/sbin/nologin 
csg:x:1000:1000:root:/home/csg:/bin/bash 
user01:x:1001:1001:user01:/home/user01:/bin/bash 
user0:x:1002:1002:user01:/home/user0:/bin/bash 
[root@localhost ~]# 

(5)使用echo命令将显示内容输出到屏幕上。

echo命令非常简单,如果命令的输出内容没有特殊含义,则原内容输出到屏幕上;如果命令的输出内容有特殊含义,则输出其含义。其命令格式如下。


echo  [选项] [输出内容] 

echo命令各选项及其功能说明如表1.5所示。

表1.5 echo命令各选项及其功能说明

在echo命令中,如果使用了-n选项,则表示输出文字后不换行。字符串可以加引号,也可以不加引号。使用echo命令输出加引号的字符串时,将字符串原样输出;使用echo命令输出不加引号的字符串时,字符串中的各个单词作为字符串输出,各字符串之间用一个空格分隔。

如果使用了-e选项,则可以支持控制字符,会对其进行特别处理,而不会将它当作一般文字输出。控制字符如表1.6所示。

表1.6 控制字符

使用echo命令输出相关内容到屏幕上,执行以下命令。


[root@localhost ~]# echo  -en  "hello welcome\n"    //换行输出 
hello welcome 
[root@localhost ~]# echo  -en  "1 2 3\n"            //换行输出 
1 2 3 
[root@localhost ~]# echo  -en  "1\n2\n3\n"          //每个字符都换行输出 
1 
2 
3 
[root@localhost ~]# echo  -n  aaa                   //字符串不加引号,不换行输出 
aaa[root@localhost ~]# echo  -n  123    
123[root@localhost ~]# 

echo命令也可以把显示内容输入文件中,命令如下。


[root@localhost ~]# echo  "hello everyone welcome to here"  >  welcome.txt 
                                                                 //写入或替换 
[root@localhost ~]# echo  "hello everyone"  >>  welcome.txt     //追加写入 
[root@localhost ~]# cat  welcome.txt  
hello everyone welcome to here 
hello everyone 
[root@localhost ~]# 

(6)shutdown命令可以安全地关闭或重启Linux操作系统,它会在系统关闭之前给系统中的所有登录用户发送一条警告信息。

该命令还允许用户指定一个时间参数,用于指定什么时间关闭,时间参数可以是一个精确的时间,也可以是从现在开始的一个时间段。

精确时间的格式是hh:mm,表示小时和分钟,时间段由小时和分钟表示。系统执行该命令后会自动进行数据同步的工作。

该命令的一般格式如下。


shutdown [选项] [时间] [警告信息] 

shutdown命令各选项及其功能说明如表1.7所示。

表1.7 shutdown命令各选项及其功能说明

需要特别说明的是,该命令只能由root用户使用。

halt是较简单的关机命令,其实际上是调用shutdown -h命令。halt命令执行时,会结束应用进程,文件系统写操作完成后会停止内核。


[root@localhost ~]# shutdown  -h  now                 //立刻关闭系统 

reboot命令的工作过程与halt命令的工作过程类似,其作用是重启系统,而halt是关机。其参数也与halt的参数类似,reboot命令重启系统时是删除所有进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但当还有其他用户在该系统中工作时,会引起数据的丢失,所以使用reboot命令的场合主要是单用户模式,执行命令如下。


[root@localhost ~]# reboot                          //立刻重启系统 
[root@localhost ~]# shutdown  -r  00:05             //5 min 后重启系统 
[root@localhost ~]# shutdown  -c                    //取消shutdown操作 

exit命令用于退出终端窗口,执行命令如下。


[root@localhost ~]# exit                             //退出终端窗口

(7)whoami命令用于显示当前操作用户的用户名,执行命令如下。


[root@localhost ~]# whoami 
root 
[root@localhost ~]#

(8)hostnamectl命令用于设置当前系统的主机名,执行命令如下。


[root@localhost ~]# hostnamectl  set-hostname  test1  //设置当前系统的主机名为test1 
[root@localhost ~]# bash                              //执行命令         
[root@test1 ~]#   
[root@test1 ~]# hostname                              //查看当前主机名       
test1 
[root@test1 ~]# 

(9)date命令用于显示当前时间/日期,执行命令如下。


[root@localhost ~]# date 
2022年 05月 10日 星期二 19:13:05 CST 
[root@localhost ~]# 

(10)cal命令用于显示日历信息,执行命令如下。


[root@localhost ~]# cal  
      五月 2022      
日  一   二   三   四   五  六 
1   2   3    4    5   6   7 
8   9   10   11   12  13  14 
15  16  17   18   19  20  21 
22  23  24   25   26  27  28 
29  30  31 
[root@localhost ~]# 

(11)clear命令相当于磁盘操作系统(Disk Operating System,DOS)下的cls命令,用于清空当前终端窗口中的已有内容,执行命令如下。


[root@localhost ~]# clear 
[root@localhost ~]# 

(12)history命令可以用来显示和编辑历史命令。要想显示最近5个历史命令,可执行命令如下。


[root@localhost ~]# history  5 
   14  uname  -a 
   15  whoami 
   16  date 
   17  cal  
   18  history  5 
[root@localhost ~]#

(13)使用pwd命令显示当前工作目录,执行命令如下。


[root@localhost ~]# pwd 
/root 
[root@localhost ~]#

(14)使用cd命令改变当前工作目录,方法如下。

V1-3 文件和目录常用命令

cd是change directory(改变目录)的缩写,用于改变当前工作目录。其命令格式如下。


cd [绝对路径或相对路径]

路径是目录或文件在系统中的存放位置,如果想要编辑ifcfg-ens33文件,则先要知道此文件的所在位置,此时就需要用路径来表示。

路径是由目录和文件名构成的,例如,/etc是一个路径,/etc/sysconfig是一个路径,/etc/sysconfig/network-scripts/ifcfg-ens33也是一个路径。

路径的分类如下。

①绝对路径:从根目录(/)开始的路径,如/usr、/usr/local/、/usr/local/etc等是绝对路径,它指向系统中的绝对位置。

②相对路径:路径不是由“/”开始的,相对路径的起点为当前目录,如果现在位于/usr目录,那么相对路径local/etc所指示的位置为/usr/local/etc。也就是说,相对路径所指示的位置,除了相对路径本身之外,还受到当前位置的影响。

Linux操作系统中常见的目录有/bin、/usr/bin、/usr/local/bin。如果只有一个相对路径bin,那么它指示的位置可能是这3个目录中的任意一个,也可能是其他目录。特殊符号表示的目录如表1.8所示。

表1.8 特殊符号表示的目录

如果只输入cd,未指定目标目录名,则返回当前用户的主目录,等同于cd~。一般用户的主目录默认在/root下,如root用户的默认主目录为/root。为了能够进入指定的目录,用户必须拥有对指定目录的执行和读权限。

以root身份登录到系统中,进行目录切换等操作,执行命令如下。


[root@localhost ~]# pwd                     //显示当前工作目录 
/root 
[root@localhost ~]# cd  /etc                //以绝对路径进入etc目录 
[root@localhost etc]# cd yum.repos.d         //以相对路径进入yum.repos.d目录 
[root@localhost yum.repos.d]# pwd             
/etc/yum.repos.d 
[root@localhost yum.repos.d]# cd .           //当前目录 
[root@localhost yum.repos.d]# cd ..          //上级目录 
[root@localhost etc]# pwd                  
/etc 
[root@localhost etc]# cd ~                  //当前登录用户的主目录               
[root@localhost ~]# pwd 
/root 
[root@localhost ~]# cd -                    //上次所在的目录 
/etc 
[root@localhost etc]# 

(15)使用ls命令显示目录或文件,方法如下。

ls是list的缩写,不加参数时,ls命令用来显示当前目录清单,是Linux中最常用的命令之一。通过ls命令不仅可以查看Linux文件夹包含的文件,还可以查看文件及目录的权限、目录信息等。其命令格式如下。


ls  [选项]  目录或文件名

ls命令各选项及其功能说明如表1.9所示。

表1.9 ls命令各选项及其功能说明

使用ls命令进行目录或文件的相关操作,执行命令如下。

①显示所有文件,包括隐藏文件,如“.”“..”等。


[root@localhost ~]# ls  -a 
.                 .bash_profile  .esd_auth             mkfontdir   .tcshrc   文档 
..                .bashrc        font.map              mkfs.ext2  .Viminfo  下载 
aa.txt            .cache         history.txt           mkfs.msdos  公共      音乐 
anaconda-ks.cfg   .config        .ICEauthority         mkinitrd     模板      桌面 
…… 
[root@localhost ~]# 

②长格式输出,包含文件属性,可显示详细信息。


[root@localhost ~]# ls   -l
总用量 16 
-rw-r--r--. 1 root root   85 6月  25 14:04 aa.txt 
-rw-------. 1 root root 1647 6月   8 01:27 anaconda-ks.cfg 
-rw-r--r--. 1 root root    0 6月  20 22:37 font.map 
…… 
[root@localhost ~]#

(16)使用touch命令创建文件或修改文件,方法如下。

V1-4 文件及目录操作类命令

touch命令可被用来创建文件或修改文件的存取时间,如果指定的文件不存在,则会生成一个空文件。其命令格式如下。


touch  [选项]  目录或文件名 

touch命令各选项及其功能说明如表1.10所示。

表1.10 touch命令各选项及其功能说明

使用touch命令创建一个或多个文件时,执行以下命令。


[root@localhost ~]# cd  /mnt                                 //切换目录 
[root@localhost mnt]# touch  file01.txt                      //创建一个文件 
[root@localhost mnt]# touch  file0{2..4}.txt                 //创建多个文件 
[root@localhost mnt]# touch  *        //把当前目录下所有文件的存取/修改时间修改为当前时间  
[root@localhost mnt]# ls  -l                                 //查看修改结果 
总用量 0 
-rw-r--r--. 1 root root 0 5月  10 19:35 file01.txt 
-rw-r--r--. 1 root root 0 5月  10 19:35 file02.txt 
-rw-r--r--. 1 root root 0 5月  10 19:35 file03.txt 
-rw-r--r--. 1 root root 0 5月  10 19:35 file04.txt  
[root@localhost mnt]#

使用touch命令把目录/mnt下的所有文件的存取/修改时间修改为2022年6月26日,执行以下命令。


[root@localhost mnt]# touch  -d  20220626  /mnt/* 
[root@localhost mnt]# ls  -l 
总用量 0 
-rw-r--r--. 1 root root 0 6月  26 2022 file01.txt 
-rw-r--r--. 1 root root 0 6月  26 2022 file02.txt 
-rw-r--r--. 1 root root 0 6月  26 2022 file03.txt 
-rw-r--r--. 1 root root 0 6月  26 2022 file04.txt  
[root@localhost mnt]# 

(17)使用mkdir命令创建新目录,方法如下。

mkdir命令用于创建指定的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录不能是当前目录中已有的目录,但目录可以是绝对路径,也可以是相对路径。其命令格式如下。


mkdir [选项]  目录名

mkdir命令各选项及其功能说明如表1.11所示。

表1.11 mkdir命令各选项及其功能说明

使用mkdir命令创建新目录时,执行命令如下。


[root@localhost mnt]# mkdir  user01               //创建新目录user01 
[root@localhost mnt]# ls  -l 
总用量 0 
-rw-r--r--. 1 root root 0 6月  26 2020 file01.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file02.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file03.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file01.txt 
drwxr-xr-x. 2 root root 6 5月  10 19:38 user01  
[root@localhost mnt]# mkdir  -v  user02           //创建新目录user02 
mkdir: 已创建目录 "user02"   
[root@localhost mnt]# ls  -l 
总用量 0 
-rw-r--r--. 1 root root 0 6月  26 2020 file01.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file02.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file03.txt 
-rw-r--r--. 1 root root 0 6月  26 2020 file04.txt 
drwxr-xr-x. 2 root root 6 5月  10 19:38 user01 
drwxr-xr-x. 2 root root 6 5月  10 19:40 user02  
[root@localhost mnt]# mkdir  -p  /mnt/user03/a01  /mnt/user03/a02 
                           //在user03目录下,同时创建目录a01和目录a02 
[root@localhost mnt]# ls  -l  /mnt/user03 
总用量 0 
drwxr-xr-x. 2 root root 6 5月  10 19:41 a01 
drwxr-xr-x. 2 root root 6 5月  10 19:41 a02  
[root@localhost mnt]# 

(18)使用rmdir命令删除目录,方法如下。

rmdir是常用的命令,该命令的功能是删除空目录。一个目录被删除之前必须是空的,删除某目录时必须具有对其父目录的写权限。其命令格式如下。


rmdir  [选项]  目录名

rmdir命令各选项及其功能说明如表1.12所示。

表1.12 rmdir命令各选项及其功能说明

使用rmdir命令删除目录时,执行命令如下。


[root@localhost mnt]# rmdir  -v  /mnt/user03/a01 
rmdir: 正在删除目录 "/mnt/user03/a01" 
[root@localhost mnt]# ls  -l  /mnt/user03 
总用量 0 
drwxr-xr-x. 2 root root 6 5月  10 19:41 a02  
[root@localhost mnt]# 

(19)使用rm命令删除文件或目录,方法如下。

rm既可以删除一个目录中的一个文件或多个文件或目录,又可以将某个目录及其下的所有文件及子目录都删除,功能非常强大。其命令格式如下。


rm [选项]  目录或文件名

rm命令各选项及其功能说明如表1.13所示。

表1.13 rm命令各选项及其功能说明

使用rm命令删除文件或目录时,执行命令如下。


[root@localhost ~]# ls  -l   /mnt              //显示目录下的信息 
总用量 0 
-rw-r--r--. 1 root root  0 6月  26 2022 file01.txt 
-rw-r--r--. 1 root root  0 6月  26 2022 file02.txt 
-rw-r--r--. 1 root root  0 6月  26 2022 file03.txt 
-rw-r--r--. 1 root root  0 6月  26 2022 file04.txt 
drwxr-xr-x. 2 root root  6 5月  10 19:38 user01 
drwxr-xr-x. 2 root root  6 5月  10 19:40 user02 
drwxr-xr-x. 3 root root 17 5月  10 19:44 user03  
[root@localhost ~]# rm  -r  -f  /mnt/*        //强制删除目录下的所有文件和目录 
[root@localhost /]# ls  -l  /mnt               //显示目录下的信息 
总用量 0 
[root@localhost /]#

(20)使用cp命令复制文件或目录。方法如下。

要将一个文件或目录复制到另一个文件或目录下,可以使用cp命令。该命令的功能非常强大,参数也很多。除了单纯的复制之外,该命令还可以建立连接文件,复制整个目录,在复制的同时可以对文件进行改名操作等,这里仅介绍其常用的几个选项。其命令格式如下。


cp  [选项]  源目录或文件名  目标目录或文件名

cp命令各选项及其功能说明如表1.14所示。

表1.14 cp命令各选项及其功能说明

续表

使用cp命令复制文件或目录时,执行命令如下。


[root@localhost ~]# cd  /mnt 
[root@localhost mnt]# touch  a0{1..3}.txt 
[root@localhost mnt]# mkdir  user0{1..3} 
[root@localhost mnt]# dir 
a01.txt  a02.txt  a03.txt  user01  user02  user03 
[root@localhost mnt]# ls  -l 
总用量 0 
-rw-r--r--. 1 root root 0 5月  10 19:49 a01.txt 
-rw-r--r--. 1 root root 0 5月  10 19:49 a02.txt 
-rw-r--r--. 1 root root 0 5月  10 19:49 a03.txt 
drwxr-xr-x. 2 root root 6 5月  10 19:49 user01 
drwxr-xr-x. 2 root root 6 5月  10 19:49 user02 
drwxr-xr-x. 2 root root 6 5月  10 19:49 user03 
[root@localhost mnt]# cd  ~ 
[root@localhost ~]# cp  -r  /mnt/a01.txt  /mnt/user01/ 
[root@localhost ~]# ls  -l  /mnt/user01 
总用量 0 
-rw-r--r--. 1 root root 0 5月  10 19:51 a01.txt 
[root@localhost ~]#

(21)使用mv命令移动文件或目录,方法如下。

使用mv命令可以为文件或目录重命名,或将文件由一个目录移入另一个目录。如果在同一目录下移动文件或目录,则该操作可理解为给文件或目录重命名。其命令格式如下。


mv  [选项]  源目录或文件名  目标目录或文件名

mv命令各选项及其功能说明如表1.15所示。

表1.15 mv命令各选项及其功能说明

使用mv命令移动文件或目录时,执行命令如下。


[root@localhost ~]# ls  -l  /mnt                     //显示/mnt目录的信息 
总用量 0 
-rw-r--r--. 1 root root   0 6月  25 20:27 a01.txt
-rw-r--r--. 1 root root   0 6月  25 20:27 a02.txt 
-rw-r--r--. 1 root root   0 6月  25 20:27 a03.txt 
drwxr-xr-x. 2 root root  24 6月  25 20:29 user01 
drwxr-xr-x. 2 root root  24 6月  25 20:30 user02 
drwxr-xr-x. 6 root root 104 6月  25 20:37 user03 
[root@localhost ~]# mv  -f  /mnt/a01.txt   /mnt/test01.txt    
//将a01.txt重命名为test01.txt 
[root@localhost ~]# ls  -l  /mnt                             //显示/mnt目录的信息 
总用量 0 
-rw-r--r--. 1 root root   0 6月  25 20:27 a02.txt 
-rw-r--r--. 1 root root   0 6月  25 20:27 a03.txt 
-rw-r--r--. 1 root root   0 6月  25 20:27 test01.txt 
drwxr-xr-x. 2 root root  24 6月  25 20:29 user01 
drwxr-xr-x. 2 root root  24 6月  25 20:30 user02 
drwxr-xr-x. 6 root root 104 6月  25 20:37 user03 
[root@localhost ~]# 

(22)使用tar命令打包、归档文件或目录,方法如下。

使用tar命令可以把整个目录的内容归并为一个单一的文件,许多用于Linux操作系统的程序就打包成了TAR文件的形式。tar命令是Linux中最常用的备份命令之一。

tar命令可用于建立、还原、查看、管理文件,也可以追加新文件到备份文件中,或仅更新部分备份文件,以及解压、删除指定的文件。这里仅介绍几个常用的选项,以便于日常的系统管理工作。其命令格式如下。


tar  [选项]  文件目录列表

tar命令各选项及其功能说明如表1.16所示。

表1.16 tar命令各选项及其功能说明

①将/mnt目录打包为一个文件test01.tar,将其压缩为文件test01.tar.gz,并存放在/root/user01目录下作为备份,执行命令如下。


[root@localhost ~]# rm  -rf  /mnt/*              //删除/mnt目录下的所有目录或文件        
[root@localhost ~]# ls  -l  /mnt 
总用量 0 
[root@localhost ~]# touch  /mnt/a0{1..2}.txt     //新建两个文件 
[root@localhost ~]# mkdir  /mnt/test0{1..2}      //新建两个目录 
[root@localhost ~]# ls  -l  /mnt 
总用量 0 
-rw-r--r--. 1 root root 0 6月  25 22:32 a01.txt
-rw-r--r--. 1 root root 0 6月  25 22:32 a02.txt 
drwxr-xr-x. 2 root root 6 6月  25 22:46 test01 
drwxr-xr-x. 2 root root 6 6月  25 22:46 test02 
[root@localhost ~]# mkdir  /root/user01            //新建目录            
[root@localhost ~]# tar  -cvf  /root/user01/test01.tar  /mnt   
                         //将/mnt下的所有文件打包为文件test01.tar 
tar: 从成员名中删除开头的“/” 
/mnt/ 
/mnt/a01.txt 
/mnt/a02.txt 
/mnt/test01 
/mnt/test02 
[root@localhost ~]# ls  /root/user01 
test01.tar 
[root@localhost ~]# 

②在/root/user01目录下生成压缩文件test01.tar,使用gzip命令可对单个文件进行压缩,此时,原归档文件test01.tar就不存在了,并生成压缩文件test01.tar.gz,执行命令如下。


[root@localhost ~]# gzip  /root/user01/test01.tar 
[root@localhost ~]# ls  -l  /root/user01 
总用量 8 
-rw-r--r--. 1 root root 190 6月  25 22:36 test01.tar.gz 
[root@localhost ~]# 

③在/root/user01目录下生成压缩文件test01.tar.gz,可以一次完成归档和压缩,把两步合并为一步,执行命令如下。


[root@localhost ~]# tar  -zcvf   /root/user01/test01.tar.gz   /mnt 
tar: 从成员名中删除开头的“/” 
/mnt/ 
/mnt/a01.txt 
/mnt/a02.txt 
/mnt/test01 
/mnt/test02 
[root@localhost ~]# ls  -l  /root/user01 
总用量 16 
-rw-r--r--. 1 root root 10240 6月  25 22:36 test01.tar.gz 
[root@localhost ~]# 

④对文件test01.tar.gz进行解压缩,执行命令如下。


[root@localhost ~]# cd  /root/user01 
[root@localhost user01]# ls  -l 
总用量 4 
4 -rw-r--r--. 1 root root 175 6月  25 23:13 test01.tar.gz 
[root@localhost user01]# gzip  -d  test01.tar.gz 
[root@localhost user01]# tar  -xf  test01.tar 

也可以一次完成解压缩操作,把两步合并为一步,执行命令如下。


[root@localhost user01]# tar  -zxf  test01.tar.gz 
[root@localhost user01]# ls  -l 
总用量 4 
drwxr-xr-x. 4 root root  64 6月  25 23:13 mnt 
-rw-r--r--. 1 root root 175 6月  25 23:13 test01.tar.gz 
[root@localhost user01]# cd  mnt 
[root@localhost mnt]# ls  -l 
总用量 0 
-rw-r--r--. 1 root root 0 6月  25 23:12 a01.txt 
-rw-r--r--. 1 root root 0 6月  25 23:12 a02.txt 
drwxr-xr-x. 2 root root 6 6月  25 23:13 test01 
drwxr-xr-x. 2 root root 6 6月  25 23:13 test02 
[root@localhost mnt]# 

可查看用户目录下的文件列表,检查执行的情况,-f之后的文件名是由用户自己定义的,通常应命名为便于识别的名称,并加上相对应的压缩名称,如xxx.tar.gz。在前面的实例中,如果加上-z选项,则调用gzip进行压缩,通常以.tar.gz来代表gzip压缩过的TAR文件。注意,在压缩时自身不能处于要压缩的目录及子目录内。

(23)使用whereis命令查找文件位置,方法如下。

whereis命令用于查找可执行文件、源代码文件、帮助文件等在文件系统中的位置。其命令格式如下。


whereis  [选项]  文件名

whereis命令各选项及其功能说明如表1.17所示。

表1.17 whereis命令各选项及其功能说明

使用whereis命令查找文件位置时,执行以下命令。


[root@localhost ~]# whereis  passwd 
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.1.gz /usr/share/ 
man/man1/passwd.1.gz 
[root@localhost ~]#

(24)使用locate命令查找绝对路径中包含指定字符串的文件的位置,方法如下。

locate命令用于查找文件或目录的位置。其命令格式如下。


locate  [选项]  文件名 

locate命令各选项及其功能说明如表1.18所示。

表1.18 locate命令各选项及其功能说明

续表

使用locate命令查找文件位置时,执行命令如下。


[root@localhost ~]# locate  passwd 
/etc/passwd 
/etc/passwd- 
/etc/pam.d/passwd 
/etc/security/opasswd 
/usr/bin/gpasswd 
…… 
[root@localhost ~]# locate  -c  passwd             //只输出找到的数量 
153 
[root@localhost ~]# locate  firefox  |  grep rpm   //查找firefox文件的位置 
/var/cache/yum/x86_64/7/updates/packages/firefox-68.11.0-1.el7.CentOS.x86_61.rpm 

(25)使用find命令查找文件,方法如下。

find命令用于查找文件,功能非常强大。对于文件和目录的一些比较复杂的搜索操作,都可以灵活应用基本的通配符和搜索命令find来实现,即可以在某一目录及其所有的子目录中快速搜索具有某些特征的目录或文件。其命令格式如下。


find  [路径]  [匹配表达式]  [-exec command]

find命令各匹配表达式及其功能说明如表1.19所示。

表1.19 find命令各匹配表达式及其功能说明

使用find命令查找文件时,执行命令如下。


[root@localhost ~]# find  /etc  -name  passwd 
/etc/pam.d/passwd 
/etc/passwd  
[root@localhost ~]# find  /  -name  "firefox*.rpm" 
/var/cache/yum/x86_64/7/updates/packages/firefox-68.11.0-1.el7.CentOS.x86_61.rpm 
[root@localhost ~]# 
[root@localhost ~]# find  /etc  -type  f  -exec  ls  -l  {}  \;   
-rw-r--r--. 1 root root 465 6月   8 01:15 /etc/fstab 
-rw-------. 1 root root 0 6月   8 01:15 /etc/crypttab 
-rw-r--r--. 1 root root 49 6月  26 09:38 /etc/resolv.conf 
…… 
[root@localhost ~]# 

(26)使用which命令确定文件的具体位置,方法如下。

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录,which命令会在环境变量PATH设置的目录中查找符合条件的文件。也就是说,使用which命令可以看到某个系统命令是否存在,以及执行的命令的位置。其命令格式如下。


which  [选项]  [--]  COMMAND

which命令各选项及其功能说明如表1.20所示。

表1.20 which命令各选项及其功能说明

使用which命令查找文件位置时,执行命令如下。


[root@localhost ~]# which  find 
/usr/bin/find 
[root@localhost ~]# which  --show-tilde  pwd 
/usr/bin/pwd 
[root@localhost ~]# which  --version  bash 
GNU which v2.20, Copyright (C) 1999 - 2008 Carlo Wood. 
GNU which comes with ABSOLUTELY NO WARRANTY; 
This program is free software; your freedom to use, change 
and distribute this program is protected by the GPL. 
[root@localhost ~]#

(27)使用grep命令查找文件中包含指定字符串的行,方法如下。

grep是一个强大的文本搜索命令,它能使用正则表达式搜索文本,并把匹配的行输出。在grep命令中,字符“^”表示行的开始,字符“$”表示行的结束,如果要查找的字符串中带有空格,则可以用单引号或双引号将其标注出来。其命令格式如下。


grep  [选项]  [正则表达式]  文件名

grep命令各选项及其功能说明如表1.21所示。

表1.21 grep命令各选项及其功能说明

使用grep命令查找文件时,执行以下命令。


[root@localhost ~]# grep  "root"  /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
operator:x:11:0:operator:/root:/sbin/nologin 
csg:x:1000:1000:root:/home/csg:/bin/bash 
[root@localhost ~]# grep  -il  "root"   /etc/passwd 
/etc/passwd 
[root@localhost ~]# 

grep与find命令的差别在于,grep是在文件中搜索满足条件的行,而find是在指定目录下根据文件的相关信息查找满足指定条件的文件。

(28)使用sort命令对文本文件内容进行排序,方法如下。

其命令格式如下。


sort  [选项]  文件名

sort命令各选项及其功能说明如表1.22所示。

表1.22 sort命令各选项及其功能说明

使用sort命令时,可针对文本文件的内容,以行为单位来进行排序,执行命令如下。


[root@localhost ~]# cat  testfile01.txt    //查看testfile01.txt文件的内容 
test 10 
open 20 
hello 30 
welcome 40 
[root@localhost ~]# sort  testfile01.txt   //对testfile01.txt文件的内容进行排序 
hello 30 
open 20 
test 10 
welcome 40 
[root@localhost ~]# 

sort命令将以默认的方式使文本文件的第一列以ASCII的次序排列,并将结果输出到标准输出。