在ubuntu terminal(终端)的命令提示行 隐藏/显示 当前工作目录

来源:互联网 发布:软件开发框架设计 编辑:程序博客网 时间:2024/06/05 11:38

ubuntu的终端里,命令行提示是默认显示当前工作目录的绝对路径,如下:

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


当绝对路径比较长的时候就有点烦了,因为输入的命令就不得不过行写(因为第一行里路径就占用太多space了)。。

而且terminal的窗口标题就是显示当前目录的绝对路径,加上还有个pwd命令可以显示当前路径,所以个人感觉没必要在命令提示那里占用那么多地方显示那么长的路径。


在网上找到了解决方法:改变系统变量PS1

(链接:Hide current working directory in terminal


查看当前系统使用的PS1:

echo $PS1


通常为:

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


然后在找这个问题的解决方法的时候有个解释特别详细特别给力,顺带就翻译了下贴在这里:

(http://askubuntu.com/a/18435)


PS1:当你打开终端的时候看到的默认提示符。这个提示符是存在一个叫做 PS1 的环境变量里的。如果想查看它的值,在终端输入:

echo $PS1
显示的结果大概如下:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
如果想要改变提示符显示的内容,直接赋值个新值给 PS1 ,比如下面这样:
export PS1="\u > "
这样修改后,终端就会显示修改后的结果了。


PS2:这是候选提示符。这个提示符会在命令没完成的时候显示。比如你输入:

echo "asd
然后就按回车的话,候选提示符就会让你输入更多行直到你输入右引号。

PS3:这是用于select(2)。

PS4:这是用于堆栈跟踪。


使用export进行的修改在重新打开一个终端的时候就会失效,如果想要修改长期有效的话,就要把修改结果写到 .bashrc 里面(在 /home 目录里。在某些系统里叫做 .bash_profile)。


下面是一份差不多完整的提示符内容简写对应意思的列表:

  • \a     The 'bell' character (“铃声”符号)
  • \A     24h Time (24小时制时间)
  • \d     Date (e.g. Tue Dec 21) (日期)
  • \e     The 'escape' charakter (“Esc”符号)
  • \h     Hostname (up to the first ".") (主机名称,写到第一个“.”)
  • \H     Hostname (主机名称)
  • \j     No. of jobs currently running (ps) (目前正在跑的进程的数目)
  • \l     Current tty (当前的tty)
  • \n     Line feed (换行符)
  • \t     Time (hh:mm:ss) (时间格式)
  • \T     Time (hh:mm:ss, 12h format) (时间,12小时格式)
  • \r     Carriage return (回车符)
  • \s     Shell (i.e. bash, zsh, ksh..) 
  • \u     Username (用户名称)
  • \v     Bash version (Bash版本)
  • \V     Full Bash release string (完整的Bash发行号)
  • \w     Current working directory (当前工作目录)
  • \W     Last part of the current working directory (当前工作目录的最后一部分)
  • \!     Current index in history (以往的当前下标)
  • \#     Command index (命令行下标)
  • \$     A "#" if you're root, else "$" (root身份登陆的时候是“#”,其他身份登陆都是“$”)
  • \\     Literal Backslash (取字面意思的反斜杠)
  • \@     Time (12h format with am/pm) (时间,用am/pm的12小时制)


你还可以插入任何字符串,或者任何命令,比如:

export PS1="\u \$(pwd) > "
这里的 $(pwd) 表示显示命令 pwd 的输出结果。
注意:如果命令替换被转义的话,比如被解释为 \$(pwd) 的话,那么每次提示符显示的时候都会求一次该命令的值;若没被转义的话,比如被解释为$(pwd) 的话,只会在bash启动的时候计算一次而已。


如果你想要提示符有颜色比较好看的话,你可以用bash的颜色代码来实现。这个代码由三部分组成,如下:

40;33;01

(1)在分号前的第一部分表示字体类型:

00 = none01 = 粗体04 = 下划线05 = 闪烁07 = 颠倒08 = 隐藏

(2)第二和第三部分是颜色和背景颜色:

30 = black31 = red32 = green33 = yellow34 = blue35 = magenta36 = cyan37 = white


设从左边开始,每一部分都可以被省略。例如,“1”表示粗体,“1;31”表示字体粗体并红色。你可以通过使用转义指令 “\33[“ 并且以 "m" 结尾来让你的终端打印出颜色。

数字33 或者 十六进制的1B 都是ascii码的”ESCAPE“(转义)。



翻译不准的地方欢迎指出~~有任何疑问建议直接尝试然后看效果就知道了,实践出真知嘛~~


最后贴一下我个人折腾出来的PS1:

export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;33m\]@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

原创粉丝点击