作者:请叫我浪漫先生_858 | 来源:互联网 | 2023-05-18 23:01
前段时间,刚来实习的时候,由于自己的开发机环境还没配好,就用了老大的机器,打开之后,咦~!为啥不是传统Linux的[root@hostname]?这引起了本宝宝极大的好奇心(为啥装嫩?难道要装老
前段时间,刚来实习的时候,由于自己的开发机环境还没配好,就用了老大的机器,打开之后,咦~!为啥不是传统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 文件
往里边添加一行
export PS1="[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]"
然后,保存并用source执行:
现在来看\[\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