命令行简介之重定向和管道

绝大部分 UNIX® 进程(包括图形应用程序,但不包括绝大多数守护程序)至少使用三个文件描述符:标准输入、标准输出和标准错误输出。它们相应的序号是 0、1 和 2。

重定向和管道的目的是重定向这些描述符 。

举例:

重定向

假设您想要一张 images 目录中所有以 .png 结尾的文件列表。该列表非常长,因此您会想把它先放到一个文件中,然后在有空的时候查看。您可以输入下述命令:

$ ls images/*.png 1>file_list

这表示把该命令的标准输出(1)重定向到(>)file_list 文件。其中的 > 操作符是输出重定向符。如果要重定向到的文件不存在,它将被创建;不过如果它已经存在,那么它先前的内容将被覆盖。不过,该操作符默认的描述符就是标准输出,因此就不用在命令行上特意指出。所以,上述命令可以简化为:

$ ls images/*.png >file_list

其结果是一样的。然后您就可以用某个文本文件查看器(比如 less)来查看。

管道

管道在某种程度上是输入和输出重定向的结合。其原理同物理管道类似:一个进程向管道的一端发送数据,而另一个进程从该管道的另一端读取数据。管道符是 |。让我们再来看看上述文件列表的例子。假设您想直接找出有多少对应的文件,而不想先将它们保存到一个临时文件,您可以

ls images/*.png | wc -l

这表示将 ls 命令的标准输出(即文件列表)重定向到 wc 命令(单词计数(Word Count))的输入。这样您就直接得到了想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值