centos 7 输出重定向 为空 linux 重定向错误输出_数据

标准输入     (stdin) :代码为 0 ,使用 < 或 << ;

标准输出     (stdout):代码为 1 ,使用 > 或 >> ;

标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

输入重定向中用到的符号及其作用

centos 7 输出重定向 为空 linux 重定向错误输出_标准输出_02

输出重定向中用到的符号及其作用

centos 7 输出重定向 为空 linux 重定向错误输出_标准输出_03

对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2
是必须要写的。

&表示正确输出和错误输出

&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同

 

 

1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;

1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;

2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;

2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;

『 1>> 』以及『 2>> 』中间是没有空格的

将 stdout 与 stderr 分存到不同的文件去

find /home -name .bashrc > list_right 2>list_error

  • /dev/null 垃圾桶黑洞装置与特殊写法

将错误的数据丢弃,屏幕上显示正确的数据

find /home -name .bashrc 2>/dev/null

将指令的数据全部写入名为 list 的文件中

[dmtsai@study ~]$ find /home -name .bashrc > list 2> list <==错误

[dmtsai@study ~]$ find /home -name .bashrc > list 2>&1 <== 正 确

[dmtsai@study ~]$ find /home -name .bashrc &> list <== 正 确

上述表格第一行错误的原因是,由于两股数据同时写入一个文件,又没有使用特殊的语法, 此时两股数据可能会交叉写入该文件内,造成次序的错乱。所以虽然最终 list 文件还是会产生,但是里面的数据排列就会怪怪的,而不是原本屏幕上的输出排序。 至于写入同一个文件的特殊语法如上表所示,你可以使用 2>&1 也可以使用 &>

 

  • standard input < <<

将原本需要由键盘输入的数据,改由文件内容来取代

利用 cat 指令来建立一个文件的简单流程

cat > catfile

用某个文件的内容来取代键盘的敲击呢?

用 stdin 取代键盘的输入以建立新文件的简单流程

cat > catfile < ~/.bashrc

<<  这个连续两个小于的符号了。 他代表的是『结束的输入字符』的意思!举例来讲:『我要用 cat 直接将输入的讯息输出到 catfile 中, 且当由键盘输入 eof 时,该次输入就结束』,那我可以这样做:

cat > catfile << "eof"

 

echo "error message" 1>&2

echo "error message" 2> /dev/null 1>&2

第一句屏幕上有信息,第二个屏幕上无信息