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


12

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

我自己的计算机没有此功能,该如何配置?
我正在使用Xubunto,如果需要更多详细信息,请告诉我-我不是Linux用户(我不知道这里有什么用)。

例


这太模糊了,无法回答。您正在执行哪些命令?什么是没有此功能的计算机(OS)?
Chris Ting)

我说过我的操作系统是Xubuntu,它与任何特定的命令都没有关系,只是总是显示出来的东西。
伊兰

Answers:


10

看来,这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 $ _

5

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

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)。


1
谢谢,稍后我会在我自己的电脑上尝试一下,然后看看会如何。
伊兰

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.