你的位置:首页 > 操作系统

[操作系统]IO redirect


在OS中,0-9 中的每个数字都代表一个流。

现在已指定的有3个: 【0:标准输入流】、【1:标准输出流】、【2:错误输出流】,其余的还未指定。

基本IO操作

cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 2> file 把 stderr 重定向到 file 文件中;
cmd 2>> file 把 stderr 重定向到 file 文件中(追加);
cat <>file 以读写的方式打开 file;
cmd < file cmd 命令以 file 文件作为 stdin;
cmd << delimiter ,从 stdin 中读入,直至遇到 delimiter 分界符。
 
进阶IO
&是对FD(File Descriptor)操作
>&n 复制文件描述符

<&n 标准输入复制自文件描述符 n;
<&- 关闭标准输入(键盘);
>&- 关闭标准输出;
n<&- 表示将 n 号输入关闭;
n>&- 表示将 n 号输出关闭;

cmd 2>& 1 就是将标准输出流的FD复制给错误输出,就相当于:FD2=FD1,这样的结果是,错误输出重定向到了标准输出。

所以:

cmd >file 2>&1 就是将标准输出重定向到了file中(覆盖方式),然后将错误输出内容放到标准输出里,最终效果就是错误输出也重定向到了file中。

cmd >> file 2>&1  就是将标准输出重定向到了file中(追加方式),然后将错误输出内容放到标准输出里,最终效果就是错误输出也重定向到了file中。