Sor*_*ren 16 bash command-prompt
偶尔,我会运行一个输出很多的命令.偶尔,最后30-40行是输出的(又名输出我所真正看到的只有一部分)是好的,但要进一步上涨,出现了错误.我想更容易注意到命令失败了.为此,我希望返回代码成为我的提示的一部分.所以我拿了我的$ PS1:
[\D{%Y-%m-%d} \t] \[\e]0;\u@\h: \w\a\]\$
Run Code Online (Sandbox Code Playgroud)
......并将其扩展到:
[\D{%Y-%m-%d} \t] ${?/^0$/} \[\e]0;\u@\h: \w\a\]\$
Run Code Online (Sandbox Code Playgroud)
这会产生如下提示:
[2011-05-10 09:38:07] 0 soren@lenny:~$
Run Code Online (Sandbox Code Playgroud)
但是,我想找到一种方法让它只包含退出代码,如果它不是0.我怎样才能做到这一点?当然,我可以使用
$(echo \$? | sed -e blah)
Run Code Online (Sandbox Code Playgroud)
但是像sed一样轻巧,它仍然比bash内置的东西重得多.
Ign*_*ams 12
一点点printf
虐待:
printf '%.*s' $? $?
Run Code Online (Sandbox Code Playgroud)
小智 8
以下适用于我:
PS1="[\D{%Y-%m-%d} \t] \u@\h:\w\a \${?##0} \$ "
[2011-07-25 11:56:57] plars@plars-t500:~ $<br>
there is an extra space there ---------^^ not sure if that's a problem for you
Run Code Online (Sandbox Code Playgroud)
[2011-07-25 11:57:39] plars@plars-t500:~ 130 $
Run Code Online (Sandbox Code Playgroud)
你可以使用bash的内置模式匹配:
$ rc=0
$ echo ${rc##0}
$ rc=123
$ echo ${rc##0}
123
Run Code Online (Sandbox Code Playgroud)