《Unix/linux编程实践教程》------重定向程序的I/O
《Unix/linux编程实践教程》书中举例命令more的用法:
$more filename
$command | more
$more < filename
用法1直接显示filenam的内容,用法2more将command命令输出分页显示。用法3more从标准输入获取要分页的内容,这时more的标准输入被重定向到文件filename。
用法2:more现在main中检查命令行参数的个数,如果没有参数,那就从标准输入读取数据,这样一来more就可以通过管道重定向得到数据:举例:
$who | more。管道命令"|"将who的输出重定向到more的输入中,类似也可以:$ls \bin | more。
用法3:prog < 输入文件名 或 prog > 输出文件名,这里shell把文件描述符0和1的默认赋值改变为指定的文件,在任何情况下,文件赋值的改变都不是由程序完成的,而是通过shell完成。
管道(百度百科):在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题。
1.限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。
2.读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。
注意:从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。
百度百科举了个例子:用sort命令来排序ps的输出:
$ ps > psout.txt 将ps的输出定向到psout.txt
$ sort psout.txt >pssort.out 用sort命令对psout.txt进行排序,输出定向到pssort.out
如果用管道处理:
$ ps | sort > pssort.out
若要在屏幕中显示:
$ ps | sort | more 将ps的输出定向到sort的输入,将sort的输出定向到more的输入。
详细用法请自行查看百度百科或其他资料,在此不多叙述。
浙公网安备 33010602011771号