
この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)
$