https://zhuanlan.zhihu.com/p/348416919
我们大多数使用的shell提示符,显示用户名、主机名和当前所在目录。在本文将会介绍如何定制一个自己喜欢的Bash。

了解BASH

shell的提示符是通过一个特殊的shell变量PS1来控制的。还有其他变量,比如PS2、PS3和PS4。Bash在准备读取命令时显示第一个提示符变量PS1

当它需要更多的输入来完成一个命令时,它会显示第二个提示符变量PS2

bash允许通过插入一些“反斜杠”\转义的特殊字符来定制这些提示字符串。

显示当前Bash提示符

[root@localhost ~]# echo $PS1
[\u@\h \W]\$

每个被转义的特殊字符解释如下:

  • \u: 显示当前用户
  • \h: 显示主机名
  • \W: 打印当前所在目录
  • \$: 如果有效UID为0,则显示#(指的是root用户),否则显示$(指的是普通用户)

修改Bash提示符

如果想要使修改的shell提示否永久生效,可以把变量写在家目录下面的.bashrc文件里面。若要想全局生效,所有用户都生效,可以写在/etc/bash.bashrc或者/etc/bashrc配置文件里面。

例如:在提示符中显示用户名、主机名、目录所在的绝对路径、显示24小时制当前时间,将命令保存到~/.bashrc文件中。:

[root@localhost ~]# echo 'export PS1="[\\u@\\h \\W \\A]\\$ "' >> ~/.bashrc
[root@localhost ~]# source ~/.bashrc
[root@localhost ~ 11:28]#

以下是常用特殊字符:

  • \u: 显示当前用户
  • \w: 打印当前所在目录的绝对路径
  • \W: 打印当前所在目录
  • \h: 显示主机名
  • \H: 显示完全合格域名
  • \A: 显示当前时间24小时制
  • \@: 显示当前时间12小时制
  • \$: 如果有效UID为0,则显示#(指的是root用户),否则显示$(指的是普通用户)
  • \j: 当前由shell管理的作业数量

为Bash提示符添加配色

一下是常用的配色,有修改字体颜色、修改为粗体、添加下划线、设置背景颜色等设置:

