数据流重导向是什么?
我们执行一个指令时,指令可能需要先从档案中读取数据,经过指令处理之后,将结果输出到屏幕上。如果指令错误或是文档不存在,
错误结果也会显示到屏幕上来,这就是我们通常所说标准错误输出。当然我们也可以将结果传送到别的地方,而不是在屏幕上
显示,比如使用文件记录结果,这就是数据流重导向。而传送的指令有:
1.标准输入(stdin): 代码为0 ,使用 < 或 <<;
2.标准输出(stdout): 代码为1 ,使用 > 或 >>;
3.标准错误输出(stderr): 代码为2 ,使用2> 或 2>>;
其中>是新建或清空文件内容并覆写,>>则是追加到文本尾部。
数据流重导向有什么用?
• 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
• 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
• 一些系统的例行命令(例如写在 /etc/crontab 中的档案)的执行结果,希望他可以存下来时;
• 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
• 错误讯息与正确讯息需要分别输出时。
接下来展示几个常用的数据重导向例子:
//将ls结果记录到文件中
ls -l / > /home/ls.txt
//将ls错误的结果记录道文件中 /abc目录不存在
ls -l /abc/ 2> /home/lserr.txt
//将ls结果追加道ls.txt
ls -al / >> /home/ls.txt
//将ls正确结果记录道文件a中,错误结果记录到文件b中
ls /home/mark/ 1> list_right 2> list_error
//讲ls正确结果和错误结果都记录到同一个文件 特殊写法
ls /home/mark/ > list 2>&1
//将正确结果记录,错误结果丢弃
ls /home/mark/ 1> list_right 2> /dev/null
//使用文本内容代替键盘输入 读取contfile内容 输入到catfile中
cat > catfile < contfile
//也可以使用自定义结束符号代替ctrl+d结束输入,例如输入完毕之后输入eof自动退出编辑
cat > catfile <<eof
–end–
参考文献:《鸟哥的Linux私房菜》