2 in 2> / dev / null的含义是什么

dag*_*da1 5 bash

在下面的bash脚本中,我不明白2的含义:

function kill_process()
{
   kill -9 $(lsof -i:$1 -t) 2> /dev/null
}
Run Code Online (Sandbox Code Playgroud)

我可以看到它会将输出重定向到null设备,但是2表示什么呢?

Mar*_*eed 7

前面的数字>告诉 shell 将哪个文件描述符重定向到该文件。如果您保留该数字,则它默认为 1 - 这与标准输出(简称stdout)相同,大多数命令将其输出写入其中。然而,终端中的程序实际上默认有两个输出通道,另一个是标准错误stderr的目的是允许将错误发送到终端,即使标准输出重定向到文件或管道;默认情况下,它们都会进入终端。但是如果您愿意,您可以重定向 stderr,这就是这段代码正在做的事情,因为 stderr 的文件描述符编号是 2。


Sto*_*ica 5

N>Bash中的语法意味着将文件描述符重定向到其他地方。2是的文件描述符stderr,本示例将其重定向到/dev/null

简单来说,这意味着什么:忽略命令的错误输出。例如,如果kill由于某个进程不存在而无法停止该进程,或者由于当前用户没有权限停止该进程,则它将在上打印消息stderr。通过重定向stderr/dev/null,您可以有效地禁止显示这些消息。