Fish
在fish函式中執行bash命令
我決定嘗試使用fish shell,但我遇到了一些別名問題。所以我想最簡單的方法是在fish shell函式中執行bash命令。類似的東西:
function fish_function start bash ... bash commands ... stop bash end
那可能嗎?
例如:命令
pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)
在fish shell中不起作用,我不知道如何轉換它
顯然fish 使用
; and
for&&
和()
for 命令替換。所以只需將命令更改為
pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)
應該管用。
回答實際問題,通常您可以通過將語句重定向到
bash
命令的 STDIN 以任何方式簡單地在 Bash 中執行語句(注意我在 Zsh 上,它支持這裡的字元串,並且該語句列印內容特定於 Bash 的變數):% <<<'echo $BASH' bash /bin/bash
但是,作為一般規則,我建議使用
bash
’-c
選項。例如這裡的字元串和管道不能很好地與多個命令一起使用,這裡的文件將被目前的 shell 擴展,等等(儘管這些需要目前的 shell 支持)。總的來說
bash -c
,似乎總是一個安全的賭注:bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'
對於多個命令,它變成了這樣:
bash -c ' command1 command2 command3 '