1.cmd1 | cmd2 管道符,将cmd1的标准输出作为cmd2的标准输入
2.>filename 将标准输出写到filename文件中,若该文件已存在,则将原来的内容覆盖掉
[root@nn shell]# ls
a b input scr.awk
[root@nn shell]# cat >file1
the world is wonderful![root@nn shell]# #按ctrl+d 结束
[root@nn shell]# cat file1
the world is wonderful![root@nn shell]#
当cat后面没有参数的时候,cat命令的输入是标准输入,然后将标准输入写入到文件中
3. <filename 将文件filename的内容读入到标准输入之中
[root@nn shell]# cat scr.awk
#!/bin/awk -f
/^$/{print "THis is a blank line!"}
[root@nn shell]# wc -l scr.awk
2 scr.awk
[root@nn shell]# wc -l <scr.awk
2
[root@nn shell]#
4.>>filename 将标准输出写到filename文件中,若filename存在,则将标准输出追加到filename之后
5. >|filename 即使noclobber 选项已经开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉
6.n>|filename
7.n>filename 将FD为n的输出写到文件filename中
[root@nn shell]# ls z*
ls: 无法访问z*: 没有那个文件或目录
[root@nn shell]# ls z* >filename2
ls: 无法访问z*: 没有那个文件或目录
[root@nn shell]# cat filename2
[root@nn shell]# ls z* 2>filename2 #将标准错误重定向到filename2文件中
[root@nn shell]# cat filename2
ls: 无法访问z*: 没有那个文件或目录
[root@nn shell]#
8.n<filename 将文件filename的内容读入到FD n中
9.n>>filename 将fd为 n的输出写到filename文件中,若filename存在,则将标准输出追加到filename之后
10. <<delimiter 称为分解符delimiter
shell将分解符delimiter之后直至下一个delimiter之前的所有内容作为输入
cat >> filename3 <<EOF
usr/$LIBDIR/gtk-2.0/modules/libatk-bridge.so
usr/$LIBDIR/gtk-2.0/modules/libgail.so
usr/libexec/bonobo-activation-server
usr/libexec/at-spi-registryd
usr/$LIBDIR/bonobo/servers
usr/libexec/gconfd-2
usr/$LIBDIR/GConf/2/libgconfbackend-xml.so
usr/$LIBDIR/python?.?/site-packages/gtk-2.0/atk.so
usr/$LIBDIR/python?.?/site-packages/gtk-2.0/gconf.so
usr/$LIBDIR/python?.?/site-packages/atspi.so
usr/lib/python?.?/site-packages/dogtail/*.py
EOF
11.-<<delimiter 这样输入文本行所有开头的Tab键 都会北删除,但是开头的空格键不会被删除