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,可以这样写:

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn