Linux程序编程————学习笔记(4)

管道和重定向
重定向输出
$ ls -l > lsoutput.txt
把ls命令的输出保存到文件lsoutput.txt中
标准文件描述符的内容:文件描述符0代表一个程序的标准输入,文件描述符1代表标准输出,文件描述符2代表标准错误输出。可以单独重定向其中任何一个。
通过>操作符把标准输出重定向到一个文件。在默认情况下,如果该文件已经存在,它的内容将被覆盖。如果想改变默认行为,可以使用命令set -o noclobber(或set -C)命令设置noclobber选项。也可以使用set +o noclobber命令取消该选项。
$ ps >> lsoutput.txt
将输出内容附加到一个文件中,会将输出附加到指定文件的尾部

下面命令将标准输出和标准错误输出分别重定向到不同的文件中:
$ kill -HUP 1234 >killout.txt 2>killerr.txt
如果想把两组输出都重定向到一个文件中,可以用>&操作符来结合
kill -l 1234 >killouterr.txt 2>&1
通常不需要保存标准输出和标准错误输出的内容,就可以用Linux的通用"回收站"/dev/nill来有效丢弃所有输出信息。
$ kill -l 1234 >/dev/null 2>&1
重定向输入
$ more < killout.txt
很明显,在Linux下这样做的意义不大,因为Linux的more命令可以接受文件名作为参数。

管道:可以使用管道操作符|来连接进程。
不使用管道
$ ps > psout.txt
$sort psout.txt > pssort.out
使用管道连接进程
$ ps | sort > passort.out
想在屏幕上分页输出结果
$ ps | sort | more
允许连接的进程数目没有限制。但是不包括shell本身。系统中允许的所有进程的名字;按照字母顺序排序ps命令的输出,再用unip命令去除名字相同的进程,然后用grep - v sh命令删除名为sh的进程,结果分页显示在屏幕上。
$ ps -xo comm | sort | uniq | grep -v sh | more
如果执行下述命令会的到空文件,因为在读取mydata.txt之前就已经覆盖内容了
cat mydata.txt 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值