该script
命令将整个 shell 会话记录到文件中。这很棒,但是在查看会话时,我希望能够看到我运行的每个命令的退出代码。
是否可以在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
,似乎查看最后退出代码的最佳方法是将其添加到 shell 提示符中。无论如何,这样做并不是一个坏主意。
答案2
您可以将最后执行的命令 ( ) 的退出状态合并到$?
主提示符 ( PS1
) 中。
一个例子:
$ PS1='$? \$ '
0 $
测试它:
0 $ false
1 $
您必须使用单引号以避免$?
在分配给 时扩展PS1
。你不应该使用export
提示变量。
另一个例子:
$ PS1=$'(exit $?)\n$ '
(exit 0)
$
测试:
(exit 0)
$ false
(exit 1)
$