第一章 :red hat linux系统下载安装
第二章:Linux用户和组
第三章:Linux文件管理
第四章:Linux目录管理
第五章:Linux文本编辑器
第六章:Linux文件查找与管理
第七章:Linux输入,输出的重定向以及管道
@
目录这一次博客内容主要讲解Linux的输入、输出和重定向以及管道的操作,照例是以实验为主,操作开始前记得抓一张快照。
这个不重要简单提一下就行了,标准输入设备常用的有键盘,从键盘输入数据就可以叫做标准输入,标准输出同理就是屏幕的显示。
Linux一般的命令结果都输出在命令行中,我们无法进行修改或者查找等操作,所以要用到重定向
1.重定向符号 >
cat /etc/passwd >/home/chaoge/chao
查看/etc/passwd 并将结构输出到/home/chaoge/chao文件下
咱们可以看到,结果并没有正常的从屏幕输出,而是被重定向到相应的文件里。
注>重定向为强制覆盖
df -Th为查看磁盘情况,不重要。咱们只看他结果就可以,可以发现之前重定向的内容消失了。
2.追加重定向符>>
echo 为最简单的保准输出,咱们现在查看重定向结果
可以看到内容追加到末尾,这个一般可以用于日志记录的收集。
3.错误重定向符号2>/2>>
前面的重定向都是基于前部分命令是正确的重定向,现在咱们尝试命令错误的重定向。
咱们可以看到命令错误时,错误信息依旧输出在屏幕上,我们希望将错误信息也重定向。
asdwad 2>/home/chaoge/chao
追加一个道理,不说了。
4.分离重定向
如果输出信息中有错的也有对的怎么办。
例如普通用户查找/tmp目录
可以看到一部分结果正常,一部分因为权限不够发生错误。
find /tmp/ >yes 2>no
分离,将对的重定向到yes中,错的定向到no中
5.强制重定向&>
我也不管对错全部定向到同一个文件
find /tmp/ &>all
看以看到所有结果都被重定向到了同一个文件。
就是把符号方向变一下<,意思基本一样,这个用的比较少。博主也没有找到合适的例子,简单说一下吧。
这个博主觉得可以对比python的使用,python分为文件式和交互式,交互式就和Linux一样一行一行输命令,但命令比较多就写一个文件然后运行。相当于把保准输入命令一行一行重定向到交互式中。
管道符号用一个 | 来表示,两边分别两条命令,管道可以将左边命令的结果集作为参数送给右边的命令,理论比较抽象,依旧以实验为例。
cat /etc/passwd | grep root
这两条命令都说过,简单过一下。
左边:查看/etc/passwd
右边:在文件中查看含有root的行
整行命令的意思就是,先查看文件,得到内容,然后在得到的内容里查找含有root的行。
在做一个简单的实验,也是实际生产中会用要的,提取文件中的运行代码
以/boot/grub2/grub.cfg为例,现在展示出这个文件的部分代码
很明显这个文件中有很多注释以及空行,在程序运行的时候这些是不参与运行的,现在要求咱们用管道提取参与运行的代码。
为例让效果比较明显咱们,先统计一下源代码的代码量
wc-l可直接统计行数。
现在开始一步一步过滤,首先是含#的注释不参与运行,因为grep是支持正则表达式的,这就很简单了
先查找到所有#
cat /boot/grub2/grub.cfg | grep ^#
很容易找到含有#的行,grep有个-v可以用来取反
cat /boot/grub2/grub.cfg | grep -v ^#
很明显所有#都消失了,下一步去掉空行,依旧可以使用正则表达式^$,然后在取反即可
cat /boot/grub2/grub.cfg | grep -v ^# |grep -v ^$
这里由于#在Markdown有特殊含义,看起来不太正常,可以仔细看一下截图
可以看到所有空行都消失。
咱们在看一下实际参与运行的行数
可以看到,少了小一半呢。
这里还可以和重定向继续结合,将提取到的文件输出到文件
cat /boot/grub2/grub.cfg | grep -v ^# |grep -v ^$ >/grub
这次博客内容基本就到这里,管道的应用在Linux中非常灵活,还是那个原则,没事找例子多练练你就啥都会了。