我想知道是否有一种方法可以使用history命令,但仅列出成功运行的命令。同样,是否有办法列出产生错误的错误?
我知道每个命令的退出状态为:
0
-成功执行命令
1
-由于扩展或重定向期间出错,命令失败,退出状态大于零。
2
-错误的命令用法
12
-找到命令但无法执行
127
-找不到命令
并可以通过以下命令检查执行命令echo $?
: http : //www.linuxnix.com/2011/03/find-exit-status-script-command-command-linux.html
例:
运行以下4条命令后:
ls
help
lss
ls nonexistentfile
我尝试测试仅打印成功的命令(退出状态为0),该命令应该仅为“ ls”和“ help”:
for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; then :; else echo $j | grep -v 'bash'; fi; done; rm cmd_out
输出:
ls
help
bash: lss: command not found
ls
bash: nonexistentfile.txt: command not found
这多少有些用,但是有两个问题:
- 由于某种原因,
grep -v 'bash'
并不排除包含“ bash”的行,但是如果我这样做grep 'bash'
,它将仅包含带有“ bash”的行,我不确定一个为什么起作用,而另一个不起作用。 - 它通过字符串分隔每行/命令。最后一个
ls
命令应该是
ls nonexistentfile
,但它正在运行ls
并且nonexistentfile
是单独的命令。
关于我应该在命令中进行调整或如何执行此操作的任何想法?
ls #$CODE, ll #$CODE
了历史记录输出。我不确定它是否对您有用,但是我不得不更改sed -i '\$s/\$/ \#\$CODE/' $HISTFILE'
为sed -i '\$s/\$/ \#$CODE/' $HISTFILE
。我在$ CODE之前取出了“