shell 的标准输入/输出,分别称为标准输入(standard input), 标准输出(standard output), 以及标准错误输出(standard error).

lz3.1
root@administrator-laptop:~# cat  (cat命令没有指定任何参数,将读取标准输入,返回并写入标准输出)
input                             (来自键盘,标准输入)
input                             (来自显示器,标准输出)
^D                                (Ctrl+D健,结束)

lz3.2
root@administrator-laptop:~# cat /etc/PASSWD
cat: /etc/PASSWD: 没有那个文件或目录  (标准错误输出)

lz3.4
root@administrator-laptop:~# grep -n 'root' < /etc/passwd >root
root@administrator-laptop:~# cat root
1:root:x:0:0:root:/root:/bin/bash
lz3.5
root@administrator-laptop:~# grep -n 'bash' < /etc/passwd | grep -v 'root' >> root
root@administrator-laptop:~# cat root
1:root:x:0:0:root:/root:/bin/bash
24:couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
34:administrator:x:1000:1000:admin,,,:/home/administrator:/bin/bash

以 < 改变标准输入,lz3.4/3.5中 重定向标准输入来自 /etc/passwd 文件,
以 > 改变标准输出,重定向标准输出到 root 文件,这里需注意的是如果root文件不存在时会新建一个, 如果root文件已经存在了将会被覆盖掉,
以 | 建立管道,第一个命令的标准输出(grep -n 'bash' < /etc/passwd),变成( | ) 第二个命令的标准输入(grep -v 'root' >> root), 管道的好处是,你可以使用多个命令来完成复杂的任务,通过管道每个命令标准输出将成为下一个命令的标准输入,
以 >> 追加标准输出到文件末尾,如同">"一样如果root文件不存在时会新建一个,如果root文件已经存在了则追加数据到文件末尾,而不是覆盖文件。