|
发表于 2002-9-15 22:52:05
|
显示全部楼层
在字符界面下工作-重定向
--何谓重定向
Linux命令在执行时常常期望接收输入数据,命令执行后又期望将产生的数据结果输出。Linux的大部分命令都具有标准的输入/输出设备端口。
-stdin 标准输入设备端口,命令在执行时所要的输入数据通过它来取得。
-stdout标准输出设备端口,命令执行后的输出结果从该端口送出。
-stderr标准错误设备端口,命令执行时的错误信息通过该端口送出。
缺省的标准输出端口和错误端口被指到了控制台的屏幕上,也就是说,输出信息都是通过屏幕显示的;缺省的标准输入端口被指到了控制台的键盘上,即它接收键盘输入的输入。
所谓重定向,就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定,所以重定向分为输出重定向、输入重定向和错误重定向。通常情况下重定向到一个文件。在Shell中,要实现重定向主要依靠重定向符实现,即Shell是检查命令行中有无重定向符来决定是否需要实施重定向。
--重定向符
< 实现输入重定向。输入重定向并不经常使用因为大多数命令都以参数的形式在命令行上指定输入文件的文件名。尽管如此,当使用一个不接受文件名为输入参数的命令,而需要的输入又是在一个已存在的文件里时,你就能用输入重定向解决问题。
<<!……! 实现输入重定向的特例,即here文件
>或>> 实现输出重定向。输出重定向比输入重定向更常用。输出重定向使用户能把一个命令的输出重定向到一个文件里,而不是显示在屏幕上。很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,能把它重定向到一个文件中,稍后再用文本编辑器来打开这个文件。
2> 实现错误重定向
&> 同时实现输出重定向和错误重定向
--使用重定向的例子
1. 将ls命令生成的/tmp目录的一个清单存到当前目录中的dir文件中。
$ ls -l /tmp >dir
2. 将ls命令生成的/etc目录的一个清单以追加的方式存到当前目录中的dir文件中。
$ ls -l /etc >>dir
3. 将/etc/passwd文件的内容作为wc命令的输入。
$ wc < /etc/passwd
4. 将命令随后输入的文本作为wc命令的输入。
$ wc <<!
> This text forms the content of the heredocument ,
> which continues until the end of text delimiter
> !
5. 获得apache软件包的安装文件清单并存入指定的文件。
$ rpm -ql apache > apache.list
6. 用echo命令和输出重定向建立简单的文本文件。
$ echo "lease call me : 65524699">message
7. 利用cat命令、Here文档和输出重定向建立简单的文本文件。
$ cat <<! >mytext
> This text forms the content of the heredocument ,
> which continues until the end of text delimiter
> !
8. 将命令myprogram的错误信息保存在当前目录下的err_file文件中。
$ myprogram 2> err_file
9. 将命令myprogram的输出信息和错误信息保存在当前目录下的output_file文件中。
$ myprogram &> output_file
10. 快速建立MP3播放列表
$ find ~ -name *.mp3 > ~/cd.play.list |
|