数据流重定向(redirect),将数据传导到其他地方去,将某个指令执行后应该要出现在屏幕上的数据,给传输到其他的地方。

如上图所示,数据输出分为标准输出(standard output )与标准错误输出(standard error output)。标准输出指的是“指令执行所回传的正确的讯息”,而标准错误输出可理解为“ 指令执行失败后,所回传的错误讯息”。

数据输出默认都是直接输出到屏幕上,这是数据流重导向可以将 standard output(简称 stdout)与 standard error output(简称 stderr)分别传送到其他的文件或设备去,语法如下:

  1. 标准输入(stdin) :代码为 0 ,使用 < (覆盖)或 << (追加);
    stdin) :代码为 0 ,使用 < (覆盖)或 << (追加);
  2. 标准输出(stdout):代码为 1 ,使用 >(覆盖) 或 >>(追加) ;
  3. 标准错误输出(stderr):代码为 2 ,使用 2> (覆盖)或 2>>(追加) ;

实例

stdout和stderr输出到不同文件

# cat /etc/hosts /etc/hostss >stdout.log 2>stderr.log
stdout输出到stdout.log;stderr输出到stderr.log

输出数据到空设备,即丢弃输出

# cat /etc/hosts /etc/hostss 2>/dev/null
stdout输出到屏幕;stderr输出到空设备/dev/null

stdout和stderr输出到相同文件

# cat /etc/hosts /etc/hostss >all.log 2>&1
stdout和stderr都被输出到all.log

键盘输入

# cat >input.log
this is a test!
now input compleate!

按住crtl+d离开即可写入到文件

读取文件输入

# cat > input.log < /etc/hosts

关键字指令输入

# cat > input.txt << EOF
this is a test!
now input conplete!
EOF

<<后面的EOF关键字可用其他字符代替,一定要首尾字符相同

将stdout转化为stderr

# echo "stdout to stderr" 2>log.txt 1>&2