2016-11-21 32 views
2

在此以下bash脚本我有什么不明白的2种手段:什么是2 2>/dev的意义/空

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

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

回答

4

Bash中的N>语法表示将文件描述符重定向到其他位置。 2stderr的文件描述符,此示例将其重定向到/dev/null

这是什么意思,简单来说:忽略命令的错误输出。例如,如果kill无法停止进程,因为它不存在,或者因为当前用户没有权限执行此操作,则它将在stderr上打印消息。通过将stderr重定向到/dev/null,可以有效地抑制这些消息。

-1

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

+1

它不是一个重定向到“STDERR”。 – janos

3

>前面的一个数字告诉文件描述符重定向到文件其中壳。如果关闭该数字,则默认为1 - 与标准输出,标准输出相同,其中大多数命令都将输出写入其中。但是,终端中的程序实际上默认有两个输出通道,另一个是标准错误stderr的作用是允许即使将标准输出重定向到文件或管道时也能将错误发送到终端;他们都默认去终端。但是如果你愿意的话,你可以重定向stderr,这就是这个代码所做的事情,因为stderr的文件描述符号是2.