Linux中Shell重定向
【摘要】 【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是 0,1,2 。& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。> 默认为标准输出重定向,与 1> 相同1>&2 意思是把标准输出重定向到标准...
【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是 0,1,2 。
&
是一个描述符,如果1或2前不加&,会被当成一个普通文件。>
默认为标准输出重定向,与1>
相同1>&2
意思是把标准输出重定向到标准错误.2>&1
意思是把标准错误输出重定向到标准输出。&>filename
意思是把标准输出和标准错误输出都重定向到文件filename中.>&2
即1>&2
也就是把结果输出到和标准错误一样
/dev/null
是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉
标准输出和错误输出
> ls
rumenz.txt
> ls rumenz.txt 1.txt
ls: 1.txt: No such file or directory
rumenz.txt
- 由于
1.txt
不存在,所以ls: 1.txt: No such file or directory
就是错误输出就是2。 rumenz.txt
文件是存在的,所以rumenz.txt
就是标准输出。就是1。
把上述的标准输出和错误输出重定向到文件
> ls rumenz.txt 1.txt 1>out.log 2>err.log
> cat out.log
rumenz.txt
> rumenz cat err.log
ls: 1.txt: No such file or directory
out.log
存的是标准输出err.log
存的是错误输出
案例分析
> ls rumenz.txt 1.txt > out.txt
ls: 1.txt: No such file or directory
> cat out.txt
rumenz.txt
由于只重定向了标准输出,所以
out.txt
文件只有标准输出
> ls rumenz.txt 1.txt > out.log 1>&2
ls: cannot access 1.txt: No such file or directory
rumenz.txt
> cat out.log
> out.log
将标准输出重定向到文件,但是1>&2
将标准输出重定向到了错误输出,所以out.log
里面什么也没有.
> ls rumenz.txt 1.txt > out.txt 2>&1
> cat out.txt
ls: cannot access 1.txt: No such file or directory
rumenz.txt
> out.log
将标准输出重定向到文件,但是2>&1
将错误输出重定向到标准输出,所以out.log
里面既有正常的输出也有错误的输出.
/dev/null
/dev/null
:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
> rm -f $(find / -name rumenz) &> /dev/null
原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html
微信公众号:入门小站
【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)