我无法-
在管道 bash 命令的上下文中找到该角色的名称。
- 角色叫什么
-
? - 我可以用脚本更易读的内容替换它吗?
命令示例:
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
页面,看看您正在使用的任何工具是否支持此习惯用法。