実行されたコマンドと出力をログファイルに表示します。

実行されたコマンドと出力をログファイルに表示します。

シェルファイルの出力だけでなく、そこに使用されたコマンドも記録するための迅速で汚い方法はありますか?

たとえば、

whoami > who.dmp

以下の内容を含むファイルが出力されます。

my_username

長いシェルファイルの場合、結果を取得したコマンドをログファイルに表示する最も効率的な方法は何ですか?

前任者:

log.txt
###############

echo whoami  <- I want this to show in the file as well
my_username

time   <- I want this to show in the file as well

real    0m0.00s
user    0m0.00s
sys     0m0.00s

毎回コマンドを出力ファイルにハードコーディングせずにこれを行う方法はありますか?

答え1

組み込みシェルを使用することは、set -xこれを行う安価で汚れた方法です。シェルスクリプトでは、次の行を頻繁に表示できます。

#set -x

ただ誰かがコメントしました。インタラクティブなコマンドラインで利用できると思いますが、ここで実行される操作が気に入らない場合があります。

答え2

script呼び出したプログラム(デフォルトではシェル)を終了するまで、端末セッション全体を保存するこのツールを確認できます。ユースケースの例:

~/:$ スクリプト test.output
スクリプトが起動し、出力ファイルはtest.outputです。
~/:$mkdir はい
~/:$ CDの例
~/example/:$ touch new\ file.txt
~/例:/$ls
新しいファイル.txt
~/例:/$exit

ファイルの内容はtest.output次のとおりです。

スクリプトは2012年6月25日月曜日16:24:28に開始されました。
~/:$mkdir はい
~/:$ CDの例
~/example/:$ touch new\ file.txt
~/例/:$ls
新しいファイル.txt
~/はい/:$ 終了

スクリプトは2012年6月25日月曜日16:24:41に完了しました。

ファイルがあるので注意してください十分端末が記録されるため、すべてのバックスペースキーは、または^H^?または端末のバックスペースキー)として表示されます。

関連情報