重定向与管道
重定向
-
输出重定向:
>
-
>
是1>
的缩写 -
&>
不管错误还是正确,全部输出注:
/dev/null
设备目录,null
这个是相当于一个黑洞,向这里边输入,就相当于放到垃圾桶里,工作中常用的,&> /dev/null
-
一个
>
是覆盖式生成,如果想使用追加方式,那么就需要使用>>
-
-
输入重定向:
<
-
作用:一个作文,全部执行,省得一点一点用手输入
-
实例:
mail -s "标题" alice
如果直接回车的话,会弹出来让用户填写具体的邮件,如果不直接回车,而是在后边添加上< 123.txt
,则会直接将123.txt当做邮件进行发送了
-
-
句柄
-
句柄位置:
使用
ps -aux | grep vim
获取vim程序的程序编号,第二列是程序编号,/proc/程序编号
里边存着程序的所有信息,之后进入到
/proc/程序编号/fd
就可以看到句柄,有几个数字,0 1 2 4
类似这种,0:标准输入,1,标准输出,2,错误输出 -
句柄的使用方式:
执行命令
ls hdusaihdi.txt
,如果没有这个文件,如果使用2>
重定向到一个文件,错误信息就会在重定向的文件中展示可以使用 ls 同时查看两个目录,一个存在一个不存在,然后用重定向进行输入到某个文件中,输入的时候可以指定使用1号句柄或者2号句柄
-
管道
-
进程管道piping
|
- 原理:通过文件描述符fd来实现的,一般的fd是接的键盘,而管道是将前面的输出,当成后边的输入
-
三通管道 tee
-
实例:
ps aux | tee /dev/pts/0 | grep gnome | wc -l ps aux | tee 111.txt | grep gnome | wc -l
-
-
参数传递管道 Xargs
-
使用时机:在根据文档中的文案进行操作的时候,有时候需要将前面的文案作为参数
-
实例:
touch /home/file{1..5}
再新建一个file.txt文件,内部存储上边文件的路径
cat file.txt | Xargs rm -rf
-