|
|
51CTO旗下网站
|
|
移动端

如何调教你的终端提示符?

之前有读者问到,如何在终端显示当前的git分支,实际上这就是自定义终端显示配置了。不过在直接介绍如何显示当前分支之前,来看看到底怎么回事。

作者:守望先生来源:编程珠玑|2020-03-26 13:36

之前有读者在《Linux下如何优雅地修正命令?》中问到,如何在终端显示当前的git分支,实际上这就是自定义终端显示配置了。

不过在直接介绍如何显示当前分支之前,来看看到底怎么回事。

bashrc配置

每次我们登录一个shell终端的时候,前面都有一些固定的显示信息:

  1. root@ubuntu:# 

这些显示信息其实可以配置的。

我们打开用户家目录下的.bashrc文件,找到类似下面的关于PS1的内容:

  1. if [ "$color_prompt" = yes ]; then 
  2.     PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ ' 
  3. else 
  4.     PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ ' 
  5. fi 

这里就是用来配置你的终端显示的了。

有必要对里面的一些信息进行解释。例如[\033[01;32m]中,01为前景色,32为背景色,颜色代码如下:

  1. 前景色 背景色   
  2. 30      40      黑色 
  3. 31      41      红色 
  4. 32      42      绿色 
  5. 33      43      黄色 
  6. 34      44      蓝色 
  7. 35      45      紫红色 
  8. 36      46      青蓝色 
  9. 37      47      白色 

举个例子:

  1. $ echo -e "\033[31m red color \033[0m" 
  2.  red color  

而其他的符号什么意思呢?

  1. \d :代表日期, 
  2. \H :完整的主机名称 
  3. \h :仅取主机的第一个名字 
  4. \t :显示时间为24小时格式,如:HH:MM:SS 
  5. \T :显示时间为12小时格式 
  6. \A :显示时间为24小时格式:HH:MM 
  7. \u :用户名 
  8. \v :BASH的版本信息 
  9. \w :完整的工作目录名称 
  10. \W :列出最后一个目录 
  11. \$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$ 

所以说白了,就是根据你自己的需要配置自己终端想要的信息。

这个时候我们再来看前面的其中一条简单的配置:

  1. '${debian_chroot:+($debian_chroot)}\u@\h:\W\$ ' 

$debian_chroot这里我们可以忽略,因为它是一个变量的值,我们完全可以自定义。

可以看到这里有:

  1. \u 用户名 
  2. \h 主机名 
  3. \W 最后一个目录名 
  4. \$ 提示字符 

而通过命令获取的相关内容分别为:

  1. $ whoami 
  2. root 
  3. $ hostname 
  4. ubuntu 
  5. $ basename `pwd` 
  6. 公众号编程珠玑 

所以我的终端最终显示的是:

  1. root@ubuntu:公众号编程珠玑#  

通常来说,默认的配置就可以了,经常需要改动的可能就是默认它显示了全路径,这里只需要将

  1. \w 替换为 \W 

即可。

然后执行命令:

  1. source ~/.bashrc 

让配置生效即可。

再来梳理一下过程:

  • 根据需要修改PS1显示项
  • 执行source .bashrc使其生效

这里注意,Linux启动过程中,配置文件加载是有顺序的,

某用户家目录下的bashrc只影响当前用户,如果想要全系统修改生效,可以修改/etc/bash.bashrc(系统差异,可能不一样)。

如何显示当前git分支

其实到这里你应该基本上已经明白了,无非就是将git当前分支的信息配置在PS1中罢了。

如何获取当前git分支

我们都知道:

  1. $ git branch 
  2.   master 
  3. * testBranch 

可以查看分支信息,其中前面有*的表示当前所在分支,所以我们通过字符处理拿到即可。

或者直接通过命令:

  1. $ git rev-parse --abbrev-ref HEAD 
  2. testBranch 

拿到。

将分支信息配置在PS1中

考虑到有的目录下可能并不存在git项目,所以需要做是否为空的判断,也要注意处理标准错误。因此将获取git分支信息的部分写成一个shell函数:

  1. git_branch() 
  2.    branch=`git rev-parse --abbrev-ref HEAD 2>/dev/null` 
  3.    if [ "${branch}" != "" ] 
  4.    then 
  5.        if [ "${branch}" = "(no branch)" ] 
  6.        then 
  7.            branch="(`git rev-parse --short HEAD`...)" 
  8.        fi 
  9.        echo "($branch)" 
  10.    fi 

将其加入到.bashrc文件结尾中,然后修改PS1的内容:

  1. PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W$(git_branch)\$ ' 
  2. PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W$(git_branch)\[\033[00m\]\$ ' 

修改完成后保存,执行:

  1. $ source ~/.bashrc 

当前里面的颜色你可以根据自己的需要自定义。再来看看之前的效果,是不是觉得没那么难配置了?

总结

实际上就是根据自己的需要去配置终端显示罢了,可以自己选择颜色,变量内容等等。

【编辑推荐】

  1. 使用这个Twitter客户端在Linux终端中发推特
  2. 在Linux终端中阅读Reddit
  3. 如何在Ubuntu中更改默认终端
  4. 如何在你的Fedora终端上播放音乐
  5. 如何在Ubuntu中安装多个终端以及更改默认终端
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

 敏捷无敌之 Gitlab CI 持续集成

敏捷无敌之 Gitlab CI 持续集成

打破运维与研发壁垒
共5章 | KaliArch

104人订阅学习

秒杀高并发白话实战

秒杀高并发白话实战

主流高并发架构
共15章 | 51CTO崔皓

60人订阅学习

网络排障一点通

网络排障一点通

网络排障及优化调整案例
共20章 | 捷哥CCIE

473人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微