知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Linux终端命令行提示符的艺术--PS1进阶

发布时间:2014-09-05 14:14:13作者:知识屋

Linux终端命令行提示符的艺术--PS1进阶
 
话不多说,先瞅瞅我的命令行提示符(有点大):
 
 
图中命令行解释:
┌[阳历日期/农历日期 时间]
├[当前目录下目录数+当前目录下文件数][当前绝对目录]
└[用户名@主机名-第几个终端 _]
 
相关配置文件
 
全局配置文件:/etc/bash.bashrc或者/ect/bashrc
 
单用户配置文件:“~”目录下的.bashrc隐藏文件
 
代码
 
对应于上图中的代码如下(添加位置一般将原有的PS1覆盖为准,即可以在原有的PS1上修改,也可以直接添加到配置文件的最后):
 
 
get_ps1()
{
Date=$(date +%F)
 
Time=$(date -R | cut -c 18-25 |sed 's/,//')
 
Lunar=$(lunar `date +%Y/ %m/ %d` |grep '^Lunar/ :' |awk '{print $3}' |sed 's/^...../(.*/)..$//1/')
 
dn=$(ls -l | grep ^d | wc -l);fn=$(expr $(ls | wc -l) - ${dn})
 
Num=$(echo $Lunar|wc -m)
[ "$Num" = "5" ] && space=' '
[ "$Num" = "4" ] && space='  '
 
PS1="/342/224/214[/[/e[01;32m/]${Date}/${Lunar} ${space}${Time}/[/e[00m/]]/n/
/342/224/234[/[/e[01;34m/]${dn}/[/e[00m/]+${fn}][/[/e[01;34m/]/w/[/e[00m/]]/n/
/342/224/224[${debian_chroot:+($debian_chroot)}/[/e[01;32m/]/u@/h-/l /[/e[00m/]/342/225/260/137/342/225/257]/$"
}
PROMPT_COMMAND=get_ps1
 
如果你觉的上面的命令行提示符太复杂,你也可以将它缩减。。。
 
你需要了解的
 
如果你想设计一个自己喜欢的并且够炫的命令行提示符,你首先要了解以下一些东西。
 
1)里面涉及到了农历日期,在Ubuntu 12.04 LTS中可以从源中找到lunar软件包,但在Fedora和CentOS中并没有,为此我写了一个阳历转农历的shell脚本,具体可以参见我的Linux shell实现阳历转农历 http://www.zhishiwu.com/os/201307/228131.html。
 
2)转义符及颜色。这个我就不再罗嗦了,google一下“Linux 命令行 颜色”会有很多答案的。
 
3)PROMPT_COMMAND,这个是实时命令行的关键,这个变量的内容会在显示bash提示符前执行,所以上面用到的实时内容需要它。
 
4)特殊字符显示不了怎么办?你可以将它转换为字符编码,可以在http://0xcc.net/jsescape/进行转义,在Plain text栏输入你要转义的字符,在/OOO栏就是你想要的字符编码。
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