シェルファイルの出力だけでなく、そこに使用されたコマンドも記録するための迅速で汚い方法はありますか?
たとえば、
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
(^?
または端末のバックスペースキー)として表示されます。