shell脚本中1>/dev/null后接2>&1语法的作用是什么?
Shell 重定向语法
2>&1详解 首先明确Shell中三个默认的标准文件描述符:
- 0:标准输入(stdin),默认接收键盘输入
- 1:标准输出(stdout),默认输出到终端屏幕
- 2:标准错误(stderr),默认输出到终端屏幕
代码行拆解
你给出的代码mountpoint /mnt/share 1>/dev/null 2>&1可以拆分两部分理解:
1>/dev/null:把标准输出(文件描述符1)的内容重定向到/dev/null,/dev/null是Linux系统的空设备文件,所有写入它的内容都会被直接丢弃,不会保存也不会输出到终端。2>&1:把标准错误(文件描述符2)的输出重定向到和标准输出(文件描述符1)相同的位置。
问题直接解答
- 它不会存储任何内容:因为此时标准输出已经指向了
/dev/null,所以标准错误的内容也会被送到/dev/null直接丢弃,不会写入任何文件或缓存。 - 作用:让
mountpoint命令运行过程中产生的所有正常输出、错误信息都不会在终端打印,也不会留下日志,通常用于脚本中不需要显示命令执行输出、只关心命令执行返回值的场景——你给出的这行代码大概率是后续会判断mountpoint的返回值,确认/mnt/share是不是挂载点,不需要命令本身的输出干扰脚本运行的展示效果。
补充常见误区
注意重定向的顺序不能写反,如果写成2>&1 1>/dev/null是无效的:因为2>&1执行时标准输出还指向终端,所以标准错误会先绑定到终端输出,之后再把标准输出改到/dev/null,错误信息还是会打印到屏幕上,达不到屏蔽所有输出的效果。
内容的提问来源于stack exchange,提问作者Raul Chiarella
相关产品推荐
相关产品推荐

