Bash:各コマンドの出力をファイルにリダイレクトする方法は?

Bash:各コマンドの出力をファイルにリダイレクトする方法は?

私はしばしば次のようにソースコードリポジトリで検索を実行します。

ack -l "foo bar" .

検索には10〜60秒かかり、次の出力が生成されます。

path/to/file1       
path/to/file2
path/to/file3

私はしばしばvimのすべてのファイルを開くときにこのエイリアスを使います。

alias go='gvim `fc -s` -p'

これは正常に機能しますが、前のfc -sコマンドを再実行するため、数秒または数分かかることがあります。


インタラクティブに実行するすべてのコマンドに次の内容を追加すると、非常に便利です。

| tee /tmp/lastCommand to all commands.  

これにより、出力が役に立つと表示されたときに他の操作を実行できます。

使用例:

タイプ:

find . -type f 

次の操作を行います。

find . -type f | tee $lastOutLocation # Where lastOutputLocation=/tmp/lastOutput

その後、次のように前のコマンドをフィルタリングできます。

lastOut | grep "SomeString" # Where lastOut is an alias to cat $lastOutputLocation

このようなタスクを実行するために使用できるメカニズムはありますか? エイリアスがこれらの動作を公開するとは思わない。

潜在的な障害:

  • 複合コマンドで使用できるアイテムを入手してください。echo 'baz' ; echo 'bar'
  • ユーザーが入力したコマンドを実行する前に変更する方法を理解する
  • インタラクティブな入力などを無視してください。パスワードプロンプトをキャプチャしたくない

現在閲覧中の考えられる解決策は次のとおりです。

  • TRAPとshoptを次のように使用してくださいこの回答

ベストアンサー1

インタラクティブに実行するすべてのコマンドに次の内容を追加すると、非常に便利です。

| tee /tmp/lastCommand to all commands.  

~/.inputrc可能な開始の1つは、バインディングキーを使用することです。 (これはGNU Readlineライブラリの設定ファイルです。)たとえば、文字oをニーモニックとして使用します。ああ出力...

Control-o: " | tee /tmp/lastCommand"

Return/キーにバインドできますが、Enter意図しない効果が発生する可能性があります。

おすすめ記事