什么是数据重定向?
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(<<相当于加一个结束字符)