【腾讯云的1001种玩法】自定义 Shell Prompt

在之前的文章里,我们教了大家如何设置 Bash 的提示语,来告知操作人,正在操作的是哪台服务器。但是,很多时候,我们经常要执行非常多的命令,来完成我们的工作,那么在同时操作多个服务器时,依然容易迷失在命令行之中。

今天,我来教你如何自定义我们的 Bash 的提示,来帮助我们认清我们的服务器。

什么是 Shell Prompt

我们的命令行前面会有一个简单的提示,这个提示就是 Shell Prompt 。我们通过自定义 Shell Prompt 可以实现自定义的提示。通过这个提示,就可以提醒用户,你目前操作的是什么服务器。

Shell Prompt 的格式

Shell Prompt 的格式被定义在 $PS1 变量中,你可以通过执行 echo $PS1来拿到当前的提示。比如我的提示就是[\u@\h \W]\$

我们通过修改 $PS1变量,就可以实现修改Shell Prompt 的提示。

Shell Prompt 的含义

在上面的提示中,我们去掉用作区分的标点符号,我们可以提取出来 \u\h\W\$,这些符号都有其特殊的含义,借助它们的特殊含义,我们可以实现我们的需求。

  • \u:展示当前的用户的用户名
  • \h:展示主机名
  • \W:展示当前的目录的目录名
  • \w:展示当前目录的全路径
  • \T:展示24小时制的时间
  • \n:换行符
  • \r:回车符
  • \s:Shell名
  • \$:当是普通用户时,会展示#,如果是 root 用户展示$
  • \H:展示 FQDN 主机名
  • \@:展示 AM/PM 形式的日期。

完整的内容可以查看: Prompt magic - IBM

安全起见下,我们如何选择我们的Shell?

为了实现我们的提醒效果,建议大家在shell中展示全路径、主机名、用户身份,并且注明当前服务器是什么环境,比如。我设置完成后,是这样的。

Production | \u@\h \w \t \n \$

这样一个提示,可以立刻明白我是在操作生产环境,以免我误操作时,没有注意到我使用的是哪个环境。你也可以根据你的需要来设置你的 Shell Prompt 的内容。

给Shell Prompt上个色

有些时候,文字可能无法给我们足够的警示。这时,我们可以选择为我们的 shell Prompt 加个颜色,这样能够更好的展示。

如果想要为我们的shell上色,就要在我们的Shell中加入上色的代码

其中,

  • \e[x;y m 为给后续的文字上色,x,y都是颜色的编号。其中常用的红色为0;31,蓝色0;34,绿色0;32
  • \e[m则为停止上色。

\e[0;31m Production \e[m | \u@\h \w \t \n \$

设置为默认的输出

虽然目前我们设置成功了,但是并没有像我们的提示信息一样存留,重新连接就会消失。

这是,我们需要修改一下配置文件,来加入我们的设置。

我们可以修改 ~/.bashrc~/.bash_profile,再其中添加代码,来实现我们的输出效果.

在这个文件中加入如下代码,即可实现效果。

export PS1 = '\e[0;31m Production \e[m | \u@\h \w \t \n \$'

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨龙飞前端

scrollto 到指定位置

2964
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

5988
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

5248
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

8718
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

7246
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3308
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3675
来自专栏落花落雨不落叶

canvas画简单电路图

85811
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

5607
来自专栏跟着阿笨一起玩NET

c#实现打印功能

3742

扫码关注云+社区