管道和重定向相关的命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YL970302/article/details/83751422

一、重定向输出

注:以下的$都表示在普通用户的权限下就可以执行

1、$ ls -1 > lsoutput.txt  这条命令把ls命令的输出保存到文件isoutput.txt中,它通过>操作符把标准输出定向到一个文件,在默认的情况下,如果该文件已经存在,他的内容将被覆盖。如果想改变默认行为,可以使用set -o noclobber(或set -C)命令设置noclobber选项,从而阻止重定向操作对一个已有文件的覆盖。取消该选项可以使用 set +o noclobber命令,$ ps >> lsoutput.txt 将ps命令的输出附加指定文件的尾部。

2、如果相对标准错误输出进行重定向,你需要把想要的重定向文件描述符编号加在 > 操作符的前面。因为标准错误输出发文件描述符编号是2,所以使用2>操作符。当需要丢弃错误信息并且阻止它显示在屏幕上是,这个方法很有用

3、下面的命令把标准输出和标准错误输出分别重定向到不同的文件中:

$ kill -HUP 1234 >killout.txt 2>killer

下面是把标准输出和标准错误输出都重定向到同一个文件中

$ kill -1 1234 >killouterr.txt  2>&1,这条命令的含义是:将标准输出定向到文件killouter.txt,然后将标准错误输出重定向到与标准输出相同的地方。

二、重定向输入

$ more  <  killout.txt  很明显,在Linux下这样做意义不大,因为Linux的命令可以接收文件名作为参数,这与Windows命令行中对应的命令不同。

三、管道

可以用管道操作符“ | ”来连接进程。在Linux通过管道连接的进程可以同时运行,并且随着数据流在它们之间的传递可以自动地进行协调。举例:你可以使用sort命令对ps命令的输出进行排序:

$ ps | sort > pssort.out

如果想在屏幕上分页显示输出结果:

$ ps | sort | more

允许连接的进程数目是没有限制的,假设你想看看系统中运行的所有进程的名字,但不包括shell本身,可以使用下面的命令:

$ ps -xo comm | sort | uniq | grep -v sh | more   这个命令首先按字母顺序排序ps命令的输出,再用uniq命令去除名字相同的进程,然后用grep -v sh命令删除名为sh的进程,最终将结果分页显示再屏幕上

猜你喜欢

转载自blog.csdn.net/YL970302/article/details/83751422
今日推荐