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

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

之前有读者在《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 

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

总结

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

责任编辑:赵宁宁 来源: 编程珠玑
相关推荐

2019-06-25 14:05:41

Linux提示符命令

2023-10-30 17:31:40

Linux提示符颜色

2017-07-26 13:30:54

LinuxShell命令

2023-09-24 19:28:29

微软Windows 11

2022-02-15 09:40:45

提示符Starship

2021-02-25 17:54:43

StarshipshellLinux

2021-12-25 23:22:32

Windows 10Windows微软

2010-03-15 15:38:47

Python运行

2022-04-02 10:45:17

PythonShell命令

2010-06-23 16:19:48

Linux Bash

2010-06-01 09:09:15

MySQL命令提示符程

2017-07-19 08:45:45

2009-09-08 08:18:09

Windows 7命令提示符

2018-11-27 11:10:53

Linuxbash命令

2017-07-24 10:42:24

IT技术周刊

2012-05-10 09:36:12

LinuxPS

2011-09-19 15:16:28

vista命令提示符

2022-01-14 23:41:28

Windows 10Windows微软

2021-05-31 11:45:37

LinuxRustShell

2023-05-18 08:00:00

LLMGPT-4自然语言模型
点赞
收藏

51CTO技术栈公众号