当读取由 null 完成时,`< /dev/null ` 究竟是什么?

Far*_*ron 5 unix ffmpeg

'> /dev/null'是非常常见的语法,这不是一个新概念;但是,我来到了这个脚本,无法弄清楚'< /dev/null'尤其是 FFMpeg背后的逻辑。

我写了几十个处理FFMpeg的脚本,我发现为了让脚本本身成功调用和执行FFMpeg,< /dev/null在ffmpeg的命令行末尾添加' '。例如:

ffmpeg -i $INPUT -c:v copy -c:a copy output.mp4 < /dev/null
Run Code Online (Sandbox Code Playgroud)

但是如果我没有在命令末尾添加那个 sytnax,脚本就不能将执行“推送”到 FFMpeg。>对于所有 null、stdout、stdin,当谈到“写入”时,我理解了整个概念,但是...read通过 null ?挠头

那么,究竟是< /dev/null什么?

Tho*_*key 5

对于许多系统,您可以查阅特殊设备的手册页。例如,Linux null(4)文档:

从 /dev/null 读取总是返回文件结尾

FreeBSD null(4)有不同的说法:

空设备像任何普通(和愿意)文件一样接受和读取数据 - 但将其丢弃。空设备的长度始终为零。

这不太清楚。Solaris null(7)

从空特殊文件读取总是返回 0 字节。

/dev/null当脚本安抚想要从其标准输入读取的程序时,您会在脚本中看到重定向,但脚本不会提供任何数据。例如,如果它没有被重定向,程序可能会等待键盘输入。