shell中>,>>,<,<<这四个符号都用来重定向。
其中,>,>>是用于重定向输出;
<,<<用于重定向输入。
1. >的用法
常见用法,将错误输出重定向到/dev/null文件,起到屏蔽错误信息输出的作用
#由于没有xxx这个文件,所以会报错
root@ubuntu:~# ls xxx
ls: 无法访问xxx: 没有那个文件或目录
#由于已经将错误输出重定向,所以即使没有xxx这个文件也不会报错
root@ubuntu:~# ls xxx 2>/dev/null
注意,>两端不能有空格。
如果想要将标准输出也屏蔽,那就
root@ubuntu:~# touch aa #创建文件aa
root@ubuntu:~# ls aa
aa
#将错误输出重定向/dev/null,将标准输出重定向到错误输出。这样1和2都重定向到了/dev/null。
root@ubuntu:~# ls aa 2>/dev/null 1>&2
#还有一种等价方法是
root@ubuntu:~# ls aa &>/dev/null
2. >>的用法
>>和>的区别是,>会将右侧文件的内容清空再写入。而>>不会清空,而是追加写入。
root@ubuntu:~# ls aa &>aa #>将aa的内容清空了,然后将新的内容写进aa
root@ubuntu:~# cat aa
aa
root@ubuntu:~# ls aa &>>aa #>>没有清空aa的内容,并追加写入新的内容
root@ubuntu:~# cat aa
aa
aa
3. <的用法
<会重定向标准输入,可以将标准输入重定向到某个文件。这样就可以读取某个文件的内容来代替键盘输入了。
root@ubuntu:~# echo "from file c" > c
root@ubuntu:~# cat c
from file c
# d < c表示将文件c中的内容输入到文件d中
root@ubuntu:~# cat > d < c
root@ubuntu:~# cat d
from file c
#如果没有 < c的话,就要从键盘输入
root@ubuntu:~# cat > d
input from keyboard#通过键盘敲出这几个字母
#然后按ctrl+d结束本次输入
root@ubuntu:~# cat d
input from keyboard
4. <<的用法
<<代表结束输入。使用<<指定结束输入标志,就可以不用手动键入ctrl+d来结束输入
# <<"eof" 表明遇到"eof"字符串时结束本次输入
root@ubuntu:~# cat > bb <<"eof"
> line1
> line2
> eof #键入eof并敲击回车后,本次输入结束
root@ubuntu:~# cat bb
line1
line2