0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux 中自定义 Bash 命令提示符

Linux爱好者 来源:YXQ 2019-08-09 18:11 次阅读

众所周知, bash (the B ourne- A gain Sh ell)是目前绝大多数 Linux 发行版使用的默认 shell。本文将会介绍如何通过添加颜色和样式来自定义 bash 命令提示符的显示。尽管很多插件或工具都可以很轻易地满足这一需求,但我们也可以不使用插件和工具,自己手动自定义一些基本的显示方式,例如添加或者修改某些元素、更改前景色、更改背景色等等。

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

在 bash 中,我们可以通过更改 $PS1 环境变量的值来自定义 bash 命令提示符。

一般情况下,bash 命令提示符会是以下这样的形式:

在上图这种默认显示形式当中,“sk” 是我的用户名,而 “ubuntuserver” 是我的主机名。

只要插入一些以反斜杠开头的特殊转义字符串,就可以按照你的喜好修改命令提示符了。下面我来举几个例子。

在开始之前,我强烈建议你预先备份 ~/.bashrc 文件。

?

1 $ cp ~/.bashrc ~/.bashrc.bak

更改 bash 命令提示符中的 username@hostname 部分

如上所示,bash 命令提示符一般都带有 “username@hostname” 部分,这个部分是可以修改的。

只需要编辑 ~/.bashrc 文件:

?

1 $ vi ~/.bashrc

在文件的最后添加一行:

?

1 PS1="ostechnix> "

将上面的 “ostechnix” 替换为任意一个你想使用的单词,然后按 ESC 并输入 :wq 保存、退出文件。

执行以下命令使刚才的修改生效:

?

1 $ source ~/.bashrc

你就可以看见 bash 命令提示符中出现刚才添加的 “ostechnix” 了。

再来看看另一个例子,比如将 “username@hostname” 替换为 “Hello@welcome>”。

同样是像刚才那样修改 ~/.bashrc 文件。

?

1 export PS1= ">Hello@welcome>

然后执行 source ~/.bashrc 让修改结果立即生效。

以下是我在 Ubuntu 18.04 LTS 上修改后的效果。

仅显示用户名

如果需要仅显示用户名,只需要在 ~/.bashrc 文件中加入以下这一行。

?

1 export PS1="u "

这里的 u 就是一个转义字符串。

下面提供了一些可以添加到 $PS1 环境变量中的用以改变 bash 命令提示符样式的转义字符串。每次修改之后,都需要执行source ~/.bashrc命令才能立即生效。

显示用户名和主机名

?

1 export PS1="uh "

命令提示符会这样显示:

?

1 skubuntuserver

显示用户名和完全限定域名

?

1 export PS1="uH "

在用户名和主机名之间显示其它字符

如果你还需要在用户名和主机名之间显示其它字符(例如 @ ),可以使用以下格式:

?

1 export PS1="u@h "

命令提示符会这样显示:

?

1 sk@ubuntuserver

显示用户名、主机名,并在末尾添加 $ 符号

?

1 export PS1="u@h\$ "

综合以上两种显示方式

?

1 export PS1="u@h> "

命令提示符最终会这样显示:

?

1 sk@ubuntuserver>

相似地,还可以添加其它特殊字符,例如冒号、分号、星号、下划线、空格等等。

显示用户名、主机名、shell 名称

?

1 export PS1="u@h>s "

显示用户名、主机名、shell 名称以及 shell 版本

?

1 export PS1="u@h>sv "

bash 命令提示符显示样式:

显示用户名、主机名、当前目录

?

1 export PS1="u@hw "

如果当前目录是 $HOME ,会以一个波浪线( ~ )显示。

在 bash 命令提示符中显示日期

除了用户名和主机名,如果还想在 bash 命令提示符中显示日期,可以在 ~/.bashrc 文件中添加以下内容:

?

1 export PS1="u@h>d "

在 bash 命令提示符中显示日期及 12 小时制时间

?

1 export PS1="u@h>d@ "

显示日期及 hh:mm:ss 格式时间

?

1 export PS1="u@h>dT "

显示日期及 24 小时制时间

?

1 export PS1="u@h>dA "

显示日期及 24 小时制 hh:mm:ss 格式时间

?

1 export PS1="u@h>d "

以上是一些常见的可以改变 bash 命令提示符的转义字符串。除此以外的其它转义字符串,可以在 bash 的 man 手册 PROMPTING 章节中查阅。

你也可以随时执行以下命令查看当前的命令提示符样式。

?

1 $ echo $PS1

在 bash 命令提示符中去掉 username@hostname 部分

如果我不想做任何调整,直接把 username@hostname 部分整个去掉可以吗?答案是肯定的。

如果你是一个技术方面的博主,你有可能会需要在网站或者博客中上传自己的 Linux 终端截图。或许你的用户名和主机名太拉风、太另类,不想让别人看到,在这种情况下,你就需要隐藏命令提示符中的 “username@hostname” 部分。

如果你不想暴露自己的用户名和主机名,只需要按照以下步骤操作。

编辑 ~/.bashrc 文件:

?

1 $ vi ~/.bashrc

在文件末尾添加这一行:

?

1 PS1="W> "

输入 :wq 保存并关闭文件。

执行以下命令让修改立即生效。

?

1 $ source ~/.bashrc

现在看一下你的终端,“username@hostname” 部分已经消失了,只保留了一个 ~> 标记。

如果你想要尽可能简单的操作,又不想弄乱你的 ~/.bashrc 文件,最好的办法就是在系统中创建另一个用户(例如 “user@example”、“admin@demo”)。用带有这样的命令提示符的用户去截图或者录屏,就不需要顾虑自己的用户名或主机名被别人看见了。

