重定向

  • cat - 连接文件

  • sort - 排序文本行

  • uniq - 报道或省略重复行

  • grep - 打印匹配行

  • wc - 打印文件中换行符,字,和字节个数

  • head - 输出文件第一部分

  • tail - 输出文件最后一部分

标准输入,输出,和错误

比方说 ls,实际上把他们的运行结果 输送到一个叫做标准输出的特殊文件(经常用 stdout 表示),而它们的状态信息则送到另一个 叫做标准错误的文件(stderr)。默认情况下,标准输出和标准错误都连接到屏幕,而不是 保存到磁盘文件。除此之外,许多程序从一个叫做标准输入(stdin)的设备得到输入,默认情况下, 标准输入连接到键盘。一般地,输出送到屏幕,输入来自键盘, 但是通过 I/O 重定向,我们可以改变输入输出方向。

重定向方式:

> :输出重定向,会覆盖掉输出文件的内容
>>:为可追加内容的重定向符号
2>:标准错误输出。
< :输入从定向。
|:管道符,利用管道线协同命令之间的工作。

如果我们需要删除一个文件内容(或者创建一个 新的空文件),可以使用这样的技巧:

cbwleft@cbwleft-VirtualBox:~$ > a.txt

cat - 连接文件

在大多数情况下,你可以认为 cat 命令相似于 DOS 中的 TYPE 命令。你可以使用 cat 来显示 文件而没有分页。

 cat 没有给出任何参数,它会从标准输入读入数据。输入 Ctrl-d(按住 Ctrl 键同时按下”d”),来告诉 cat,在标准输入中, 它已经到达文件末尾(EOF)

cbwleft@cbwleft-VirtualBox:~$ cat
the quick brown fox jumps over a lazy dog
the quick brown fox jumps over a lazy dog

由于文件名参数的缺席,cat 复制标准输入到标准输出,所以我们看到文本行重复出现。 我们可以使用这种行为来创建简短的文本文件。

cbwleft@cbwleft-VirtualBox:~$ cat >a.txt
The five boxing wizards jump quickly.

看一下运行结果,我们使用 cat 来复制文件内容到 标准输出:

cbwleft@cbwleft-VirtualBox:~$ cat a.txt
The five boxing wizards jump quickly. 

管道线

 使用管道操作符”|”(竖杠),一个命令的 标准输出可以管道到另一个命令的标准输入:

cbwleft@cbwleft-VirtualBox:~$ ls -l /|less

过滤器

管道线经常用来对数据完成复杂的操作。有可能会把几个命令放在一起组成一个管道线。 通常,以这种方式使用的命令被称为过滤器。

添加 wc 到管道线来统计数据,是个很便利的方法。查看我们的有序列表中程序个数, 我们可以这样做:

cbwleft@cbwleft-VirtualBox:~$ ls /bin /usr/bin | sort | uniq | wc -l
1566

比如说,我们想在我们的程序列表中,找到文件名中包含单词”zip”的所有文件:

cbwleft@cbwleft-VirtualBox:~$ ls /bin /usr/bin | sort | uniq | grep zip
bunzip2
bzip2
bzip2recover
...

grep 有-对方便的选项:”-i”导致 grep 忽略大小写当执行搜索时(通常,搜索是大小写 敏感的),”-v”选项会告诉 grep 只打印不匹配的行。

head / tail - 打印文件开头部分/结尾部分

head 命令打印文件的前十行,而 tail 命令打印文件的后十行。默认情况下,两个命令 都打印十行文本,但是可以通过”-n”选项来调整命令打印的行数。

tail 有一个选项-f允许你实时的浏览文件。当观察日志文件的进展时,这很有用

posted on 2015-11-21 17:43  cbwleft  阅读(77)  评论(0)    收藏  举报