如何缩短命令行(bash)提示?


Answers:


241

仅针对当前终端实例进行更改

只需输入PS1='\u:\W\$ '并按Enter。


永久更改

在您的中~/.bashrc,找到以下部分:

如果[“ $ color_prompt” =是]; 然后
    PS1 ='$ {debian_chroot:+($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]:\ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $'
其他
    PS1 ='$ {debian_chroot:+($ debian_chroot)} \ u @ \ h:\ w \ $'
科幻

删除@\h,然后将替换为\w大写字母\W,使其变为:

如果[“ $ color_prompt” =是]; 然后
    PS1 ='$ {debian_chroot:+($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]:\ [\ 033 [01; 34m \] \ W \ [\ 033 [00m \] \ $'
其他
    PS1 ='$ {debian_chroot:+($ debian_chroot)} \ u:\ W \ $'
科幻

保存,退出,关闭终端,然后启动另一个终端以查看结果。


吨更多的选择!

  • 有关更多信息,请参见此处,还有更多选择
  • 请参见此答案,以使用完一个小的Python脚本来设置提示,以便仅当您深入目录结构时才进行缩短。

1
您也可以有很多信息...然后像unix.stackexchange.com/q/88780/10043
Michael Durrant

有没有办法使这个全球化?换句话说,如果我对其他用户感到陌生,那么此设置是否可以保留,但仅适用于我自己(即,对于通常使用其帐户的用户而言,不适用)?
ctote

为了拥有一个在Linux和OSX上均可使用的共享.bashrc,我从那以后切换到了unix.stackexchange.com/a/127800/10043
Michael Durrant

HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } TIME='\033[01;31m\]\t \033[01;32m\]' LOCATION=' \033[01;34m\]pwd | sed“ s#(/ [^ /] \ {1,\} / [^ /] \ {1,\} / [^ /] \ {1,\} /)。*(/ [^ /] \ { 1,\} / [^ /] \ {1,\})/ \ {0,1 \}#\ 1_ \ 2#g“' BRANCH=' \033[00;33m\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Michael Durrant 2015年

但请参阅实际使用代码的答案。
迈克尔·杜兰特

104

在当前终端中运行此代码

PROMPT_DIRTRIM=3

现在,bash提示符将仅显示最后3个目录名称。您可以选择1以仅显示当前目录。有关更多信息,请参见GNU文档

效果:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

如果要永久保留,请~/.bashrc在开头添加以下行:

PROMPT_DIRTRIM=3

或另一个大于零的数字。


7
就在旁注:这需要猛砸4
斯特凡Lasiewski

很好...我为此添加了bach_alias(带有一个功能)promptdir() { PROMPT_DIRTRIM=$1; }只是为了让生活更轻松...
dgoosens

18

这是我的首选提示设置:

加入 ~/.bashrc

PS1='[\u@\h \W]\$ '    

它看起来像这样:

[user@hostname dirname]$

$标志后有空格)


如何在每个单词之间添加空格?另外,我可以给它上色吗?
丹尼尔·斯普林格

6

我个人更喜欢在bash提示符中仅看到当前文件夹。我可以使用以下命令执行此操作:

PS1='\W\$ '

如果您希望它在每次启动后生效,则将上述命令添加到〜/ .bashrc中。


1

我意识到这太旧了,但是由于没有人建议创建别名,所以我认为我会发布。使用Bash提示转义序列,我做了一个别名shorten

~/.bash_aliases这里,您会注意到$ Blue var设置提示颜色,您可以根据喜好省略或更改提示颜色。在调用short时,我也会清除终端。

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

要获得OP所需的提示字符串:

alias shorten='PS1="$USER:\W$ "'

我有~/.bashrc复制定义的颜色,并从https://wiki.archlinux.org/index.php/Color_Bash_Prompt粘贴。附带说明一下,ansi代码颜色是什么?我很困惑,只是看着它。

Blue='\e[0;34m'         # Blue

逐步指南对此非常有用,因为我不知道如何使用.bash_aliases。谢谢
Kayote '16

2
“。” 前缀表示隐藏的目录或文件。代字号“〜”是$ HOME变量的缩写形式。因此,“〜/ .bash_aliases”只是“ /home/$USER/.bash_aliases”的缩写。要打开“ .bash_aliases”,您可以打开终端并输入“ gedit /home/$USER/.bash_aliases”或“ gedit〜/ .bash_aliases”,或者在主目录中键入ctrl-h以显示隐藏文件并直接打开文件。希望能有所帮助。您可能还想在Google中搜索有用的别名。
艾莉·卡弗

0

写了一个函数,可以根据需要进行修改:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

在完全计算~/.bashrcPS1行之后,将此函数放在底部或底部附近。

您可以termprompt在想缩短提示时间的任何时候键入,或者termprompt从底部开始~/.bashrc永久调用。

与许多其他答案相比,此技术的优势在于.bashrc可以PS1用四种不同的方式进行设置(xterm +无颜色,xterm +颜色,no-xterm +无颜色,no-xterm +颜色)。该答案支持所有四种当前方法,也可能支持将来的方法。

另一个优点是此方法具有较少的复杂控制代码可以遍历以便插入您的更改。

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.