首页 > 技术文章 > Linux-自定义命令行提示符

cofear 2016-08-20 14:07 原文

漂亮的Linux命令提示符

每天面对着白底黑字(黑底白字)的命令行是否枯燥泛味呢?生活应给是五彩缤纷的,何不为单调无味的生活增添一抹色彩?
下面一起体验一下Linux命令行提示符惊险的整容之旅

惊鸿一瞥

整容前

整容后

神奇吧!下面就让我们拿起手术刀...

牛刀小试

首先到家目录下

[cofear@localhost ~]$

打开.bash_profile文件

[cofear@localhost ~]$ vi .bash_profile

我们会看的

 1 # .bash_profile
 2 
 3 # Get the aliases and functions
 4 if [ -f ~/.bashrc ]; then
 5         . ~/.bashrc
 6 fi
 7 
 8 # User specific environment and startup programs
 9 
10 PATH=$PATH:$HOME/bin
11 
12 export PATH

我们只需在最后一行加export PS1="\e[36m\u\e[0m@\e[32m\h\e[0m: \e[34m\W\e[0m\$ "

  1 # .bash_profile
  2 
  3 # Get the aliases and functions
  4 if [ -f ~/.bashrc ]; then
  5         . ~/.bashrc
  6 fi
  7 
  8 # User specific environment and startup programs
  9 
 10 PATH=$PATH:$HOME/bin
 11 
 12 export PATH
 13 
 14 export PS1="\e[36m\u\e[0m@\e[32m\h\e[0m: \e[34m\W\e[0m\$ " 

保存退出,使文件生效

[cofear@localhost ~]$ . .bash_profile

我们就会看到整容成功

庖丁解牛

下面看看大师是如何操刀的

先看这条命令export PS1="\e[36m\u\e[0m@\e[32m\h\e[0m: \e[34m\W\e[0m\$ "

什么是PS1

PS1是Linux用来设置命令提示符的环境变量

"\h、\u、\W"是什么鬼

\u :当前用户的账号名称
\H :完整的主机名称
\h :主机名
\w :完整的工作目录名称
\W :当前工作目录名称
\$ :提示字符,root为# ,普通用户为$

其它

\d :日期
\t :显示时间为24小时格式
\T :显示时间为12小时格式
\A :显示时间为24小时格式

"\e[36m、\e[0m"又是什么鬼

\e[36m 是ANSI控制码,又叫VT100系列控制码,用于在字符显示系统中控制光标移动和字符色彩等

ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),\033来输入ESC,\033[36m即为ESC[36m

在Linux里\033[等同于\e[,故用\e[36m

颜色代码

背景色 字体色
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色

ANSI控制码

控制码 说明
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐

到这儿大家都以为整容之旅结束了,说好的惊险呢?

奇幻之旅

其实冒险才刚刚开始

假设我的命令足够长

再长点,说好的换行呢?

再长点,为何覆盖了前面的东西?

再长点,好吧,你吓到我了!

额,好吧整容貌似失败,看来操刀大师浪得虚名!

走的太急,忽略了什么?

export PS1="\[\e[36m\]\u\[\e[0m\]@\[\e[32m\]\h\[\e[0m\]: \[\e[34m\]\ W\[\e[0m\]\$ "
凡事都应该收敛\[\e[36m\]\e[36m这是一个整体,应该[]起来。

完美谢幕

当我们以为冒险结束时,才是真正的开始

推荐阅读