2011年3月1日星期二

定制bash提示符

废话少说,先上我的配置,把下面的加在~/.bashrc 里就可以了:

PS1="\[\e[1;30m\]\u:\[\e[36m\]\w\[\e[32m\]\$\[\e[0m\]" 
PS2="\[\e[1;32m\]>\[\e[0m\]"
以下是一些说明:
PS1和PS2:
Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1变量的值。例如将其改为:
PS1=”Enter a command:”
第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为>。如果需要自己定义该提示符,只需改变PS2变量的值。例如将其改为:
PS2=”More information:”

bash可识别的专用序列:
用反斜杆"\"可以显示bash一些专用的列表, 下面是bash可识别的全部专用序列的完整列表(您可以在 bash man page 的 "PROMPTING" 部分找到这个列表):
序列 说明

\a ASCII 响铃字符(也可以键入 \007)
\d "Wed Sep 06" 格式的日期
\e ASCII 转义字符(也可以键入 \033)
\h 主机名的第一部分(如 "mybox")
\H 主机的全称(如 "mybox.mydomain.com")
\j 在此 shell 中通过按 ^Z 挂起的进程数
\l 此 shell 的终端设备名(如 "ttyp4")
\n 换行符
\r 回车符
\s shell 的名称(如 "bash")
\t 24 小时制时间(如 "23:01:01")
\T 12 小时制时间(如 "11:01:01")
\@ 带有 am/pm 的 12 小时制时间
\u 用户名
\v bash 的版本(如 2.04)
\V Bash 版本(包括补丁级别) ?/td>
\w 当前工作目录(如 "/home/drobbins")
\W 当前工作目录的“基名 (basename)”(如 "drobbins")
\! 当前命令在历史缓冲区中的位置
\# 命令编号(只要您键入内容,它就会在每次提示时累加)
\$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
\xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符
\\ 反斜杠
\[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。
\] 这个序列应该出现在非打印字符序列之后。
终端的颜色控制
我们看到很多 \e[ 这样的东西,事实上这个叫做 ANSI 控制码,在 Linux 和 Windows 的命令行里面都是通用的,\e 是 Escape 键的键码,\e[ 是一切 ANSI 控制码的开头。首先来到 \e[1;30m 这个控制码,这表示设置这个符号之后的字符为黑色,而 \e[0m 则是清除所有格式.
具体的颜色及其它控制列表 可以看:http://en.wikipedia.org/wiki/ANSI_escape_code#graphics

PS: PS1 也可以改成一下形式, 在程序出错时, 能有高亮提示: 

PS1='`a=$?;if [ $a -ne 0 ]; then a="  "$a; echo -ne "\[\e[s\e[1A\e[$((COLUMNS-2))G\e[33m\e[1;41m${a:(-3)}\e[u\]\[\e[0m\e[47m\e[2m\]"; fi`\[\e[1;30m\]\u:\[\e[36m\]\w\[\e[32m\]\$\[\e[0m\]' 

具体可见 WowUbuntu


ref:
http://blogold.chinaunix.net/u/27543/showart_255624.html
http://blog.donews.com/badcoffee/archive/2005/04/08/327553.aspx
http://wowubuntu.com/bash-prompt.html?utm_campaign=twitter&utm_medium=twitter&utm_source=twitter
http://en.wikipedia.org/wiki/ANSI_escape_code#graphics

没有评论:

发表评论