在终端中隐藏当前工作目录


133

默认情况下,终端提示符显示如下:

user@system:/folder1/folder2/folder3/folder4$

您进入文件系统的深度越深,用于输入命令的空间就越少。我可以更改为仅显示以下内容吗?

>

我的意思是,我可以键入pwd以显示自己的位置。;)


1
这应该是一条评论,但我不能发表评论,对不起。除了隐藏当前目录外,以下PS1值还将在视觉上很好地分隔bash命令:export PS1="\n___"
Hello World

尝试了Oli的解决方案。彩色字体在终端中效果很好:export PS1 ='[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:'
linbianxiaocao

Answers:


153
export PS1='\u@\h: '

这导致oli@bert:了我的提示。

如果您确实想要一些您想要的极简主义的东西,请尝试以下操作:

export PS1='> '

您可以将其附加到~/.bashrc文件的末尾,以使其在两次登录之间保持不变。

您还可以通过一些颜色来发挥创意。这是我在服务器上使用的:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

给予(更容易在全黑背景上查看):

我的终端

PS1中可接受字符的词汇表


2
您还可以在提示中添加换行符(\ n),以便将所有信息和'>'放在单独的行中。
ak2 2010年

我首先在msysGit中遇到了这种“极端” shell定制,信不信由你。我立即被改造为重击世界。所有信息(我的当前目录,当前分支从Git存储库中签出,Git索引的状态...)都很棒。我计划对最近安装在旧笔记本电脑(以及Windows XP)上的Ubuntu安装进行类似的操作。
dgw

3
设置颜色时使用什么格式?
拉基布

1
@SyedRakibAlHasan尝试echo -e "\e[31mHello World\e[0m"echo -e "\033[31mHello\e[0m World"在终端机上,应该可以给您一个提示。来源
达卡

103

只是为了扩展Oli的答案(这样我就为这些速记符号添加了书签):

bash提示(stefano@linux:~$)仅是您可能会看到的几个提示中的第一个:

  • PS1:打开外壳时看到的默认提示

    它的值存储在名为的环境变量中PS1。要查看其值,请输入

    echo $PS1

    这会给你类似的东西

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    要更改它,可以为变量设置一个新值:

    export PS1="\u > "

    这将导致如下提示:

    stefano > 
  • PS2:是您的辅助提示。当命令未完成时,将显示此信息。键入echo "asd并按Enter键,第二个提示符将允许您输入更多行,直到您关闭反向逗号为止。

  • PS3是用于(2)的提示select

  • PS4是用于提示替代文字 栈跟踪(默认值:+

要使更改永久生效,请将其附加到主目录的末尾.bash_profile(或.bashrc参见此问题)。

这是或多或少完整的速记列表,您可以在编写这些速记时使用:

  • \a     “钟”字
  • \A     24小时
  • \d     日期(例如,星期二12月21日)
  • \e     逃脱字符
  • \h     主机名(最多第一个“。”)
  • \H     主机名
  • \j     当前正在运行的作业数(ps)
  • \l     当前tty
  • \n     换行
  • \t     时间(hh:mm:ss)
  • \T     时间(hh:mm:ss,12h格式)
  • \r     回车
  • \s     Shell(即bash,zsh,ksh ..)
  • \u     用户名
  • \v     重击版本
  • \V     完整的Bash释放字符串
  • \w     当前工作目录
  • \W     当前工作目录的最后一部分
  • \!     历史上的当前索引
  • \#     命令索引
  • \$     如果您是root,则为“#”,否则为“ $”
  • \\     文字反斜杠
  • \@     时间(12小时制,上午/下午)

您当然可以插入任何文字字符串和任何命令:

export PS1="\u \$(pwd) > "

在哪里$(pwd)代替“ pwd的输出”。

  • 如果转义了命令替换,如所示\$(pwd),则每次显示提示时都会对其进行评估,否则,如那样$(pwd),仅在bash启动时进行一次评估。

如果您想让提示显示颜色,可以使用bash的颜色代码来实现。该代码包括三个部分:

40;33;01
  • 分号之前的第一部分表示文本样式。

    • 00 =无
    • 01 =粗体
    • 04 =下划线
    • 05 =闪烁
    • 07 =反向
    • 08 =隐藏
  • 第二部分和第三部分是颜色和背景色:

    • 30 =黑色
    • 31 =红色
    • 32 =绿色
    • 33 =黄色
    • 34 =蓝色
    • 35 =洋红色
    • 36 =青色
    • 37 =白色

假设从左侧开始,则可以省略每个部分。即“ 1”表示粗体,“ 1; 31”表示粗体和红色。通过将指令转义为\33[并以结束,可以使终端以彩色打印m。33(即十六进制的1B)是ASCII符号“ ESCAPE”(ASCII字符集中的特殊字符)。例:

"\33[1;31mHello World\33[m"

以鲜红色打印“ Hello World”。


我附加了内容export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> '/etc/bash.bashrc但似乎没有什么改变...它在每个会话中都有效,但是我似乎无法使其永久化。
Jared Tritsch

8

另一个选择是在太长时缩短工作目录路径:修剪终端命令提示符工作目录

创建一个小的python脚本,该脚本实现所需的修整逻辑。

示例:〜/ short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

现在从终端进行测试:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

如果您对结果满意,只需将命令附加到〜/ .bashrc中


例如...〜/ short.pwd.py,导出...〜/ .short.pwd.py我认为两者必须相同。您在这两个地方都添加了一条额外的命令,或者根本不这样做。但这是一个很好的答案
。– MycrofD

7

我经常想暂时这样做。这是我的工作:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

我希望这可以帮助别人。


1

对于macOS用户:

open ~/.bash_profile

在文件末尾添加以下行并保存

export PS1='\u:\w\$ '

结果在主目录中:

user: ~$

在这里 ,您的用户w对于当前工作目录$是要提示显示

您可以尝试以下样式:

export PS1='$ '

只用$作为提示,别无其他。 就像:

$ 

0

帮助我的是:export PS1 ='$'

为了在每次打开终端时都具有此功能,请在.bashrc的末尾编写命令,您可以先按“ cd”后跟“ gedit .bashrc”将其打开。

希望这可以帮助。为我工作。

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.