• cat -连接文件
• sort -排序文本行
• uniq -报道或省略重复行
105
• grep -打印匹配行
• wc -打印文件中换行符,字,和字节个数
• head -输出文件第一部分
• tail - 输出文件最后一部分
标准输入,输出,和错误
I/O 重定向允许我们可以更改输出走向和输入来向。一般地,输出送到屏幕,输入来自键
盘,但是通过 I/O 重定向,我们可以改变输入输出方向。
重定向标准输出
ls -l /usr/local > ls-output.txt
把目录换成一个不存在的目录
文件长度成为零!这是因为,当我们使用 “>” 重定向符来重定向输出结果时,目标文件总
是从开头被重写。因为我们 ls 命令没有产生运行结果,只有错误信息,重定向操作开始重写文
件,然后由于错误而停止,导致文件内容删除。
事实上,如果我们需要删除一个文件内容(或者创建一个新的空文件),可以使用这样的技巧:
把重定向结果追加到文件内容后面,而不是从开头重写文件?为了这个目的,我们使用 “>>” 重定向符
ls -l /usr/local >> ls-output.txt
重定向标准错误
标准输入,输出和错误, shell 内部参考它们为文件描述符 0, 1 和 2
ls -l /bin/usr 2> ls-error.txt
重定向标准输出和错误到同一个文件
方法一:ls -l /bin/usr > ls-output.txt 2>&1
方法二:现在的 bash 版本提供了第二种方法,更精简合理的方法来执行这种联合的重定向
处理不需要的输出
通过重定向输出结果到一个特殊的叫做 “/dev/null” 的文件。这个文件是系统设备,叫做位存储桶,它可以接受输入,并且对输入不做任何处理。为了隐瞒命令错误信息,我们这样做
ls -l /bin/usr 2> /dev/null
cat -连接文件
cat 命令读取一个或多个文件,然后复制它们到标准输出 cat [file]
可以使用 cat 来显示文件而没有分页
将会显示文件 ls-output.txt 的内容。cat 经常被用来显示简短的文本文件。因为 cat 可以接
受不只一个文件作为参数,所以它也可以用来把文件连接在一起。比方说我们下载了一个大型
文件,这个文件被分离成多个部分( USENET 中的多媒体文件经常以这种方式分离),我们想
把它们连起来。如果文件命名为:
movie.mpeg.001 movie.mpeg.002 ... movie.mpeg.099
we could join them back together with this command:
我们能用这个命令把它们连接起来:
cat movie.mpeg.0* > movie.mpeg
输入不带参数的 “cat” 命令 ,
如果 cat 没有给出任何参数,它会从标准输入读入数据,因为标准输入,默认情况下,连接到键盘。
由于文件名参数的缺席, cat 复制标准输入到标准输出,所以我们看到文本行重复出现。我
们可以使用这种行为来创建简短的文本文件
重定向标准输入
管道线
命令可以从标准输入读取数据,然后再把数据输送到标准输出,命令的这种能力被一个shell 特性所利用,这个特性叫做管道线。使用管道操作符 “|”(竖杠),一个命令的标准输出可以管道到另一个命令的标准输入:
command1 | command2
用 less 来一页一页地显示任何命令的输出,命令把它的运行结果输送到标准输出
ls -l /usr/bin | less
过滤器
把目录/bin 和/usr/bin 中的可执行程序都联合在一起,再把它们排序,然后浏览执行结果
ls /bin /usr/bin | sort | less