bash提示只能在状态码非0的情况下才响铃吗?

Can the bash prompt ring a bell only when the status code is non 0?

我只是想知道如果退出状态码不为0,bash是否可以在显示提示时按铃

基本上,如果我输入的任何命令没有正确完成,我想听到铃声。

试试这个:

# suggested by chepner for maximum portability
PS1='$( [ $? -eq 0 ]   ||  printf "[=10=]7" )$ '

或者这个,MacOS:

PS1='$( [ $? -eq 0 ]   ||  echo ^G )$ '

您需要输入 Ctrl-V Ctrl-G 才能正确输入 ^G(同样,MacOS 终端 - YMMV)。

bash 有一个特殊的转义,用于在提示中添加铃铛:\a。 如果您使用 PROMPT_COMMAND 动态构建提示,这将非常有用。例如:

prompt () {
  last_es=$?
  PS1='\u@\h'
  if [ "$last_es" -ne 0 ]; then
    PS1+='\a'
  fi
  PS1+='\w $'
}

PROMPT_COMMAND=prompt

不要太在意提示中添加铃铛的地方,因为它不会影响提示的外观,而且您可能不会准确注意提示中每个字符出现时铃声响起的时间:)