linux学习笔记3--压缩和搜索命令

时间:2022-04-25 08:46:57

1.tar命令

tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]

主要使用的是.tar .tar.gz.tar.bz2 格式

接下来将打包后的压缩包文件指定解压到/root/etc目录中(先使用 mkdir 命令来创建/root/etc目录):

 

 

2.grep命令

grep命令用于在文本中的关键词搜索,显示结果

格式为“grep [选项][文件]”。grep 命令的参数及其作用如表 2-15 所示

 

其中:

我们在这里只讲两个最最常用的参数: -n参数用来显示搜索到信息的行号; -v 参数用于反选信息(即没有包含

关键词的所有信息行)。这两个参数几乎能完成您日后80%的工作需要,至于其他上百个参数,即使以后在工作期间遇到了,再使用 man grep 命令查询也来得及。

 

在 Linux 系统中,/etc/passwd 文件是保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用 grep命令来查找出当前系统中不允许登录系统的所有用户信息

 

3.find命令

按照指定的条件查找文件,格式为“find [查找路径] 寻找条件 操作”

Linux 系统中,搜索工作一般都是通过 find 命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。find 命令的参数以及作用如表 2-16 所示。

 

这里需要重点讲解一下-exec 参数重要的作用。

这个参数用于把 find 命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似于第 3 章将要讲解的管道符技术,并且由于find命令对参数的特殊要求,因此虽然 exec 是长格式形式,但依然只需要一个减号(-

根据文件系统层次标准(FilesystemHierarchy Standard)协议, Linux 系统中的配置文件会保存到/etc目录中(详见第 6 章)。如果要想获取到该目录中所有以host 开头的文件列表,可以执行如下命令:

如果要在整个系统中搜索权限中包括 SUID权限的所有文件(详见第 5 章),只需使用-4000 即可:

 

查询文件指定大小的方法:

 

加几个复习题:

1. 在 RHEL 7 系统及众多的 Linux 系统中,最常使用的 Shell 终端是什么?

BashBourne-Again SHell)解释器。

2. 执行 Linux 系统命令时,添加参数的目的是什么?

为了让 Linux 系统命令能够更贴合用户的实际需求进行工作。

3Linux 系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?

应该使用一个或多个空格进行间隔。

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.910.560.32,那么最近 15分钟内负载压力最大的是哪个时间段?

通过负载数值可以看出,最近 1 分钟内的负载压力是最大的。

9. 使用 history 命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?

还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

10.若想查看的文件具有较长的内容,那么使用 catmoreheadtail中的哪个命令最合适?

文件内容较长,使用 more 命令;反之使用 cat 命令。

11. 在使用 mkdir 命令创建有嵌套关系的目录时,应该加上什么参数呢?

应该加上-p 递归迭代参数,从而自动化创建有嵌套关系的目录。

12. 在使用 rm 命令删除文件或目录时,可使用哪个参数来避免二次确认呢?

可使用-f 参数,这样即可无需二次确认。

13. 若有一个名为 backup.tar.gz 的压缩包文件,那么解压的命令应该是什么?

应该用 tar 命令进行解压,执行 tar -xzvfbackup.tar.gz 命令即可。

14. 使用 grep 命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数?

可使用-v 参数来进行匹配内容的反向选择,即显示出不包含某个关键词的行

 

 

学习管道符,重定向与环境变量

 

1.输入输出重定向

我的理解就是将多个命令linux命令适当的组合在一起,使其协同工作。

