使 Linux shell 提示符显示最后的返回值

使 Linux shell 提示符显示最后的返回值

我当前在一台 Linux 机器上,shell 提示符向我显示了最后的返回值和已执行的命令数(包括图片,其中这些数字以紫色显示)。

我自己的电脑没有这个,我该如何配置它?
我正在使用 Xubunto,如果需要更多详细信息,请告诉我——我不太喜欢 Linux(我不知道这里有什么相关的内容)。

例子

答案1

似乎bash是 Xubuntu 的默认 shell

编辑.bashrc.bash_profile(取决于您的系统配置)并查找以 开头的行PS1=。此行设置您的迅速的

要添加最后一个命令的返回值,请将以下内容添加到该行:

`echo -n $?`

因此它看起来例如如下所示(我当前的提示,已简化):

PS1='\u in \w (`echo -n $?`)\n -> \$ '

它看起来像这样,带有_光标:

danielbeck in ~ (0)
 -> $ _

或者,您可以使用环境变量PROMPT_COMMAND将返回代码添加到提示符的前面:

export PROMPT_COMMAND='RET=$?; echo -n "($RET) "'

(0)这会在您未修改的提示之前添加例如。


\#你可以通过添加到提示符中来获得“计数器” :它是命令号. 更有用的可能是历史号码,它不是从 1 开始,但允许您通过输入感叹号,然后输入命令的历史记录编号来执行任何命令:

984 $ foo
-bash: foo: command not found
985 $ !984
foo
-bash: foo: command not found
986 $ _

经过一些额外的游戏后:

PS1='`RET=$?; if [ $RET != 0 ] ; then echo "rc $?"; fi`\n\u in `pwd`\n#\# !\! \$ '

如果返回值不为零,则仅显示返回值,并在其自己的行上显示。命令编号和历史记录编号与您要输入的命令位于同一行:

danielbeck in /Users/danielbeck/Downloads
#1 !984 $ foo
-bash: foo: command not found
rc 127
danielbeck in /Users/danielbeck
#2 !985 $ _

答案2

该变量$?包含最后运行程序的退出代码。

ninth:~ sakkaku$ echo Hello World
Hello World
ninth:~ sakkaku$ echo $?
0
ninth:~ sakkaku$ cat asdasd
cat: asdasd: No such file or directory
ninth:~ sakkaku$ echo $?
1

我认为你可以使用增量器来获取“执行的命令数”

ninth:~ sakkaku$ echo $[numcommands++]
0
ninth:~ sakkaku$ echo $[numcommands++]
1
ninth:~ sakkaku$ echo $[numcommands++]
2
ninth:~ sakkaku$ echo $[numcommands++]
3

然后,您将需要修改 .bashrc 中的 PS1/PS2 变量来更改提示。 看起来像是一个不错的指南(除了它建议修改/etc/bashrc,我只会执行~/.bashrc)。

答案3

仅供参考,如果您使用 zsh,则更简单。此构造:%(?..%F{red}%?%f)表示如果最后一个命令的错误级别不为零(正常),则以红色显示,但如果为正常,则不显示任何内容。构造%(1j.[%j].)表示在方括号中显示当前的后台作业数量。

相关内容