输入输出重定向和管道
- 输入输出重定向:
在linux中,标准的输入:键盘,用0表示;标准的输出:显示器,用1表示;标准的错误输出:显示器,用2表示;
重定向:
输出重定向用“>”表示,追加输出重定向用“>>”表示;
输入重定向用“<”表示,追加输入重定向不用“<<”表示;
错误输出重定向用“2>”表示,追加错误输出重定向用“2>>”表示;
整合错误输出和标准输出的数据流到同一个文件中,用“&>”表示;
如果用数字表示的话,将错误输出重定向到标准输出上,可以表示如下形式:2>&1;
如下例子实现暂时关闭覆盖输出重定向,并随时使用覆盖输出重定向:
说明:1、# set -C 禁止使用覆盖输出重定向功能,事先确定/tmp/test.out文件非空,此命令才起作用。
2、# date >| /tmp/test.out,此时临时允许使用覆盖输出重定向功能。
3、所以,# set +C 打开覆盖输出重定向功能。
set命令:用于打开或者关闭shell的某种功能。
- 命令执行结束后,都有一个退出码:
1、成功执行,返回值为0;
2、错误执行,返回值为1-255;
3、使用echo $? ,获取上一个命令的退出码。
- /dev/null,位桶,相当于一个黑洞,将所有定向为它的数据统统吞噬掉。
- 输入重定向的作用:
1、# cat < /etc/profile ,将/etc/profile 文件的内容给cat予以显示。但此时的<可以省略掉。
2、tr命令中的< 不可以省略掉。例如:# tr 'a-z' 'A-Z' < /etc/profile ,将/etc/profile文件的内容给tr命令,并使其修改其显示形式,而后显示出来。
mail命令中的<不可以省略掉。例如:# mail redhat < /etc/profile ,即将/etc/profile 文件的内容作为邮件的正文发送给redhat用户。
- <<的作用:
echo -e "First line.\nSecond line." > /tmp/out ,使用echo命令生成一篇文档,并输入到/tmp/out文件中去。也可以使用如下方法代替:
cat > /tmp/out << END ,表示使用cat命令在此生成一个文档,当遇到END结束符时,该文档结束,并被保存在/tmp/out文件里。注:END是可以替换成其他的字符的,并且大小写都可以。
- 管道,用|表示:把前一个命令的输出当做后一个命令的输入。可以完成这样的任务:连接多个小程序完成复杂任务。
- tee :从标准输入读取数据到标准输出中,并保存在文件中。
例如:ls /var | tee /tmp/var.out,将目录/var下面的所有文件保存到/tmp/var.out中,并显示到屏幕上。
也可以使用tee -a 表示追加输入重定向。