今日跟弘哥聊天,截了一段年前写的东西给他,结果问了个关于重定向的东东,竟然没答上来,遂怀疑我是抄的,是可忍孰不可忍,把重定向又看了看,这下好好做一些笔记,别又忘了,哈哈!
首先需要了解下文件标示符,通常的标示符有10中(0——9),但是我们经常遇到的就是三种,0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出)。
在重定向中是用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案; 0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的。
> :如果文件存在,则清空文件将结果输出到文件中,如果不存在文件,则新建文件。
>>:表示将结果追加到文件中。
这里还要提一下
<<< :这个,只适用于shell脚本中,一行字符串进行读入。
cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 1> fiel 把 stdout 重定向到 file 文件中;
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd 2> file 把 stderr 重定向到 file 文件中;
cmd 2>> file 把 stderr 重定向到 file 文件中(追加);
cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
cat <>file 以读写的方式打开 file;
cmd < file cmd 命令以 file 文件作为 stdin;
cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。
>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;
<&n 标准输入复制自文件描述符 n;
<&- 关闭标准输入(键盘);
>&- 关闭标准输出;
n<&- 表示将 n 号输入关闭;
n>&- 表示将 n 号输出关闭;