cat - 连接文件
cat 命令读取一个或多个文件,然后复制它们到标准输出。你可以使用 cat 来显示 文件而没有分页cat 经常被用来显示简短的文本文件。
案例 | 意义 |
cat ls-output.txt | 读取文件标准输出 |
cat movie.mpeg.0* > movie.mpeg | 连接文件,cat 可以 接受不只一个文件作为参数,所以它也可以用来把文件连接在一起。比方说我们下载了一个 大型文件,这个文件被分离成多个部分(USENET 中的多媒体文件经常以这种方式分离), 我们想把它们连起来。我们能用这个命令把它们连接起来: 因为通配符总是以有序的方式展开,所以这些参数会以正确顺序安排。 |
管道符号
使用管道操作符”|”(竖杠),一个命令的 标准输出可以管道到另一个命令的标准输入:command1 | command2例如:ls -l /usr/bin | less
将ls -l /usr/bin命令的输出内容作为 less命令的输入,最终的运行是less分页的显示ls -l /usr/bin运行的结果内容
排序
管道线经常用来对数据完成复杂的操作。有可能会把几个命令放在一起组成一个管道线。 通常,以这种方式使用的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后 输出它。第一个我们想试验的过滤器是 sort。想象一下,我们想把目录/bin 和/usr/bin 中 的可执行程序都联合在一起,再把它们排序。例如:ls /bin /usr/bin | sort | less
因为我们指定了两个目录(/bin 和/usr/bin),ls 命令的输出结果由有序列表组成, 各自针对一个目录。通过在管道线中包含 sort,我们改变输出数据,从而产生一个 有序列表。
过滤器
uniq 命令(报告或忽略重复行)经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序 列表(详情查看 uniq 手册页),默认情况下,从数据列表中删除任何重复行。所以,为了确信 我们的列表中不包含重复句子(这是说,出现在目录/bin 和/usr/bin 中重名的程序),我们添加 uniq 到我们的管道线中:ls /bin /usr/bin | sort | uniq | less
在这个例子中,我们使用 uniq 从 sort 命令的输出结果中,来删除任何重复行。如果我们想看到 重复的数据列表,让 uniq 命令带上”-d”选项,就像这样: ls /bin /usr/bin | sort | uniq -d | less
WC(字计数)
wc(字计数)命令是用来显示文件所包含的行数,字数和字节数。
grep(打印匹配行)
grep 是个很强大的程序,用来找到文件中的匹配文本。grep 命令格式:grep pattern [file...]
例如:我们想在我们的程序列表中,找到文件名中包含单词”zip”的所有文件
ls /bin /usr/bin | sort | uniq | grep zip
grep 有更方便的选项:”-i”告诉 grep 当执行搜索时忽略大小写(通常,搜索是大小写 敏感的);
”-v”选项会告诉 grep 只打印不匹配的行。
head / tail(打印文件开头部分/结尾部分)
有时候你不需要一个命令的所有输出。可能你只想要前几行或者后几行的输出内容。 head 命令打印文件的前十行,而 tail 命令打印文件的后十行。默认情况下,两个命令 都打印十行文本,但是可以通过”-n”选项来调整命令打印的行数。例如: head -n 5 ls-output.txt 打印头5行数据
tail -n 5 ls_output.txt 打印结尾5行数据
ls /usr/bin | tail -n 5 打印 ls /usr/bin 运行结果的结尾5行数据
tail 有一个选项允许你实时的浏览文件。当观察日志文件的进展时,这很有用,因为 它们同时在被写入。在以下的例子里,我们要查看目录/var/log 里面的信息文件。在 一些 Linux 发行版中,要求有超级用户权限才能阅读这些文件,因为文件/var/log/messages 可能包含安全信息。
例如:tail -f /var/log/messages
使用”-f”选项,tail 命令继续监测这个文件,当新的内容添加到文件后,它们会立即 出现在屏幕上。这会一直继续下去直到你输入 Ctrl-c。
tee(从 Stdin 读取数据,并同时输出到 Stdout 和文件)
tee 程序从标准输入读入数据,并且同时复制数据 到标准输出(允许数据继续随着管道线流动)和一个或多个文件。当在某个中间处理 阶段来捕捉一个管道线的内容时,这很有帮助。这里,我们重复执行一个先前的例子, 这次包含 tee 命令,在 grep 过滤管道线的内容之前,来捕捉整个目录列表到文件 ls.txt:命令:ls /usr/bin | tee ls.txt | grep zip
注释:tee程序(ls 程序管道过来的)获取标准输入(ls /usr/bin程序执行的结果)数据输出到标准输出同时也写入到ls.txt文件中