我当前在一台 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].)
表示在方括号中显示当前的后台作业数量。