Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有当状态代码为非0时,bash提示才能响铃吗?_Bash_Status - Fatal编程技术网

只有当状态代码为非0时,bash提示才能响铃吗?

只有当状态代码为非0时,bash提示才能响铃吗?,bash,status,Bash,Status,我只是想知道,如果退出状态代码不是0,bash是否可以在显示提示时按铃 基本上,如果我输入的任何命令没有正确完成,我希望听到铃声。试试这个: # suggested by chepner for maximum portability PS1='$( [ $? -eq 0 ] || printf "\007" )$ ' 或者这个,MacOS: PS1='$( [ $? -eq 0 ] || echo ^G )$ ' 您需要键入Ctrl-V Ctrl-G才能正确输入^G(同样,Ma

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

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

试试这个:

# suggested by chepner for maximum portability
PS1='$( [ $? -eq 0 ]   ||  printf "\007" )$ '
或者这个,MacOS:

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

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

bash
有一个特殊的转义符,用于在提示中添加铃声:
\a
。 如果您使用
PROMPT\u命令
动态生成提示,这将非常有用。例如:

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

PROMPT_COMMAND=prompt

在提示中的何处添加铃并不重要,因为它不会影响提示的外观,而且您可能不会注意到相对于提示的每个字符的外观铃响的确切时间:)

启用后,您将很快禁用此功能。因此,不要浪费你的时间,而且,这是一个更好的问题,或者,更多的是关于定制一个人的交互环境,而不是编写软件…也就是说,在某个地方,你可以挂起一个函数来改变你的PS1(如果你想这样做的话),请参阅
PROMPT\u命令
变量。或者您也可以这样做:
echo-e'\a'
(虽然没有在macOS上测试,
-e
不是
echo
的POSIX标志,乍一看)不幸的是,我得到的是“^G”输出,而不是铃铛。。。是的,我使用了CTRL-V CTRL-G。我没有按ErikMD的建议键入^then G:)请尝试非POSIX echo功能:
echo-e“\a”
不要麻烦
echo
;使用
printf'\007'
或(为了最大的可移植性)
tput-bel
tput-bel
是最大的可移植性。并非每个终端都会通过按铃来“显示”ASCII 007
tput bel
将输出特定于终端的序列,该序列确实会专门告诉终端这样做(尽管通常只是ASCII 007)。