GNU/Linux >> Linux の 問題 >  >> Linux

Bashを使用して、最後のコマンドの出力を変数に自動的にキャプチャしますか?

これは本当にハックな解決策ですが、ほとんどの場合うまくいくようです。テスト中に、^C を取得するとうまく動作しないことがあることに気付きました コマンドラインで、少し動作を改善するために少し調整しました。

このハックはインタラクティブ モードのハックのみであり、誰にもお勧めできないと確信しています。バックグラウンド コマンドは、通常よりも定義されていない動作を引き起こす可能性があります。他の回答は、プログラムで結果を得るより良い方法です。

そうは言っても、ここに「解決策」があります:

PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'

この bash 環境変数を設定し、必要に応じてコマンドを発行します。 $LAST 通常、探している出力が得られます:

startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve

これを自動的に行う変数を知りません .結果をコピーして貼り付けるだけでなく、何かを行うには、今行ったことを再実行できます。たとえば、

vim $(!!)

どこで !! は「前のコマンド」を意味する履歴展開です。

適切な引数の解析を妨げる可能性のあるスペースまたはその他の文字を含む単一のファイル名があると予想される場合は、結果を引用します (vim "$(!!)" )。引用符を付けないままにしておくと、スペースやその他のシェル解析トークンが含まれていない限り、複数のファイルを一度に開くことができます。


Linux
  1. Bashで合法的なコマンドの前に変数を設定するのはなぜですか?

  2. コマンドの出力をBashを使用して列ごとに分割しますか?

  3. bash で以前のコマンドの出力を使用する

  1. bash で、最後の stdout をエコー/印刷する方法はありますか? stdout が割り当てられる変数はありますか?

  2. コマンド出力を bash の変数にリダイレクトすると失敗する

  3. grep を bash の変数に渡す

  1. Linuxコマンドの出力を変数に割り当てる方法

  2. コマンドの出力をシェル変数に割り当てる方法は?

  3. UNIXのtimeコマンドの出力をbashの変数にリダイレクトしますか?