Shell输入/输出重定向
================================摘自菜鸟教程===================================
大多数unix系统命令从你的终端接受输入并将所产出的输出发送到终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好就是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
重定向命令列表如下:
命令 |
说明 |
command >file |
将输出重定向到file |
command<file |
将输入重定向到file |
command>>file |
将输出以追加的方式重定向到file |
n>file |
将文件描述符为n的文件重定向到file |
n>>file |
将文件描述符为n的文件以追加的方式重定向到file |
n>&m |
将输出文件m和n合并 |
n<&m |
将输入文件m和n合并 |
<<tag |
将开始标记tag和结束标记的tag之间的内容作为输入 |
备注:文件描述符0通常是标准输入(STDIN),1是标准输出(STDOUT),2是标准错误输出(STDERR)
1、输出重定向
a、输出重定向
该种方式如果原文件存在会覆盖掉原文件内容。
重定向一般通过在命令之间插入特定的符号来实现。
last >/home/log/1/last.log
备注:
last命令执行后,并没有在中终端显示服务器登录信息,这是因为输出已经被从默认的标准输出设备(终端)重定向到指定文件。
b、以追加的方式输出重定向
该种方式如果援文件存在不会覆盖源文件内容。
last >>/home/log/1/last.log
2、输入重定向
wc -l <run.log
同时替换输入输出
wc -l <run.log >run1.log
3、重定向深入
一般情况下,每个unix/Linux命令运行时都会打开三个文件;
a、标准输入文件(STDIN):stdin的文件描述符为0,unix程序默认从stdin读取数据;
b、标准输出文件(STDOUT):stdout的文件描述符为1,unix程序默认从stdout输出数据;
c、标准错误文件(STDERR):stderr的文件描述符为2,unix程序会向stderr流中写入错误信息;
默认情况下,command>file将stdout重定向到file,command<file将stdin重定向到file
如果希望stderr重定向到file
cat /etc 2>/home/log/1/run.log
如果希望stderr以追加的方式重定向到fie
cat /etc 2>>/homg/log/1/run.log
如果希望将stdout和stderr合并后重定向到file
###将标准输出和标准错误输出到文件 command >file 2>&1 ###将标准输出和标准错误以追加的方式输出到文件 command >>file 2>&1
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null;
/dev/null是一个特殊的文件,写入到她的内容都会被丢弃;如果尝试从该文件读取内容,那什么也读取不到。但是/dev/null文件非常有用,将命令的
输出重定向到它,会起到禁止输出的效果。
如果希望屏蔽stdout和stderr,可以这样写:
command >/dev/null 2>&1