【问题标题】:What is the meaning of 2 in 2> /dev/null2 in 2是什么意思> /dev/null
【发布时间】:2016-11-21 14:57:15
【问题描述】:

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

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

我可以看到它正在将输出重定向到空设备,但是 2 是什么意思?

【问题讨论】:

    标签: bash


    【解决方案1】:

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

    这意味着简单地说:忽略命令的错误输出。例如,如果kill 无法停止进程,因为它不存在,或者因为当前用户没有这样做的权限,它会在stderr 上打印消息。通过将stderr 重定向到/dev/null,您可以有效地抑制这些消息。

    【讨论】:

      【解决方案2】:

      > 前面的数字告诉 shell 将哪个 文件描述符 重定向到文件中。如果您不设置该数字,则默认为 1 - 这与 standard output 相同,简称 stdout,大多数命令会将其输出写入其中。但是,终端中的程序实际上默认有两个输出通道,另一个是标准的错误stderr 的目的是允许将错误发送到终端,即使标准输出被重定向到文件或管道;他们都默认进入终端。但是你可以根据需要重定向stderr,这就是这段代码所做的,因为stderr的文件描述符编号是2。

      【讨论】:

        【解决方案3】:

        我认为是对 STDERR 的重定向。 所有错误都重定向到 /dev/null

        【讨论】:

        • 这不是重定向“到”STDERR。
        猜你喜欢
        • 2012-05-17
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多