これは本当にハックな解決策ですが、ほとんどの場合うまくいくようです。テスト中に、^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 "$(!!)"
)。引用符を付けないままにしておくと、スペースやその他のシェル解析トークンが含まれていない限り、複数のファイルを一度に開くことができます。