使用されたコマンドとその出力をファイルに書き込みます。

使用されたコマンドとその出力をファイルに書き込みます。

はるかに簡単な質問に対する答えの下に、単純な質問が隠されています。

ls > file.txtリダイレクトするコマンドを使用しているとします。 file.txtの内容は次のとおりです。stdoutlsfile.txt

some_file.txt
some_dir/

私が使用する実際のコマンドもキャプチャするにはどうすればよいですか?たとえば、この新しいコマンドを使用すると、ファイルの内容は次のようになります。

$ls
some_file.txt
some_dir/

$ls最初の行のコマンドを参照してください。$私の問題を解決するために必要ではないbashシンボルです。

ユーザー引数を受け入れ、その引数をbashコマンドに使用する長いbashファイルがあるため、完全なbashコマンドを印刷する必要があります。

答え1

短い答え:「おそらくそうではありません」あなたはシェルに自分の尾を食べるように頼むことです。これは>コンテンツをリダイレクトするだけです。コンテンツのソースではなく出力のみがわかります。コマンドhistoryが実行されるまで、コマンドは記録されません。デバッグ()をオンにすることはできますが、これset -xは色/文字という用語も印刷するため、必要なものではない可能性があります。したがって、最良のオプションは、パイプラインの後に追加のコマンドを実行することです。

$ sed -i 1i\\"$(history -1 | cut -f 1 -d ';' | cut -c 8-)" some_file.txt

おそらくよりスマートな方法があります。しかし、しなければならないsome_file.txt.

関連情報