我们一般执行一个命令的话,执行结果都会默认直接输出到屏幕上,数据流重定向呢就是将此类信息
传送到其他的文件或者设备中去,请看例子:
原本ll命令执行之后,屏幕上回显示该目录下所有文件的信息,但当我们执行 ll > show 的话,
就会将ll命令的执行结果输出到当前目录下的show文件中去(如果该文件不存在就创建它),后续
cat show 这个命令也证实了这一点。
1.命令执行的过程
</<< //标准输入,代码为0 >/>> //标准输出,代码为1,两个符号为数据累加,一个符号为覆盖 2>/2>> //错误输出,代码为2,两个符号为数据累加,一个符号为覆盖
2.管道命令(|)
①less命令
通常我们都会遇到一个问题,比如ll一个目录的时候,如果这个目录下有很多文件/目录,那标准输出到屏幕
上的信息瞬间将屏幕填满了,直接就看不到第一行
此时,我们可以通过 ll | less,使得标准输出的信息可以翻页显示:
此时,上下键可以使得屏幕滚动显示!
②cut命令
echo $PATH | cut -d ':' -f 3 //对于$PATH变量以:为分隔符,取第三项 echo $PATH | cut -d ':' -f 3,5 //对于$PATH变量以:为分隔符,取第三项和第五项 export | cut -c 12- //以字符为单位取出固定字符区间
③grep命令
last | grep [options] 'str' filename //从filename文件中找有字符串str的行 -a //将binary文件以text文件的方式查找数据 -c //计算找到“str”的次数 -i //忽略大小写 -n //输出行号 --color=auto //将关键字加上颜色显示
④其他
cat /etc/passwd | sort //排序 cat /etc/passwd | sort | uniq [-ci] //重复数据仅列出一个,c计数,i忽略大小写 cat /etc/passwd | wc [-lwm] //显示文件里有多少行、字、字符
⑤tee命令
同时输出到屏幕和文件中
ls | tee show | more //将ls输出的信息存一份到show文件(后续再存的话会覆盖) ls | tee -a show | more //将ls输出的信息存一份到show文件(后续再存的话会累加)
⑥