在 Newham 和 Rosenblatt 合着的《Learning the Bash shell》第三版中,第 15 页有这样的评论:
如果在省略文件名参数时特定 UNIX 实用程序不接受标准输入,请尝试使用破折号 (0) 作为参数。某些 NIX 系统将标准输入作为文件提供,因此您可以尝试提供文件 /dev/stdin 作为输入文件 argumnet。
最后一句我不清楚 - “以文件形式提供标准输入”是什么意思?
/dev/stdin
“重复”创建系统中命名的文件不是很危险吗(我个人使用Ubuntu 16.04)。
顺便说一句,我遇到过类似的案例这个帖子。
答案1
这不是关于创建/dev/stdin
,而是关于使用它:您指定/dev/stdin
要与默认情况下不支持标准输入(或使用-
)的任何命令一起使用的文件,以使其无论如何都使用其标准输入。
因此
cat
cat -
cat /dev/stdin
all 都cat
从其标准输入中读取(尽管使用 时的方式略有不同/dev/stdin
,具有不同的文件描述符,这意味着它并非在所有情况下都是等效的)。我不是创造 /dev/stdin
,我使用预先存在的设备节点作为 的参数cat
。