1.touch命令
touch命令用于创建空白文件或设置文件的时间,语法格式为“touch [参数] 文件名称”。
在创建空白的文本文件方面,这个touch命令相当简洁,简捷到没有必要铺开去讲。比如,touch linuxprobe命令可以创建出一个名为linuxprobe的空白文本文件。对touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间(Mtime)、文件权限或属性的更改时间(Ctime)与文件的访问时间(Atime)上面。touch命令的参数及其作用如表2-17所示。
表2-17 touch命令中的参数及其作用
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
接下来,先使用ls命令查看一个文件的修改时间,随后修改这个文件,最后再查看一下文件的修改时间,看是否发生了变化:
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg
[root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg
如果不想让别人知道我们修改了它,那么这时就可以用touch命令把修改后的文件时间设置成修改之前的时间(很多黑客就是这样做的呢):
[root@linuxprobe ~]# touch -d "2020-05-04 15:44" anaconda-ks.cfg
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg
2.mkdir命令
mkdir命令用于创建空白的目录,英文全称为“make directory”,语法格式为“mkdir [参数] 目录名称”。
除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套层叠关系的文件目录:
[root@linuxprobe ~]# mkdir linuxprobe
[root@linuxprobe ~]# cd linuxprobe
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e
[root@linuxprobe linuxprobe]# cd a
[root@linuxprobe a]# cd b
[root@linuxprobe b]#
3.cp命令
cp命令用于复制文件或目录,英文全称为“copy”,语法格式为“cp [参数] 源文件名称 目标文件名称”。
大家对文件复制操作应该不陌生,几乎每天都会使用到。在Linux系统中,复制操作具体分为3种情况:
如果目标文件是目录,则会把源文件复制到该目录中; 如果目标文件也是普通文件,则会询问是否要覆盖它; 如果目标文件不存在,则执行正常的复制操作。
复制命令基本不会出错,唯一需要记住的就是在复制目录时要加上-r参数。cp命令的参数及其作用如表2-18所示。
表2-18 cp命令中的参数及其作用
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
接下来,使用touch命令创建一个名为install.log的普通空白文件,然后将其复制为一份名为x.log的备份文件,最后再使用ls命令查看目录中的文件:
[root@linuxprobe ~]# touch install.log
[root@linuxprobe ~]# cp install.log x.log
[root@linuxprobe ~]# ls
install.log x.log
4.mv命令
mv命令用于剪切或重命名文件,英文全称为“move”,语法格式为“mv [参数] 源文件名称 目标文件名称”。
剪切操作不同于复制操作,因为它默认会把源文件删除,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实也就是对该文件进行了重命名操作:
[root@linuxprobe ~]# mv x.log linux.log
[root@linuxprobe ~]# ls
install.log linux.log
5.rm命令
rm命令用于删除文件或目录,英文全称为“remove”,语法格式为“rm [参数] 文件 名称”。
在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,要想删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉。rm命令的参数及其作用如表2-19所示。
表2-19 rm命令中的参数及其作用
参数 | 作用 |
---|---|
-f | 强制执行 |
-i | 删除前询问 |
-r | 删除目录 |
-v | 显示过程 |
下面尝试删除前面创建的install.log和linux.log文件,大家感受一下加与不加-f参数的区别:
[root@linuxprobe ~]# rm install.log
rm: remove regular empty file ‘install.log’? y
[root@linuxprobe ~]# rm -f linux.log
[root@linuxprobe ~]# ls
[root@linuxprobe ~]#
6.dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if=参数值of=参数值count=参数值bs=参数值”。
dd命令是一个比较重要而且比较有特色的命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。当然,如果愿意的话,还可以在复制过程中转换其中的数据。Linux系统中有一个名为/dev/zero的设备文件,每次在课堂上解释它时都充满哲学理论的色彩。因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此常常使用它作为dd命令的输入文件,来生成一个指定大小的文件。dd命令的参数及其作用如表2-20所示。
表2-20 dd命令中的参数及其作用
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
例如,用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件。在理解了这个命令后,以后就能随意创建任意大小的文件了:
[root@linuxprobe ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB, 560 MiB) copied, 1.28667 s, 456 MB/s
dd命令的功能也绝不仅限于复制文件这么简单。如果想把光驱设备中的光盘制作成iso格式的镜像文件,在Windows系统中需要借助于第三方软件才能做到,但在Linux系统中可以直接使用dd命令来压制出光盘镜像文件,将它变成一个可立即使用的iso镜像:
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-8.0-x86_64-LinuxProbe.Com.iso
13873152+0 records in
13873152+0 records out
7103053824 bytes (7.1 GB, 6.6 GiB) copied, 27.8812 s, 255 MB/s
考虑到有些读者会纠结bs块大小与count块个数的关系,下面举一个吃货的例子进行解释。假设小明的饭量(即需求)是一个固定的值,用来盛饭的勺子的大小是bs块的大小,而用勺子盛饭的次数则是count块的个数。小明要想吃饱(满足需求),则需要在勺子大小(bs块大小)与用勺子盛饭的次数(count块个数)之间进行平衡。勺子越大,用勺子盛饭的次数就越少。由上可见,bs与count都是用来指定容量的大小,只要能满足需求,可随意组合搭配方式。
7.file命令
file命令用于查看文件的类型,语法格式为“file文件名称”。
在Linux系统中,由于文本、目录、设备等所有这些一切都统称为文件,但是它们又不像Windows系统那样都有后缀,因此很难通过文件名一眼判断出具体的文件类型,这时就需要使用file命令来查看文件类型了。
[root@linuxprobe ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@linuxprobe ~]# file /dev/sda
/dev/sda: block special
在Windows系统中打开文件时,一般是通过用户双击鼠标完成的,系统会自行判断用户双击的文件是什么类型,因此需要有后缀进行区别。而Linux系统则是根据用户执行的命令来调用文件,例如执行cat命令查看文本,执行bash命令执行脚本等,所以也就不需要强制让用户给文件设置后缀了。
8.tar命令
tar命令用于对文件进行打包压缩或解压,语法格式为“tar参数 文件名称”。
在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件的体积小,在网速相同的情况下,体积越小则传输时间越短。在Linux系统中,主要使用的是.tar、.tar.gz或.tar.bz2格式,大家不用担心格式太多而记不住,其实这些格式大部分都是由tar命令生成的。tar命令的参数及其作用如表2-21所示。
表2-21 tar命令中的参数及其作用
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
首先,-c参数用于创建压缩文件,-x参数用于解压文件,因此这两个参数不能同时使用。其次,-z参数指定使用gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件。用户使用时则是根据文件的后缀来决定应使用何种格式的参数进行解压。在执行某些压缩或解压操作时,可能需要花费数个小时,如果屏幕一直没有输出,您一方面不好判断打包的进度情况,另一方面也会怀疑电脑死机了,因此非常推荐使用-v参数向用户不断显示压缩或解压的过程。-C参数用于指定要解压到哪个指定的目录。-f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。刘遄老师一般使用“tar -czvf压缩包名称.tar.gz要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf压缩包名称.tar.gz”。下面我们逐个演示打包压缩与解压的操作,先使用tar命令把/etc目录通过gzip格式进行打包压缩,并把文件命名为etc.tar.gz:
[root@linuxprobe ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/66-sil-nuosu.conf
………………省略部分压缩过程信息………………
接下来将打包后的压缩包文件指定解压到/root/etc目录中(先使用mkdir命令创建/root/etc目录):
[root@linuxprobe ~]# mkdir /root/etc
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/fonts/
etc/fonts/conf.d/
etc/fonts/conf.d/65-0-madan.conf
etc/fonts/conf.d/59-liberation-sans.conf
etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
etc/fonts/conf.d/59-liberation-mono.conf
etc/fonts/conf.d/66-sil-nuosu.conf
etc/fonts/conf.d/65-1-vlgothic-gothic.conf
etc/fonts/conf.d/65-0-lohit-bengali.conf
etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
………………省略部分解压过程信息………………
本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)
1.在RHEL 8及众多的Linux系统中,最常使用的Shell终端是什么?
答:Bash(Bourne-Again SHell)解释器。
2.执行Linux系统命令时,添加参数的目的是什么?
答:为了让Linux系统命令能够更贴合用户的实际需求进行工作。
3.Linux系统命令、命令参数及命令对象之间,应该使用什么来间隔?
答:应该使用一个或多个空格进行间隔。
4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。
答:echo $SHELL。
5.简述Linux系统中5种进程的名称及含义。
答:在Linux系统中,有下面5种进程名称。
R(运行):进程正在运行或在运行队列中等待。 S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。 D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。 Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。 T(停止):进程收到停止信号后停止运行。
6.请尝试使用Linux系统命令关闭PID为5529的服务进程。
答:执行kill 5529命令即可;若知道服务的名称,则可以使用killall命令进行关闭。
7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?
答:这4项重要的信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。
8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间段?
答:通过负载数值可以看出,最近1分钟内的负载压力是最大的。
9.使用history命令查看历史命令的执行记录时,命令前面的编码数字除了排序外还有什么用处?
答:还可以用“!编码数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。
10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?
答:文件内容较长,使用more命令;反之使用cat命令。
11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?
答:应该加上-p递归迭代参数,从而自动化地创建有嵌套关系的目录。
12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?
答:可使用-f参数,这样即可无须二次确认。
13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?
答:应该用tar命令进行解压,执行tar -xzvf backup.tar.gz命令即可。
14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数?
答:可使用-v参数来进行匹配内容的反向选择,即显示出不包含某个关键词的行。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。