我决定尝试 Fish shell,但我在使用一些别名时遇到了问题。所以我想最简单的方法是在 Fish shell 函数中执行 bash 命令。像这样的东西:
function fish_function
start bash
... bash commands ...
stop bash
end
那可能吗?
例如:命令
pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)
在 Fish shell 中不起作用,我不知道如何转换它
答案1
显然Fish 用于; and
和&&
用于()
命令替换。
所以只需将命令更改为
pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)
应该管用。
回答实际的问题,通常你可以通过任何方式将语句重定向到bash
命令的 STDIN 来获得要在 Bash 中执行的语句(请注意,我使用的是 Zsh,它支持此处的字符串,并且该语句打印的内容特定于 Bash 的变量):
% <<<'echo $BASH' bash
/bin/bash
不过,作为一般规则,我建议使用bash
s-c
选项。例如,这里的字符串和管道不能很好地处理多个命令,这里的文档将由当前 shell 扩展,等等(尽管如此,这些需要当前 shell 的支持)。
总的来说bash -c
似乎总是一个安全的选择:
bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'
对于多个命令来说,它会变成这样:
bash -c '
command1
command2
command3
'