shell管道与重定向
2014-06-08 10:56
211 查看
输出重定向
$ ls -l > lsoutput
这条命令将ls命令执行后的结果输入出到lsoutput文件中。
在linux shell中使用符号 > ,< 来完成输入输出的重定向,同时对应的有三种标准的文件描述符,0(标准输入),1(标准输出),2(标准错误),可以
单独的重写向其中的任何一种。你还可以重定向其他的文件描述符,但对标准文件描述符以外进行重定向的情况很少见。
默认情况下>符号在 文件已经存在时它会覆盖,需要使用set -o noclobber(或set -C)命令设置noclobber选项,阻止重定向操作对一个已有文件
的覆盖,使用set +o noclobber取消该选项。
使用>>操作符将输出内容附加到一个文件。例如:
$ ls -l >> lsoutput
除了标准的输入与输出在重定向时可以不加文件描述符,你需要把你想要重定向的文件描述符加在>操作符的前面。
如标准错误的输出流文件描述符是2,所以使用2>操作符.
$ ls -l 2> erroutput
如果你想把两组输出都重定向到一个文件中,你可以用>&操作符来结合两个输出。例:
$ ls -l > lsoutput 2>&1
我个人对上面命令的理解:
首先设置ls的标准输出流为lsoutput文件,然后使用a>&b符号使a文件描述符与b文件描述符都输出到同一个位置,前提是你要先指定a文件描述符 的位置才有效。
输入重定向
cat < lsoutpu
管道
linux管道操作符 | , 在linux下通过管道连接的进程可以同时运行,并且随着数据流在它们之间的传递可以自动的进行协调,你可以使用
sort命令对ps命令的输出进行排序。
如果不使用管道,你就必须分几个步骤来完成这个任务。
$ ps > psout //输出到文件 $ sort psout >> pssort //排序
更好的解决方案是用管道来连接进程,如:
$ ps | sort > pssort
允许连接的进程数目是没有限制的。注意,有系列的命令需要执行时,相应的输出文件是在这一组命令被创建的同时立刻被创建或写入的,所以
决不要在命令流中重复使用相同的文件名。
相关文章推荐
- shell之重定向和管道
- linux shell 管道命令(pipe)使用及与shell重定向区别
- shell 学习之正则、别名以及管道重定向
- shell变量、重定向、管道
- C语言父子进程shell命令重定向到管道传递(双管道)
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 浅说shell中I/O重定向与管道的区别
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Shell Programming(一)——重定向与管道
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 字符串切割思路--shell重定向 管道
- shell的特性之十:输入输出重定向和管道
- echo,Shell管道与重定向
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Linux管道指令(pipe)与shell 重定向的区别
- shell脚本:shell的基本元素-6 重定向与管道
- Shell基础:常用技巧&重定向&管道操作
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- Linux管道指令(pipe)与shell 重定向的区别
- linux shell 管道命令(pipe)使用及与shell重定向区别