该命令在 Bash 和 Zsh 中运行良好:
expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg xorg; expac -l '\n' '%E' base; } | sort -u)) | sort -n
但在 Fish 中,它会导致这个错误:
fish: Invalid redirection target:
comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg xorg; expac -l '\n' '%E' base; } | sort -u)
^~~~~~~~~~~~~~~~~~~~~^
in command substitution
fish: Unknown error while evaluating command substitution
expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg xorg; expac -l '\n' '%E' base; } | sort -u)) | sort -n
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
这是什么错误?以及如何修复该命令以在 Fish 中工作?谢谢!
答案1
谢谢穆鲁以及后来错误的描述,我找到了答案。命令中的两件事需要更改才能正常工作:
- Fish 不支持 <(),而应该使用 '| psub'。
- Fish 不支持“{ ... }”进行分组命令,应使用“begin;” ...;结尾'。
所以正确的命令是:
expac -H M "%011m\t%-20n\t%10d" $(comm -23 (pacman -Qqen | sort | psub) (begin; pacman -Qqg xorg; expac -l '\n' '%E' base; end | sort -u | psub)) | sort -n