主页 > 知识库 > 服务器 > Linux/BSD >

织梦站长工具箱

  • 织梦CMS标签生成器
  • DedeCMS模板手册
  • AG亚游正则表达式测试
  • HTML/JS互转
  • AG亚游内容分词工具
  • AG亚游JS/CSS压缩

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

来源:中国IT实验室 作者:佚名 发表于:2013-07-17 14:15  点击:
话不多说,先瞅瞅我的命令行提示符(有点大): 图中命令行解释: ┌[阳历日期/农历日期 时间] ├[当前目录下目录数+当前目录下文件数][当前绝对目录] └[用户名@主机名-第几个终端 ╰_╯] 相关配置文件 全局配置文件:/etc/bash.bashrc或者/ect/bashrc 单用
话不多说,先瞅瞅我的命令行提示符(有点大):
    
   
    
   图中命令行解释:
   ┌[阳历日期/农历日期 时间]
   ├[当前目录下目录数+当前目录下文件数][当前绝对目录]
   └[用户名@主机名-第几个终端 ╰_╯]
   
   相关配置文件
   
   全局配置文件:/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实现阳历转农历
   
   2)转义符及颜色。这个我就不再罗嗦了,google一下“Linux 命令行 颜色”会有很多答案的。
   
   3)PROMPT_COMMAND,这个是实时命令行的关键,这个变量的内容会在显示bash提示符前执行,所以上面用到的实时内容需要它。
   
   4)特殊字符显示不了怎么办?你可以将它转换为字符编码,可以在http://0xcc.net/jsescape/进行转义,在Plain text栏输入你要转义的字符,在\OOO栏就是你想要的字符编码。

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%
    关于我们 招贤纳士 联系我们 帮助中心 协议说明 网站地图 用户反馈 合作伙伴 捐助织梦