'\e[0;30m' # 黑色
'\e[0;31m' # 红色
'\e[0;32m' # 绿色
'\e[0;33m' # 黄色
'\e[0;34m' # 蓝色
'\e[0;35m' # 紫色
'\e[0;36m' # 青色
'\e[0;37m' # 白色
'\e[1;30m' # 黑色 粗体
'\e[1;31m' # 红色 粗体
'\e[1;32m' # 绿色 粗体
'\e[1;33m' # 黄色 粗体
'\e[1;34m' # 蓝色 粗体
'\e[1;35m' # 紫色 粗体
'\e[1;36m' # 青色 粗体
'\e[1;37m' # 白色 粗体
'\e[4;30m' # 黑色 下划线
'\e[4;31m' # 红色 下划线
'\e[4;32m' # 绿色 下划线
'\e[4;33m' # 黄色 下划线
'\e[4;34m' # 蓝色 下划线
'\e[4;35m' # 紫色 下划线
'\e[4;36m' # 青色 下划线
'\e[4;37m' # 白色 下划线
'\e[40m' # 黑色 背景
'\e[41m' # 红色 背景
'\e[42m' # 绿色 背景
'\e[43m' # 黄色 背景
'\e[44m' # 蓝色 背景
'\e[45m' # 紫色 背景
'\e[46m' # 青色 背景
'\e[47m' # 白色 背景
‘\e[0m' # 重置为默认值

下面是配色方案,可以把自己喜欢的添加到~/.bashrc文件里面,然后让他生效:

[root@localhost ~ 15:49]# export PS1="\e[0;30m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;31m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;32m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;33m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;34m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;35m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;36m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0;37m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]#
[root@localhost ~]# export PS1="\e[1;30m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;31m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;32m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;33m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;34m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;35m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;36m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[1;37m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]#
[root@localhost ~]# export PS1="\e[4;30m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;31m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;32m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;33m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;34m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;35m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;36m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[4;37m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]#
[root@localhost ~]# export PS1="\e[40m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[41m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[42m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[43m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[44m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[45m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[46m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[47m[\\u@\\h \\W]\\$ \e[m "
[root@localhost ~]# export PS1="\e[0m[\\u@\\h \\W]\\$ \e[m "

如果想要使提示符的每个部分显示的颜色不同,下面一个例子可以了解一下:

[root@localhost log#] export PS1="\e[35m[\\u\e[m@\e[36m\\h \e[33m\\W]\e[1,33m\\$\e[m "

命令解释:

  • "[\e[35m[\\u: 开头添加中括号"[",当前登录的用户部分使用紫色字体
  • \e[m@: "@"符号不给配色,使用默认颜色
  • \e[36m\\h : 主机名称部分使用青色
  • \e[33m\\W]: 当前所在目录使用黄颜色,在其后面添加中括号"]"
  • \e[1,33m\\$\e[m ": $符号加粗,使用黄颜色

总结

在本文介绍了如何定制一个自己喜欢的Bash Shell提示符,希望可以帮助大家。

[转帖]如何修改Bash Shell的提示符的格式和配色的更多相关文章

  1. ubuntu修改Bash命令行提示符

    用户通过远程登陆,初始的PS1为\s-\v\$, bash为/bin/bash,然后先后执行/etc/profile和~/.bash_profile中的命令. /etc/profile文件中调用执行/ ...

  2. (转)linux bash shell 入门教程

    Shell Script(bash)简介 众所皆知地,UNIX上以小工具著名,利用许多简单的小工具,来完成原本需要大量软体开发的工作,这一点特色,使得UNIX成为许多人心目中理想的系统平台. 在众多的 ...

  3. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  4. Ubuntu下把缺省的dash shell修改为bash shell

    Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行she ...

  5. Ubuntu下修改缺省dash shell为bash shell

    Debian和Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. 这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它 ...

  6. [Bash Shell] Shell学习笔记

    1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...

  7. Linux命令行–基本的bash shell命令

    启动shell: /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 用户名 用户密码 用户的系统UID 用户的系统GID 用户的全名 用户 ...

  8. linux BASH shell设置字体与背景颜色

    linux BASH shell下设置字体及背景颜色的方法. BASH shell下设置字体及背景颜色  echo -e "\e[31mtest\e[41m"  \e[30m 将字 ...

  9. linux(4) vi编辑/删除、复制、粘贴 /bash shell 环境变量设置/数据流重定向 | 的用法

    一.vi文字处理器1.vi与vimvi:文字处理器vim:程序开发工具2.vi介绍三种模式:一般模式(vi刚进入的,不可编辑),编辑模式(按i后,左下方是insert)和命令行模式(按esc退出,:w ...

  10. 了解基本的bash shell命令

    本节内容主要介绍如何使用bash shell提供的基本命令处理Linux文件和目录: 1.启动shell shell是一个可以交互访问的Linux系统程序,它的运行与普通程序相同,系统启动的shell ...

随机推荐

  1. 一个Tomcat 如何部署多个项目?附多种解决方案及详细步骤!

    此文源自一次多年前面试的面试题,民工哥将它总结出来分享给大家,希望对大家有所帮助,或者今后的面试中说不定会用的上. 首先,我们了解一下常见的Java Web服务器. Tomcat:由Apache组织提 ...

  2. 虚拟化H搭建

    虚拟化H搭建 H搭建所需要的硬件配置 最大值:所有组件不能超过160个cpu 按安装H需要2G内存+若干个guest(不明确多大),最大支持2个TB内存 最小磁盘2G 一个千兆网卡 lscpu信息 [ ...

  3. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 12.认识GamePlayTag, 实现技能的互斥

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 17 - GameplayTags, 67.67节.本文将会讲述UE4中Gamepl ...

  4. Spring源码学习笔记7——Spring bean的初始化

    一丶前言 上篇中我们了解了Spring bean的实例化--存在方法覆盖的使用CGLIB动态代理生成子类,反之反射调用构造函数.实例化后bean中的字段都是默认值,接下来就是对bean的属性进行填充, ...

  5. DevOps|我们需要什么样的产研项目管理工具

    上一篇文章<DevOps|产研运协作工具链上的皇冠-项目管理工具>主要讲了项目管理工具对软件研发的重要性,本篇文章主要想讲清楚我们需要什么样的项目管理工具,项目管理工具必须具备的功能有哪些 ...

  6. 带你认识一下多模态对比语言图像预训练CLIP

    本文分享自华为云社区<多模态对比语言图像预训练CLIP:打破语言与视觉的界限>,作者:汀丶. 一种基于多模态(图像.文本)对比训练的神经网络.它可以在给定图像的情况下,使用自然语言来预测最 ...

  7. 揭秘华为云GaussDB(for Redis)丨大key治理

    本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第31期:大key治理>,作者: 高斯Redis官方博客. 从DBA的视角看,大Key无疑是引起Redis线上问题的常见 ...

  8. CANN 5.0硬核技术抢先看

    摘要:2021年12月,CANN5.0版本也将与大家正式见面,通过软硬件协同优化,该版本将会实现训练性能再翻倍,凭实力展现AI领域的「中国速度」! 本文分享自华为云社区<CANN 5.0硬核技术 ...

  9. MySQL 是如何实现RC事务隔离级别的

    摘要:Read Committed,事务运行期间,只要别的事务修改数据并提交,即可读到人家修改的数据,所以会有不可重复读.幻读问题. 本文分享自华为云社区<MySQL RC事务隔离级别的实现&g ...

  10. nginx启动后,服务器还是无法访问,问题排除:设置防护墙开放断开

    首先检查 nignx -t 然后查看 ps -ef | grep  nginx 如果以上都没有问题那就是防火墙的问题 如果以上都没有问题那就是防火墙的问题 查看版本 firewall-cmd --ve ...