fish関数でbashコマンドを実行する

fish関数でbashコマンドを実行する

私はフィッシュシェルを試してみましたが、いくつかのエイリアスを使うのに問題があります。したがって、最も簡単な方法は、Fishシェル関数でbashコマンドを実行することです。このような:

function fish_function
start bash
    ... bash commands ... 
stop bash
end

それは可能ですか?

例: コマンド

pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq) 

Fish Shellでは動作しません。変換する方法がわかりません。

答え1

確かに; and魚はコマンドの置き換え&&に使用されます()

したがって、コマンドを次のように変更します。

pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)

動作する必要があります。


実際の質問に答えるために、通常bashどんな方法でもコマンドのSTDINにリダイレクトして、Bashで実行されるステートメントを取得できます。ここでは文字列をサポートするZshを使用しており、ステートメントはBashの内容を印刷します。特定の変数):

% <<<'echo $BASH' bash
/bin/bash

ただし、通常はbashs-cオプションを使用することをお勧めします。たとえば、ここの文字列とパイプは複数のコマンドをうまく処理できず、ここのドキュメントは現在のシェルによって拡張されます(ただし、現在のシェルのサポートが必要です)。

全体的にbash -cいつも安全な賭けのようです。

bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'

複数のコマンドの場合:

bash -c '
command1
command2
command3
'

関連情報