Fish shell 来自 subshell 输出的输入重定向
Fish shell input redirection from subshell output
当我想 运行 Wireshark 在本地显示数据包捕获 运行ning 在另一台机器上时,这适用于 bash,使用来自子[的输出的输入重定向=21=]:
wireshark -k -i <(ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0")
据我所知,fish shell 上类似行为的语法是相同的,但是当我 运行 在 fish 上执行该命令时,我在终端上获得了 Wireshark 输出,但可以没看到 Wireshark window.
有没有我遗漏的东西?
您在 bash 中使用的是 process substitution(<()
语法)。它是一种 bash 特定的 语法(尽管 zsh
采用了相同的语法及其自己的 =()
)。
fish
does have process substitution 在不同的语法下 ((process | psub)
)。例如:
wireshark -k -i (ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0" | psub)
bash | equivalent in fish
----------- | ------------------
cat <(ls) | cat (ls|psub)
ls > >(cat) | N/A (need to find a way to use a pipe, e.g. ls|cat)
<()
的 fish 等价物不太适合此用例。您有什么理由不能使用这种更简单、更便携的公式吗?
ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0" | wireshark -k -i -
当我想 运行 Wireshark 在本地显示数据包捕获 运行ning 在另一台机器上时,这适用于 bash,使用来自子[的输出的输入重定向=21=]:
wireshark -k -i <(ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0")
据我所知,fish shell 上类似行为的语法是相同的,但是当我 运行 在 fish 上执行该命令时,我在终端上获得了 Wireshark 输出,但可以没看到 Wireshark window.
有没有我遗漏的东西?
您在 bash 中使用的是 process substitution(<()
语法)。它是一种 bash 特定的 语法(尽管 zsh
采用了相同的语法及其自己的 =()
)。
fish
does have process substitution 在不同的语法下 ((process | psub)
)。例如:
wireshark -k -i (ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0" | psub)
bash | equivalent in fish
----------- | ------------------
cat <(ls) | cat (ls|psub)
ls > >(cat) | N/A (need to find a way to use a pipe, e.g. ls|cat)
<()
的 fish 等价物不太适合此用例。您有什么理由不能使用这种更简单、更便携的公式吗?
ssh user@machine "sudo dumpcap -P -w - -f '<filter>' -i eth0" | wireshark -k -i -