标准输入重定向(STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命

令中输入。

标准输出重定向(STDOUT,文件描述符为 1):默认输出到屏幕。

错误输出重定向(STDERR,文件描述符为 2):默认输出到屏幕。

比如我们分别查看两个文件的属性信息,其中第二个文件是不存在的,虽然针对这两个文件的操作都分别会在屏幕上输出一些数据信息,但这两个操作的差异其实很大:

在上述命令中,名为 linuxprobe的文件是存在的,输出信息是该文件的一些相关权限、所有者、所属组、文件大小及修改时间等信息,这也是该命令的标准输出信息。而名为xxxxxx的第二个文件是不存在的,因此在执行完 ls 命令之后显示的报错提示信息也是该命令的错误输出信息。那么,要想把原本输出到屏幕上的数据转而写入到文件当中,就要区别对待这两种输出信息。

对于输入重定向:

对于输出重定向:

对于重定向中的标准输出模式,可以省略文件描述符 1不写,而错误输出模式的文件描述符 2是必须要写的。我们先来小试牛刀。通过标准输出重定向将man bash 命令原本要输出到屏幕的信息写入到文件 readme.txt 中,然后显示 readme.txt文件中的内容。具体命令如下:

 

 

有没有感觉到很方便呢?我们接下来尝试输出重定向技术中的覆盖写入与追加写入这两种不同模式带来的变化。首先通过覆盖写入模式向 readme.txt 文件写入一行数据(该文件中包含上一个实验的man命令信息),然后再通过追加写入模式向文件再写入一次数据,其命令如下

步骤:(centos7)要在普通用户下创建a.txt,然后做第一步添加,然后转到root下才能再次添加东西。第二次重定向。没有转到root下是不能添加的,这与redhat有点区别。

 

 

如果想把命令的报错信息写入到文件,该怎么操作呢?当用户在执行一个自动化的 Shell脚本时,这个操作会特别有用,而且特别实用,因为它可以把整个脚本执行过程中的报错信息都记录到文件中,便于安装后的排错工作。接下来我们以一个不存在的文件进行实验演示:

输入重定向相对来说有些冷门,在工作中遇到的概率会小一点。输入重定向的作用是把文件直接导入到命令中。接下来使用输入重定向把 readme.txt 文件导入给 wc -l 命令,统计一下文件中的内容行数。

ps:上述命令等同于要学习的cat a.txt | wc -l 的管道符命令组合。

 

2.管道命令符

学习 tr命令时曾经见到过一个名为管道符的东西。同时按下键盘上的Shift+\键即可输入管道符,其执行格式为“命令 A | 命令 B”。

 

管道命令符的作用也可以用一句话来概括“把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入”。

 

讲解 grep 文本搜索命令时,我们通过匹配关键词/sbin/nologin 找出了所有被限制登录系统的用户。在学完本节内容后,完全可以把下面这两条命令合并为一条:

 

找出被限制登录用户的命令是grep"/sbin/nologin" etc/passwd

统计文本行数的命令则是wc -l

 

因此只需要把管道符放到两条命令之间即可,具体如下。这简直是太方便了!

还可以将它套用到其他不同的命令上

 

在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和 passwd 命令的--stdin 参数相结合,我们可以用一条命令来完成密码重置操作

 

 

大家是不是觉得管道符命令有些相见恨晚?管道符的玩法还有很多,比如,在发送电子邮件时,默认采用交互式的方式来进行,我们完全可以利用一条结合了管道符的命令语句,把编辑好的内容与标题一起“打包”,最终用这一条命令实现邮件的发送。

下面这条自造的命令就结合使用了 mail邮件命令与输入重定向的分界符,其目的是让用户一直输入内容,直到用户输入了其自定义的分界符时,才结束输入。

当然,大家千万不要误以为管道命令符只能在一个命令组合中使用一次,我们完全可以这样使用:“命令 A | 命令 B | 命令 C”。为了帮助读者进一步理解管道符的作用,把管道符描述成“任意门”。想必大家小时候都看过“哆啦A 梦”动画片吧。哆啦 A 梦(也就是我们常称的机器猫)经常为了取悦大雄而从口袋中掏出一件件宝贝,其中好多次就用到了任意门这个道具。其实,管道符就好像是用于实现数据穿越的任意门,可以帮我们提高工作效率,完成之前不敢想象的复杂工作。