码迷,mamicode.com
首页 > 系统相关 > 详细

让你的Shell命令提示符飞起来~

时间:2016-06-06 10:24:20      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:

前段时间,刚来实习的时候,由于自己的开发机环境还没配好,就用了老大的机器,打开之后,咦~!为啥不是传统Linux的[root@hostname] ?这引起了本宝宝极大的好奇心(为啥装嫩?难道要装老?),于是乎,再一次打开了鸟哥的菜谱(鸟哥的Linux私房菜),同时也为了一下度娘,总算有了答案。

PS1!没错,就是这个叫做PS1的东西,打开Linux,输入命令

echo $PS1

你看到的就是这个,

[root@localhost ~]# echo $PS1
[\u@\h \W]\$ 

就是这个PS1左右着你的Linux的shell命令提示符!

这个PS1,究竟是什么意思呢?经过百度得到了答案:

    \d :代表日期,格式为weekday month date,例如:"Mon Aug 1"

    \H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux

    \h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略

    \t :显示时间为24小时格式,如:HH:MM:SS

    \T :显示时间为12小时格式

    \A :显示时间为24小时格式:HH:MM

    \u :当前用户的账号名称

    \v :BASH的版本信息

    \w :完整的工作目录名称。家目录会以 ~代替

    \W :利用basename取得工作目录名称,所以只会列出最后一个目录

    \# :下达的第几个命令

    \$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

可是,为什么老大机器上不同的位置为啥颜色还不一样呢?别急,我们往下看:

我们可以通过设置PS1变量使得提示符变成彩色。在PS1中设置字符序列颜色的格式为:\[\e[F;Bm\]    其中“F”为字体颜色,编号30~37;“B”为背景色,编号40~47。不过呢,能设置颜色,他就肯定能够取消设置,注意:这里的取消设置,和不设置是两吗事情!至于详细区别,当你读完了我的博文你就O了。呵呵。取消设置:\[\e[m\]

颜色表

 

 前景   背景   颜色

30      40      黑色

31      41      红色

32      42      绿色

33      43      黄色

34      44      蓝色

35      45      紫红色

36      46      青蓝色

37      47      白色

 

代码      意义

0            OFF

1            高亮显示

4            underline           

7            反白显示

8            不可见

 

举个例子吧~

打开我们的 .bashrc 文件

vim ~/.bashrc

往里边添加一行

 export PS1="[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]"

然后,保存并用source执行:

source ~/.bashrc

 

 
现在来看\[\e[32m\],这部分是用来设置颜色的,这几个字符结合上述的说明,可能看出此处是设置为绿色。接下来的\[\e[32m\]是设置为红色……而最后的\[\e[m\]是告诉Linux,往后的内容不需要颜色了~使用默认的颜色就好了。
然后#\##就是显示现在运行的是第几条命令了,看到了吧。我这里是第四条。
[#4#root@localhost ~]$
下来就是\u这是嘛意思?自己差表看去,然后不又是一个设在颜色的么(这里显示的不怎么好),
\h  \w 是什么意思?\h 是说:仅取主机的第一个名字,\w是说:显示完整的路径,如果是在用户的默认路径下则显示 ~,其余情况下都是显示完整路径的哦。
最前边的[ 和 最后的] 就是你看到的那个最外边包裹着的中括号了。明白了吧~
 
可是不少童鞋又有疑问了,这个只是设置了颜色和样式,平时好多童鞋在开发中都要用到git,那么在命令提示符里边如果有git状态的显示岂不是很完美?是的啊,接下来我们就来探讨下,如何让它显示git的状态。
 
经过博主的搜索,最终得到了一套方法:
那就是
在.bashrc文件中添加以下内容:
function parse_git_dirty {
  [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e /^[^*]/d -e "s/* \(.*\)/git:\1$(parse_git_dirty)/"
}
export PS1="\[\e[36m\]○ \[\e[33m\]\$(parse_git_branch)\[\e[m\] \w \[\e[36m\]\t\[\e[m\]\n\[\e[35m\]→\[\e[m\]"
 
具体意思各位看官就自行琢磨吧~!效果就先不秀了哈~
 
当然使用zsh会有更赞的效果,博主会在下周进行分享~敬请期待。
 
本文参考了:
鸟哥的Linux私房菜
http://blog.sina.com.cn/s/blog_6268defa0100wijx.html

 

让你的Shell命令提示符飞起来~

标签:

原文地址:http://www.cnblogs.com/nailding/p/5562838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!