linux- FD|管道 | 重定向
一 FD简介:
file descriptors 文件描述符 进程使用文件描述符来管理打开的文件,也叫文件句柄。 程序打开时用来描述程序的文件,在linux可以理解为软连接,快捷方式 ~
每个进程都会有fd 链接文件的 ,在打开很长很长的路径时, 不用直接调用全路径名,直接调用fd即可。
可以查看fd的方式, 在/proc中数字文件夹中
其中 0 1 2 是用来输入和输出的 ,0是键盘 1和2是屏幕 4是普通文件
二 重定向
2.1 输出重定向
可以将屏幕输出的东西 保存在指定的文件中
分为:
- 正确输出 :符号
1>
比如date 1> time.txt
执行date后输出的正确信息会保存到time.txt文件中,错误的信息不会保存 - 错误输出: 符号
2>
比如date 2> time.txt
执行date后输出的错误(执行结果失败的)信息会保存到time.txt文件中 ,此方式正确信息不会保存~ - 正确和错误一起输出: 比如
ls /home /aaaa &> 111.txt
执行date后输出的正确和错误的信息第一会保存到time.txt文件中
&>
注意:& 和 > 不要有空格,不然会被默认/为后台执行了, - 黑洞文件:
执行命令 &> /dev/null
直接将信息丢垃圾桶里,保持程序干净
2.2 输入重定向
和输出相反, 将文件内容作为资源 追加到程序中 符号 <
补充1:符号 >
多次重定向 此方式覆盖前内容,如果需要追加内容 用>>
符号
补充2: 命令加了 >
号 就等于调用了 它的fd 并将内容输出到其他位置
三 管道
3.1 管道 |
简介:可以将多条命令组合起来,一次性完成复杂的处理任务
语法 指令1 | 指令2 |指令 3
将指令1的标准输出的结果 作为输入给指令2 ,再将指令2的标准输出的结果 作为输入给指令3, 最后结果信息返回给屏幕
3.2 管道 |tee
简介:相当于pingping的扩展, 会把前面程序处理的结果再另外保存一份副本。
语法 :`` 指令1 ** |tree** 副本文件名 | 指令2