标准错误重定向、标准输入重定向

标准错误重定向没有专用的重定向操作符。为了重定向标准错误,我们必须参考其文件描述符。 一个程序可以在几个编号的文件流中的任一个上产生输出。虽然我们已经将这些文件流的前 三个称作标准输入、输出和错误,shell 内部分别将其称为文件描述符0、1和2。shell 使用文件描述符提供 了一种表示法来重定向文件。因为标准错误和文件描述符2一样,我们用这种 表示法来重定向标准错误:

ls -l /bin/usr 2> ls-error.txt

 

重定向标准输出和错误到同一个文件

ls -l /bin/usr > ls-output.txt 2>&1

现在的 bash 版本提供了第二种方法,更精简合理的方法来执行这种联合的重定向

ls -l /bin/usr &> ls-output.txt

处理不需要的输出

有时候“沉默是金”,我们不想要一个命令的输出结果,只想把它们扔掉。这种情况 尤其适用于错误和状态信息。系统通过重定向输出结果到一个叫做”/dev/null”的特殊文件, 为我们提供了解决问题的方法。这个文件是系统设备,叫做位存储桶,它可以 接受输入,并且对输入不做任何处理。为了隐瞒命令错误信息,我们这样做:

ls -l /bin/usr 2> /dev/null

 

标准输入重定向

到目前为止,我们还没有遇到一个命令是利用标准输入的(实际上我们遇到过了,但是 一会儿再揭晓谜底),所以我们需要介绍一个。

cat - 连接文件

 cat 命令读取一个或多个文件,然后复制它们到标准输出,就像这样:

cat [file]

cat 经常被用来显示简短的文本文件。因为 cat 可以 接受不只一个文件作为参数,所以它也可以用来把文件连接在一起。比方说我们下载了一个 大型文件,这个文件被分离成多个部分(USENET 中的多媒体文件经常以这种方式分离), 我们想把它们连起来。如果文件命名为:

movie.mpeg.001 movie.mpeg.002 … movie.mpeg.099

我们能用这个命令把它们连接起来:

cat movie.mpeg.0* > movie.mpeg

因为通配符总是以有序的方式展开,所以这些参数会以正确顺序安排。

posted @ 2019-04-12 16:49  clemente  阅读(466)  评论(0编辑  收藏  举报