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

在Linux上自定义bash命令提示符

时间:2023-03-13 19:02:27 科技观察

众所周知,bash(theBourne-AgainShell)是大多数Linux发行版使用的默认shell。本文将向您展示如何通过添加颜色和样式来自定义bash命令提示符显示。虽然很多插件或者工具可以轻松满足这个需求,但是我们也可以在不使用插件和工具的情况下,手动自定义一些基本的显示方式,比如添加或者修改某些元素,改变前景色,改变背景色等。在Linux中自定义bash命令提示符在bash中,我们可以通过更改$PS1环境变量的值来自定义bash命令提示符。通常,bash命令提示符如下所示:在上面的默认显示中,“sk”是我的用户名,“ubuntuserver”是我的主机名。只需插入一些以反斜杠开头的特殊转义字符串,您就可以根据自己的喜好修改命令提示符。让我举几个例子。在开始之前,我强烈建议您事先备份您的~/.bashrc文件。$cp~/.bashrc~/.bashrc.bak更改bash命令提示符中的username@hostname部分如上所示,bash命令提示符一般都有“username@hostname”部分,可以修改。只需编辑~/.bashrc文件:$vi~/.bashrc在文件底部添加一行:PS1="ostechnix>"将上面的“ostechnix”替换为您要使用的任何单词,然后按ESC和Enter:wq保存并退出文件。执行如下命令使修改生效:$source~/.bashrc,在bash命令提示符中可以看到刚刚添加的“ostechnix”。让我们看另一个例子,比如用“Hello@welcome>”替换“username@hostname”。同样修改~/.bashrc文件。exportPS1="Hello@welcome>"然后执行source~/.bashrc使修改立即生效。以下是在Ubuntu18.04LTS上修改后的效果。只显示用户名如果只需要显示用户名,只需要在~/.bashrc文件中添加如下一行即可。exportPS1="\u"这里的\u是一个转义字符串。下面是一些可以添加到$PS1环境变量中以更改bash命令提示符外观的转义字符串。每次修改后,都需要执行source~/.bashrc命令才能立即生效。DisplayusernameandhostnameexportPS1="\u\h"命令提示符会这样显示:skubuntuserverDisplayusernameandfullyqualifieddomainnameexportPS1="\u\H"Displayothercharactersbetweenusernameandhostname需要在用户名和主机名之间显示其他字符(如@),可以使用如下格式:exportPS1="\u@\h"命令提示符会这样显示:sk@ubuntuserver显示用户name,hostname,andin最后添加$符号exportPS1="\u@\h\\$"将以上两种显示方式结合起来exportPS1="\u@\h>"命令提示符最终会出现显示如下:sk@ubuntuserver>同理,还可以加上其他特殊字符,如冒号、分号、星号、下划线、空格等。显示用户名、主机名、shell名exportPS1="\u@\h>\s"显示用户名、主机名、shell名和shell版本exportPS1="\u@\h>\s\v"bash命令提示符显示样式:显示用户名、主机名、当前目录在bash命令提示符中显示日期除了用户名和主机名之外,如果想在bash命令提示符中显示日期,可以在~/.bashrc文件中添加以下内容:exportPS1="\u@\h>\d"以bash命令提示符显示日期和12小时制时间exportPS1="\u@\h>\d\@"以hh:mm:ss格式显示日期和时间exportPS1="\u@\h>\d\T"显示日期和24小时制exportPS1="\u@\h>\d\A"以hh:mm:ss格式显示日期和24小时制exportPS1="\u@\h>\d\t"以上是一些常用的转义字符串,可以改变bash命令提示符。其他转义字符串可以参考bashman手册的PROMPTING章节。您也可以随时执行以下命令来查看当前的命令提示符样式。$echo$PS1去掉bash命令提示符中的username@hostname部分如果我不想做任何调整,我可以直接去掉整个username@hostname部分吗?答案是肯定的。如果您是技术博主,您可能需要在您的网站或博客上上传您自己的Linux终端截图。也许您的用户名和主机名太奇特和奇特以至于其他人看不到,在这种情况下您需要隐藏命令提示符的“用户名@主机名”部分。如果您不想公开您的用户名和主机名,只需按照以下步骤操作即可。编辑~/.bashrc文件:$vi~/.bashrc在文件末尾添加这一行:PS1="\W>"输入:wq保存并关闭文件。执行以下命令使修改立即生效。$source~/.bashrc现在看看你的终端,“用户名@主机名”部分不见了,只剩下一个~>标记。如果您想要最简单的操作而不弄乱您的~/.bashrc文件,最好的方法是在系统中创建另一个用户(例如“user@example”、“admin@demo”)。如果您使用带有此类命令提示符的用户进行屏幕截图或录制屏幕,则无需担心您的用户名或主机名被他人看到。警告:在某些情况下,不推荐这种做法。比如zsh这样的shell会继承当前shell的设置,这时候可能会出现一些意想不到的问题。这一招只是用来隐藏命令提示符中的“用户名@主机名”部分,仅此而已,如果将这一招用于其他用途,也可能会出现异常。给bash命令提示符着色目前,我们只改变bash命令提示符的内容。下面介绍一下如何给命令提示符上色。通过在~/.bashrc文件中写入一些配置,可以修改bash命令提示符的前景色(即文本的颜色)和背景色。比如下面这行配置可以把一些文字的颜色变成红色:exportPS1="\u@\[\e[31m\]\h\[\e[m\]"添加配置后,执行source~/.bashrc立即生效。您的bash命令提示符将如下所示:同样,您可以使用此配置更改背景颜色:exportPS1="\u@\[\e[31;46m\]\h\[\e[m\]"添加每个人都喜欢的表情符号。您还可以使用以下配置将表情符号插入命令提示符。PS1="\WLCTT译者HankChow🌟🌟🌟🌟-27访问我的LCTT主页|在GitHub上关注我