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

The*_*dor 152 bash

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

user@system:/folder1/folder2/folder3/folder4$
Run Code Online (Sandbox Code Playgroud)

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

>
Run Code Online (Sandbox Code Playgroud)

我的意思是,我可以打字pwd来显示我的位置。;)

Oli*_*Oli 172

export PS1='\u@\h: '
Run Code Online (Sandbox Code Playgroud)

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

如果你真的想要像你要求的那样极简的东西,试试这个:

export PS1='> '
Run Code Online (Sandbox Code Playgroud)

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

你也可以用一些颜色来发挥创意。这是我在服务器上使用的内容:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '
Run Code Online (Sandbox Code Playgroud)

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

我的终端

PS1 中可接受字符的词汇表

  • 您还可以将换行符 (\n) 作为提示的一部分,这样您就可以将所有信息和 '>' 放在单独的行上。 (3认同)
  • 用于设置颜色的格式是什么? (3认同)

Ste*_*zzo 114

只是为了扩展 Oli 的答案(以便我为那些速记符号添加书签):

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

要使更改永久化,请将它们附加到主目录中的末尾.bash_profile(或.bashrc,请参阅此问题)。

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

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

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

export PS1="\u \$(pwd) > "
Run Code Online (Sandbox Code Playgroud)

$(pwd)站在那儿的PWD“输出”。

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

如果您希望提示以颜色为特色,您可以使用 bash 的颜色代码来实现。代码由三部分组成:

40;33;01
Run Code Online (Sandbox Code Playgroud)
  • 分号前的第一部分表示文本样式。

    • 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"
Run Code Online (Sandbox Code Playgroud)

以鲜红色打印“Hello World”。


Oli*_*nde 9

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

创建一个实现所需修剪逻辑的小型 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)
Run Code Online (Sandbox Code Playgroud)

现在从终端测试它:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'
Run Code Online (Sandbox Code Playgroud)

如果您对结果没问题,只需将命令附加到您的 ~/.bashrc


Joe*_*770 8

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

$ 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
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人。