>/dev/null 2>&1

>与>>

在Linux和其他类Unix系统中,>和>>是用于重定向输出的操作符,用于将命令的输出发送到文件而不是屏幕上。

>:

> :将命令的标准输出重定向到指定文件。如果文件不存在,则会创建该文件;如果文件已存在,则会先清空文件内容,然后再写入命令的输出结果。

例如,将ls命令的输出重定向到file.txt文件中:

bash 复制代码
ll shell.sh > file.txt

>>:

>>:将命令的标准输出追加到指定文件的末尾。如果文件不存在,则会创建该文件;如果文件已存在,则会将命令的输出追加到文件末尾。

例如,将ls命令的输出追加到file.txt文件末尾:

bash 复制代码
ll shell.sh >> file.txt

文件描述符

在Unix和类Unix系统中,文件描述符是一个非负整数,用于唯一标识一个打开的文件。每个进程在启动时会自动打开三个文件描述符:

  • 标准输入(stdin,文件描述符为0):通常从键盘读取输入。
  • 标准输出(stdout,文件描述符为1):通常输出到屏幕。
  • 标准错误(stderr,文件描述符为2):通常输出错误消息到屏幕。

1(stdout)

2(stderr)

&>

&>是一种将标准输出和标准错误输出都重定向的简写方式,在许多Unix和Linux系统中都支持这种语法。具体来说,&>的作用是将标准输出和标准错误输出都重定向到指定位置。

/dev/null

/dev/null 是一个特殊的设备文件,在类Unix系统中用于丢弃数据。写入 /dev/null 的数据会被丢弃,读取 /dev/null 则会立即返回文件结束符(EOF)。这个设备在一些场景下用于丢弃不需要的输出,或者用于测试目的。

&1

在Unix和类Unix系统中,&1表示将文件描述符1的输出复制到当前位置。在2>&1这样的表达中,2表示标准错误输出,&1表示将标准错误输出复制到标准输出的位置。

>/dev/null 2>&1

实际上等同于1>/dev/null 2>/dev/null ,默认情况下就是1,标准输出,所以一般都省略。>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。2>&1 ,接着标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。所以就成了标准输出和标准错误都重定向到了/dev/null。

2>&1 >/dev/null

2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。>/dev/null,将标准输出1重定向到/dev/null中。所以最终结果将是:标准错误打印到屏幕,而标准输出不打印到屏幕。

相关推荐
枫叶丹434 分钟前
【在Linux世界中追寻伟大的One Piece】进程信号
linux·运维·服务器
刻词梨木37 分钟前
ubuntu中挂载点内存不足,分配不合理后使用软链接的注意事项
linux·运维·ubuntu
灯火不休ᝰ2 小时前
[win7] win7系统的下载及在虚拟机中详细安装过程(附有下载文件)
linux·运维·服务器
powerfulzyh5 小时前
Ubuntu24.04远程开机
linux·ubuntu·远程工作
ulimpid5 小时前
Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)
linux·ubuntu·command
HHoao5 小时前
Ubuntu启动后第一次需要很久才能启动GTK应用问题
linux·运维·ubuntu
小灰兔的小白兔5 小时前
【Ubuntu】Ubuntu常用命令
linux·运维·ubuntu
GFCGUO5 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
winds~5 小时前
ubuntu中软件的进程管理-结束软件运行
linux·运维·ubuntu
阳光不锈@6 小时前
麒麟桌面系统安装和配置Node.js
linux·麒麟系统安装node.js