>/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中。所以最终结果将是:标准错误打印到屏幕,而标准输出不打印到屏幕。

相关推荐
王正南8 小时前
kali-linux 虚拟机连接安卓模拟器
android·linux·运维·虚拟机连接模拟器·安卓模拟器,linux虚拟机
吳所畏惧8 小时前
Linux环境/麒麟V10SP3下离线安装Redis、修改默认密码并设置Redis开机自启动
linux·运维·服务器·redis·中间件·架构·ssh
yueguangni8 小时前
sysstat 版本 10.1.5 是 CentOS 7 的默认版本,默认情况下确实不显示 %wait 字段。需要升级到新版sysstat
linux·运维·centos
萧曵 丶10 小时前
Linux 业务场景常用命令详解
linux·运维·服务器
豆是浪个10 小时前
Linux(Centos 7.6)命令详解:ps
linux·windows·centos
Run_Teenage11 小时前
Linux:深刻理解缓冲区
linux
youxiao_9011 小时前
kubernetes 概念与安装(一)
linux·运维·服务器
凡梦千华11 小时前
logrotate日志切割
linux·运维·服务器
wdfk_prog11 小时前
[Linux]学习笔记系列 -- [fs][proc]
linux·笔记·学习
拜托啦!狮子12 小时前
安装和使用Homer(linux)
linux·运维·服务器