Shell输入/输出重定向

Shell输入/输出重定向

================================摘自菜鸟教程===================================

大多数unix系统命令从你的终端接受输入并将所产出的输出发送到终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好就是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:

命令

说明

command >file

将输出重定向到file

command<file

将输入重定向到file

command>>file

将输出以追加的方式重定向到file

n>file

将文件描述符为n的文件重定向到file

n>>file

将文件描述符为n的文件以追加的方式重定向到file

n>&m

将输出文件mn合并

n<&m

将输入文件mn合并

<<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
原文地址:https://www.cnblogs.com/tengjiang/p/11507710.html