46关于Linux的IO重定向

it2025-10-04  5

I/O重定向是一个过程,这个过程捕捉一个文件、或命令、或程序、或脚本、甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件、或命令、或程序、或脚本。 1、I/O重定向符合包含了基本I/O重定向符号和高级I/O重定向符号两大类。 基本I/O重定向符号(须要注意的是能够使用FD文件描写叙述符作为文件名): cmd1 | cmd2:管道符,将cmd1的标准输出作为cmd2的标准输入 > filename:将标准输出写到文件filename之中 < filename:将文件filename的内容读入到标准输入之中 >> filename:将标准输出写到文件filename之中,若filename文件已存在,则将标准输出追加到filename已有内容之后 >| filename:即使noclobber选项已开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉 n>| filename :即使noclobber选项已开启,仍然强制将FD为n的输出写到文件filename之中,即将filename文件覆盖掉 n> filename:将FD为n的输出写到文件filename之中 n< filename :将文件filename的内容读入到FD n之中 n>> filename:将FD为n的输出写到文件filename之中,若filename文件已存在,则将FD为n的输出追加到filename已有内容之后 <<delimiter :此处文档(Here-document) 高级I/O重定向符号 n>&m:将FD为m的输出复制到FD为n的文件 n<&m:将FD为m的输入复制到FD为n的文件 n>&-:关闭FD为n的输出 n<&-:关闭FD为n的输入 &>file:将标准输出和标准错误输出重定向到文件 --------I/O重定向和管道的差别 首先须要注意的是管道|事实上也是I/O重定向的一个操作部分 1、管道左边是一个能够送到标准输出(stdout)的命令,右边是一个从标准输入接受(stdin)的命令;假设I/O重定向符左边是有输出的命令,右边仅仅能是文件,假设I/O重定向符左边是能接受输入的命令,右边仅仅能是文件。 2、在管道运行的时候启动了两个进程,该进程分别运行左右两边的命令;而I/O重定向符值则在同一个进程中完毕 ---------在Linux中有两个重要的特殊文件: /dev/null:这是一个空设备文件,被送到当中的所有的数据都会被丢弃,能够将标准输出和错误输出所有重定向到该文件里,此时既能够将错误信息所有丢弃。 标准写法是>/dev/null 2>&1 当中>/dev/null表示丢弃文件; 2>&1当中2和1分别表示标准输出stdout和标准出错stderr,>&表示等同于,也就是将标准出错输出2重定向于标注输出1,因为标准输出已经被重定位到了/dev/null,所以标准出错的输出也被扔掉了。 该写法也能够是1>/dev/null 2>/dev/null,差别在这样的情况下标准输出和标准出错都被送到/dev/null,这个文件被打开了两遍;而>/dev/null 2 >& 1则是将标准输出送到/dev/null,而标准出错则是从管道送到/dev/null,/dev/null仅仅被打开了一次,当中/dev/null能够换成其它不论什么文件。 /dev/tty:当该文件被打开的时候shell会将其自己主动重定向到一个终端(包含显示控制台、远程登陆伪中断或者串口)。

转载于:https://www.cnblogs.com/bhlsheji/p/4033494.html

相关资源:数据结构—成绩单生成器
最新回复(0)