' - '如果代表stdin有特定的名字吗?

Gol*_*den 5 bash command-line stdin pipe

在几个命令行应用程序中,如果将stdin管道输入到它们中,则需要提供-字符而不是输入文件.

样品:

$ foo | bar -
Run Code Online (Sandbox Code Playgroud)

现在我想知道:-在这个上下文中使用时,这个角色是否有正式的特殊名称,例如虚线stdin算子或类似的东西?如果是这样,哪一个?

我的问题的背景是我想编写一个检测这个字符的函数,然后相应地处理stdin,而不是将参数解析为数组,我想知道该函数调用什么.

n. *_* m. 2

POSIX 标准没有为这种-字符用法使用任何特殊名称。它说:

对于使用操作数来表示要打开以进行读取或写入的文件的实用程序,“-”操作数应仅用于表示标准输入(或标准输出,当从上下文中清楚地看出正在指定输出文件时)或文件名为-.

进而

如果 POSIX.1-2008 的 Shell 和实用程序卷中描述的符合这些准则的实用程序需要接受或不接受操作数“-”来表示标准输入或输出,则此用法在操作数中进行了解释部分。否则,如果这样的实用程序使用操作数来表示文件,则操作数“-”是代表标准输入(或标准输出)还是代表名为 - 的文件是由实现定义的。

手册页似乎也没有使用任何特殊名称:

如果未指定文件,或者给出了文件“-”,则grep搜索标准输入。

所以看来你必须发明自己的名字。