Shell编程 第四课时 stdout、stderr、stdin

  • Post author:
  • Post category:其他


什么是数据重定向?

standard output和standard error output

标准输出(stdout):命令运行所返回的正确信息。

标准错误输出(stderr):命令运行失败后,所返回的错误信息。

不管正确的或错误的数据都是默认输出到屏幕上的,显得很乱,是否存在一个机制将两种数据分开?

数据重定向可以将stdout和stderr分别传送到其他文件或设备。

传送所用的特殊字符

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

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

ll / > ~/test-re.txt

uname -r > ~/test-re.txt(会覆盖掉之前的内容)

cat ~/test-re.txt

ll ~ >>~/test-re.txt(将内容追加进文件)

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

1>:以覆盖的方法将正确的数据输出到指定的文件或设备上。

1>>:以追加的方法将正确的数据输出到指定的文件或设备上。

2>:以覆盖的方法将错误的数据输出到指定的文件或设备上。

2>>:以追加的方法将错误的数据输出到指定的文件或设备上。

find /home -name .bashrc(一个既有正确输出,又有错误输出的命令)

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

/dev/null垃圾桶黑洞设备与特殊写法

不想显示也不想存储的信息,可以重定向到/dev/null

如果想把正确和错误的数据全部写入到一个文件: >file 2>&1

find /home -name .bashrc > ret2.txt 2>&1

standard input:<和<<

输入重定向:将原本需要由键盘输入的数据,改由文件内容取代;

cat >catfile < ~/.bashrc

cat >catfile <<EOF(<<相当于加一个结束字符)



版权声明:本文为qq_51597940原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。