Linux中Shell重定向

网友投稿 749 2022-05-29

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存的是错误输出

案例分析

Linux中Shell重定向

> 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

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

Linux Shell

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB(DWS)修改日志级别
下一篇:ansible模块之file模块和mount模块(九)
相关文章