有时我会运行一个有很多输出的命令。有时,这个输出的最后30-40行(a.k.a.我真正看到的输出的唯一部分)是好的,但是进一步上升,有一个错误。我想让它更容易注意到命令失败。为此,我希望返回代码成为我提示的一部分。所以我拿了我的$ PS1:
[\D{%Y-%m-%d} \t] \[\e]0;\u@\h: \w\a\]\$
…并将其扩展到:
[\D{%Y-%m-%d} \t] ${?/^0$/} \[\e]0;\u@\h: \w\a\]\$
这样会产生一个这样的提示:
[2011-05-10 09:38:07] 0 soren@lenny:~$
但是,我想找到一种方法,只有包含退出代码(如果它不是0)。我怎样才能做到这一点?当然可以使用
$(echo \$? | sed -e blah)
但是像sed那样轻便,它比bash的内置东西还要重一些。
有一点printf滥用:
printf '%.*s' $? $?