文件参数中的“-”是什么意思?

文件参数中的“-”是什么意思?

我无法-在管道 bash 命令的上下文中找到该角色的名称。

  1. 角色叫什么-
  2. 我可以用脚本更易读的内容替换它吗?

命令示例:

echo -ne "my command" | socat - /dev/somefile

答案1

这里这-不是一个bash功能,而是一个socat功能。根据man socat

ADDRESS SPECIFICATIONS
...
For some keywords there ex‐ist synonyms (’-’ for STDIO, TCP for TCP4).
...
EXAMPLES
       socat - TCP4:www.domain.org:80

              transfers data between STDIO (-) and a TCP4 connection to port  80  of  host  www.do‐
              main.org. This example results in an interactive connection similar to telnet or net‐
              cat.  The  stdin terminal parameters are not changed, so you may close the relay with
              ^D or abort it with ^C.

所以这-代表 STDIO。
socat以前从未使用过,但我可以猜测通过socat - TCP4:www.domain.org:80您可以www.domain.org:80用键盘进行交谈 - 您输入一些内容,您输入的内容会发送到www.domain.org:80,并且您从该地址收到的内容会打印在您的终端上。

-在其他一些程序中也可以看到,主要代表 stdin。

答案2

-字符通常可互换地称为“破折号”、“连字符”或“减号”。我听说很多人将其称为“tac”或“tack”。

它用作代替文件名的参数通常意味着使用标准输入或标准输出。例如,cat - > myfile将连接您发送到标准输入的任何内容(即通过管道输入或在终端上键入)将被放置到一个新创建的名为myfile.

然而,这并不普遍。请务必检查该man页面,看看您正在使用的任何工具是否支持此习惯用法。

相关内容