当前位置: 首页 > 科技观察

如何调整终端提示?

时间:2023-03-19 01:16:52 科技观察

有读者在《Linux下如何优雅地修正命令?》询问如何在终端显示当前的git分支。其实这就是自定义终端显示配置。但在直接讨论如何显示当前分支之前,让我们看看发生了什么。bashrc配置我们每次登录一个shell终端,前面都有一些固定的显示信息:root@ubuntu:#这些显示信息其实是可以配置的。我们打开用户主目录下的.bashrc文件,发现PS1有类似如下内容:if["$color_prompt"=yes];thenPS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$'elsePS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$'fi在这里配置您的终端显示。有必要对里面的一些信息进行说明。例如[\033[01;32m]中,01为前景色,32为背景色,颜色代码如下:前景色背景色3040黑色3141红色3242绿色3343黄色3444蓝色3545紫色3646blue3747white一个例子:$echo-e"\033[31mredcolor\033[0m"redcolor其他符号是什么意思?\d:表示日期,\H:完整的主机名\h:只取主机名\t:以24小时格式显示时间,如:HH:MM:SS\T:显示时间在12小时格式\A:24小时格式显示时间:HH:MM\u:用户名\v:BASH版本信息\w:完整的工作目录名\W:列出最后一个目录\$:提示字符,如果是是root,提示符是:#,对于普通用户:$那么说白了,就是根据自己的需要,为自己的终端配置自己想要的信息。这个时候我们看一下前面的一个简单配置:'${debian_chroot:+($debian_chroot)}\u@\h:\W\$'$debian_chroot这里可以忽略,因为它是一个变量值,我们是完全可定制的。可以看到有:\uusername\hhostname\Wlast目录名\$提示符通过命令获取到的相关内容为:$whoamiroot$hostnameubuntu$basename`pwd`公众号programmingpearls所以我最后展示的terminal是:root@ubuntu:公众号programmingzhuji#一般来说默认配置就好了,经常需要改的可能是默认显示全路径。这里只需要将\w替换成\W即可。然后执行命令:source~/.bashrc使配置生效。再梳理一下流程:根据需要修改PS1显示项,执行source.bashrc使其生效。这里要注意,在Linux启动过程中,配置文件是顺序加载的。用户主目录中的bashrc仅影响当前用户。系统修改生效,可以修改/etc/bash.bashrc(系统不同可能不同)。如何显示当前的git分支其实到这里你应该已经基本明白了,无非就是在PS1中配置当前git分支的信息。我们都知道如何获取当前的git分支:$gitbranchmaster*testBranch可以查看分支信息,前面的*表示当前分支,所以我们可以通过字符处理来获取。或者直接通过命令获取:$gitrev-parse--abbrev-refHEADtestBranch。在PS1中配置分支信息考虑到git项目中可能有些目录不存在,所以需要判断是否为空,同时也要注意处理标准错误。所以把获取git分支信息的部分写成一个shell函数:git_branch(){branch=`gitrev-parse--abbrev-refHEAD2>/dev/null`if["${branch}"!=""]thenif["${branch}"="(nobranch)"]thenbranch="(`gitrev-parse--shortHEAD`...)"fiecho"($branch)"fi}添加到.bashrc文件的末尾,然后修改PS1的内容:PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W$(git_branch)\$'PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W$(git_branch)\[\033[00m\]\$'保存修改后,执行:$source~/.bashrc里面的当前颜色可以根据自己的需要自定义。先来看看之前的效果吧。你觉得配置没有那么难吗?总结其实就是根据自己的需要配置终端显示。您可以自行选择颜色、可变内容等。