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\$
- 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) 的话,只会在bash启动的时候计算一次而已。
如果你想要提示符有颜色比较好看的话,你可以用bash的颜色代码来实现。这个代码由三部分组成,如下:
- 40;33;01
(1)在分号前的第一部分表示字体类型:
- 00 = none
- 01 = 粗体
- 04 = 下划线
- 05 = 闪烁
- 07 = 颠倒
- 08 = 隐藏
(2)第二和第三部分是颜色和背景颜色:
- 30 = black
- 31 = red
- 32 = green
- 33 = yellow
- 34 = blue
- 35 = magenta
- 36 = cyan
- 37 = white
数字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\]\$ '