警告:在某些情况下,这种做法并不推荐。例如像 zsh 这种 shell 会继承当前 shell 的设置,这个时候可能会出现一些意想不到的问题。这个技巧只用于隐藏命令提示符中的 “username@hostname” 部分,仅此而已,如果把这个技巧挪作他用,也可能会出现异常。

为 bash 命令提示符着色

目前我们也只是变更了 bash 命令提示符中的内容,下面介绍一下如何对命令提示符进行着色。

通过向 ~/.bashrc 文件写入一些配置,可以修改 bash 命令提示符的前景色(也就是文本的颜色)和背景色。

例如,下面这一行配置可以令某些文本的颜色变成红色:

?

1 export PS1="u@[e[31m]h[e[m] "

添加配置后,执行 source ~/.bashrc 立即生效。

你的 bash 命令提示符就会变成这样:

类似地,可以用这样的配置来改变背景色:

?

1 export PS1="u@[e[31;46m]h[e[m] "

添加 emoji

大家都喜欢 emoji。还可以按照以下配置把 emoji 插入到命令提示符中。

?

1 PS1="W

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206745
  • Bash
    +关注

    关注

    0

    文章

    57

    浏览量

    10073

原文标题:在 Linux 上自定义 bash 命令提示符

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何自定义IIS错误提示

      有部分用户希望能够自定义IIS的错误提示,因为绝大部分的用户都不需要自定义错误提示的,以免对维护造成一些不必要的麻烦。所以我们默认是没有给用户开放该功能,但是保留了该功能
    发表于 11-22 00:37

    Linux命令行终端提示符多种实用技巧 老男孩linux培训

    所在的路径。示例如下: [oldboy@oldboy ~]$#<==@前的oldboy为当前用户,@后的oldboy为主机名,此处的~表示当前目录,即家目录。 4、Linux命令提示符
    发表于 12-22 15:47

    用户自定义终止EOF用法

    EOF(End OF File)在Linux命令和脚本中表示用户自定义终止,其用法如下:
    发表于 07-23 07:18

    零基础学习之Linux基础命令小结

    是当前用户的宿目录,最后的#号代表是提示符,一般在linuxroot的命令提示符是#,普通用户的命令提示符是$,同时
    发表于 09-20 10:52

    使用命令提示符时找不到内存模块是为什么?

    你好..如下图所示我的层次结构是......当我在GUI合成时,它是成功的。但是当我在命令提示符下做。它显示了这样的错误Elaborating模块.ERROR:HDLCompiler:1654
    发表于 05-01 12:58

    无法从命令提示符处获取TCL脚本的原因?

    嗨,我想试试JESD204硬件演示。为此,我必须在Windows命令提示符下使用“vivado -mode batch -source”运行.tcl脚本,但是当我输入此内容时,我收到一条错误,即vivado命令未知或错误。我现在能做什么?非常感谢您提前和最好的问候扬 -
    发表于 07-30 07:00

    关于命令提示符的说明

    linux@ubuntu:$开发板Linux系统下操作时命令提示符为:root@fsmp1a:$开发板u-boot期间操作是命令
    发表于 02-17 06:57

    为什么无法从u-boot命令提示符访问eMMC呢?如何去解决

    我们有基于 STM32MP157C-Eval 板的定制板。因此,我们无法从 u-boot 命令提示符访问 eMMC。目前,我们从 SD 卡启动并能够从 u-boot 命令提示符访问它。我们能够看到
    发表于 12-12 06:36

    如何利用FTM模式的iOS中发送自定义命令

    我们正在开发一款利用 ST25DV 芯片的 FTM 的 Android 和 iOS 应用程序。 在 Android 版本的 NFC Tap 应用程序,我们可以发送自定义命令并与 FTM 交互。但是
    发表于 12-26 09:22

    用LISP语言自定义AutoCAD命令

    用LISP语言自定义AutoCAD命令 AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能、运行速度和保密性等方面比起ARX等工具要逊色一些,但由于
    发表于 02-14 17:08 1979次阅读

    命令提示符被禁用怎么办

    命令提示符被禁用怎么办 方法一:修改注册表   运行:regedit,找到[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWi
    发表于 02-25 10:45 2278次阅读

    基于linux自定义一个脚本来替代rm命令

    linux下的rm命令,功能太强,同时又没法撤消,为了避免误操作,可以自定义一个脚本来替代rm命令
    的头像 发表于 02-01 18:08 3539次阅读
    基于<b class='flag-5'>linux</b>下<b class='flag-5'>自定义</b>一个脚本来替代rm<b class='flag-5'>命令</b>

    cmd如何在命令提示符下文件夹操作?详细方法实例分析

    本文档的主要内容详细介绍的是cmd如何在命令提示符下文件夹操作?详细方法实例分析。
    发表于 09-26 17:04 0次下载
    cmd如何在<b class='flag-5'>命令提示符</b>下文件夹操作?详细方法实例分析

    怎样用Windows命令提示符测试Internet连接

    可堆叠:ping的选项是可堆叠的,这意味着您可以在ping的末尾添加任意数量的选项。要查看所有选项,只需在命令提示符中单独键入“ ping”,就会出现一个列表,其中包含可用的ping选项以及其功能的简要说明。
    的头像 发表于 11-14 09:58 4739次阅读

    shell命令提示符的具体含义

    Shell命令提示符的含义因操作系统和Shell类型而异。在Linux系统中,Shell命令提示符通常由以下几部分组成: 用户名:显示当前登录用户的用户名。 主机名:显示当前系统的主机名,完整
    的头像 发表于 11-08 10:37 617次阅读