linux shell命令之IO重定向符号

cat和> 符号结合成简易的文档编辑器,当cat命令的输入不加
任何参数时,cat命令的输入是标准输入,即键盘输入

cat > newfile
Proposed by parkalloy #按Ctrl+D 组合键结束文件编辑

cat newfile
Proposed by parkalloy

cmd1 | cmd2 管道符,将cmd1的标准输出作为cmd2的标准备输入
>filename 将标输出写到filename
<filename 将文件filename的内容读入到标准输入中
>>filename 将标输出写到filename中, 若filename文件 已存在,
则将标准输出追加到filename已有的内容中
>|filename 即使noclobber选项已开启,仍然强制将标准输出写到
文件filename中,即将filename文件覆盖
n>| filename 即使noclobber选项已开启,仍然强制将FD为n的输出写到filename
中,即将filename文件覆盖
n> filename 将FD为n的输出写到文件filename中
n< filename 将文件filename的内容读入到FD n中
n>> filename 将FD为n的输出写到filename中, 若filename文件 已存在,
则将标准输出追加到filename已有的内容中
<<delimiter 参考下面的例子
错误的标准输出的例子如下:
ls z* #显示该目录下以z开头的文件
ls: cannot access 'z*': No such file or directory

ls z* > newfile #将输出重定向到newfile ,但结果仍然和上一条命令一样
ls: cannot access 'z*': No such file or directory
cat newfile

ls z* 2> newfile #将stderr重定向到newfile,不在输出错误信息
cat newfile
ls: cannot access 'z*': No such file or directory

cat newfile
ls: cannot access 'z*': No such file or directory

wc -l newfile #wc开始执行时,将-l和newfile作为两个输入参数,newfile指明了需要行计数的文件名
1 newfile
wc -l < newfile #Shell识别出输入重定向符号<, 并判断<符号后面的字符串表示重定向数据源文件的名称,
Shell命令行将“吞”掉<newfile,启动wc命令,将它的标准输入重定向到newfile文件,并
经给wc命令传递一个参数-1,因此,wc命令并不知道newfile的存在,国为wc命令只管从
标准输入中读取数据,所以只打印行数1,并不打印文件名称
1

delimiter用法之一
cat >> hfile << CLOUD
> haddoop is developed by Yahoo
> Google also develops GFS and MapReduce
> CLOUD #两个delimiter之间的内容作为输出内容

cat hfile
haddoop is developed by Yahoo
Google also develops GFS and MapReduce

delimiter用法之二
-<<delimiter,即在<<符号加上一个负号,这样输入文本行所有开头的Tab键
都会补删除

cat > hfile -<< CLOUD
> Google also develops GFS and MapReduce
>
a.out MapClearTest.java test1.c
append.sed modify.sed test1.cpp
AREACODE.db mysql_test.c test.c
argv.awk newfile testNet.c
awk.dll.gz output test_sockpair
calare.sh pass.awk test_sockpair.c
CARGO3.db PEO.dbaa timedread.sh
count_word.sh PEO.dbab timer1
doubleparenthese.sh PEO.dbac timer1.c
FILE1 PROFESSOR.db timer2
FILE2 REPEAT timer2.c
findphone.awk scr2.awk timer3
hfile scr.awk timer3.cpp
indirectapp1.sh sever.c traverseFile
indirect.sh sever.o traverseFile.c
insert.sed sever.s vartype.sh
llaa sturecord WORDLIST
llab TEACHER1.db xaa
llac TEACHER.db xab
MapClearTest.class TEACHER_HOBBY.db xac
> Hadoop is developed by Yahoo
> CLOUD
cat hfile
Google also develops GFS and MapReduce
Hadoop is developed by Yahoo #发现第二行空格未被删除,Tab键被删除

posted @ 2021-04-01 10:42  zhudaheng123  阅读(254)  评论(0)    收藏  举报