スクリプト: 出力および終了コードのロギング

スクリプト: 出力および終了コードのロギング

このscriptコマンドは、シェルセッション全体をファイルに書き込みます。これは素晴らしいですが、セッションを見るときに私が実行する各コマンドの終了コードを見ることができるようにしたいです。

scriptこれをログにキャプチャできますか?理想的にはセッションユーザーには表示されませんscriptが、必要に応じて許可されます。

実行スクリプトの例:

me:~ oliverlade$ script
Script started, output file is typescript
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit

Script done, output file is typescript

ログファイルの内容:

me:~ oliverlade$ cat typescript
Script started on Sun Aug  7 13:02:43 2016
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit

Script done on Sun Aug  7 13:03:03 2016

私が欲しいもの:

me:~ oliverlade$ cat typescript
Script started on Sun Aug  7 13:02:43 2016
bash-3.2$ echo "hello"
hello
(exit 0)
bash-3.2$ true
(exit 0)
bash-3.2$ false
(exit 1)
bash-3.2$ exit
exit

Script done on Sun Aug  7 13:03:03 2016

答え1

scriptマニュアルページから:

-e, --return

「サブプロセスの終了コードを返します。bash終了と同じ形式を使用すると、信号終了終了コードは128 + nです。

これを使用する必要がある場合は、script最後の終了コードを確認するための最良の方法は、それをシェルプロンプトに追加することです。とにかく、これを行うのは悪い考えではありません。

答え2

最後に実行されたコマンド()の終了ステータスをデフォルトの$?プロンプト(PS1)にマージできます。

一例:

$ PS1='$? \$ '
0 $

テストしてみてください:

0 $ false
1 $

$?に割り当てるときに拡張を防ぐには、単一引用符を使用する必要がありますPS1。プロンプト変数を使用しないでくださいexport

他の例:

$ PS1=$'(exit $?)\n$ '
(exit 0)
$

テスト:

(exit 0)
$ false
(exit 1)
$

関連情報