Terminal该如何自定义提示详解

前言

当我们打开终端时,在输入命令的位置之前,会有一段字符,显示当前用户、主机名等信息。

有的同学可能使用zshell,它功能更丰富,并且可以选择主题。不同的主题前面那段字符是不一样的。比如我主题用的是ys,显示效果如下。从左至右依次是:# 用户名 @ 主机名 in 当前路径 (如果是git仓库,会显示当前分支,是否是clean状态) 当前时间

那么这些提示是如何进行设置的呢?今天刚好看到这篇文章,记录一下。

如何自定义

其实核心就一句。

export PS1="hello world "

后面跟上你想显示的字符串就可以。如果使用bash,将这句加上~/.bash_profile最后;如果是zshell,则加到~/.zshrc中,然后重启终端。

添加之后的效果如下:

如果想要显示用户名,当前路径,可以这样设置,顺便加个$结尾,以便与敲入的命令分隔。

export PS1="hello $USER `pwd` $ "

效果如图:

设置颜色

从图1可以看出,zshell提示的颜色可谓是多种多样。那么颜色该如何设置呢。

google一下,发现要让shell的输出显示颜色,只需要带上颜色字符即可。

比如\033[0;31m代表红色。如果在终端中敲入:echo "begin \033[0;31m end" ,end会显示为红色,begin还是原本设置的原色,就简称为本色吧。效果如下:

如果想让end后面的字符显示本色,在end后面跟上Reset Color,对应下表中的'\033[0m'。

完整颜色表如下:

# Reset
Color_Off='\033[0m'  # Text Reset

# Regular Colors
Black='\033[0;30m'  # Black
Red='\033[0;31m'   # Red
Green='\033[0;32m'  # Green
Yellow='\033[0;33m'  # Yellow
Blue='\033[0;34m'   # Blue
Purple='\033[0;35m'  # Purple
Cyan='\033[0;36m'   # Cyan
White='\033[0;37m'  # White

# Bold
BBlack='\033[1;30m'  # Black
BRed='\033[1;31m'   # Red
BGreen='\033[1;32m'  # Green
BYellow='\033[1;33m'  # Yellow
BBlue='\033[1;34m'  # Blue
BPurple='\033[1;35m'  # Purple
BCyan='\033[1;36m'  # Cyan
BWhite='\033[1;37m'  # White

# High Intensity
IBlack='\033[0;90m'  # Black
IRed='\033[0;91m'   # Red
IGreen='\033[0;92m'  # Green
IYellow='\033[0;93m'  # Yellow
IBlue='\033[0;94m'  # Blue
IPurple='\033[0;95m'  # Purple
ICyan='\033[0;96m'  # Cyan
IWhite='\033[0;97m'  # White

# Bold High Intensity
BIBlack='\033[1;90m'  # Black
BIRed='\033[1;91m'  # Red
BIGreen='\033[1;92m'  # Green
BIYellow='\033[1;93m'  # Yellow
BIBlue='\033[1;94m'  # Blue
BIPurple='\033[1;95m'  # Purple
BICyan='\033[1;96m'  # Cyan
BIWhite='\033[1;97m'  # White

# High Intensity backgrounds
On_IBlack='\033[0;100m' # Black
On_IRed='\033[0;101m'  # Red
On_IGreen='\033[0;102m' # Green
On_IYellow='\033[0;103m' # Yellow
On_IBlue='\033[0;104m' # Blue
On_IPurple='\033[0;105m' # Purple
On_ICyan='\033[0;106m' # Cyan
On_IWhite='\033[0;107m' # White

同样可以在.bash_profile/~/.zshrc中设置提示的颜色。

如下让用户名为绿色,路径为红色:

export PS1="hello `echo '\033[0;32m'` $USER `echo '\033[0;31m'` `pwd` $ "

效果如下:

此时$也是红色的,若要设置成本色,可添加reset color。

另外,在这篇文章 中,提到了如何显示当前xcode版本,git分支,git status的实现,有兴趣可以看看。

参考链接:

Hacking my shell prompt so I make fewer mistakes working with Xcode projects

How to change the output color of echo in Linux

总结

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

(0)

相关推荐

  • ubuntu修改terminal终端的主机名的实现方法

    ubuntu修改terminal终端的主机名的实现方法 有时候安装完Ubuntu系统后,打开命令终端,终端显示的主机名格式比较难看,例如 我最近买的国内某云的VPS. xxx@VM-1560-ubuntu$ xxx@VM-1560-ubuntu$ 对于有洁癖的人来说,看到这么长还带横杆的系统名就烦,想进各种方法消除他,还好,linux上命令修改特别方便. 一.关于hostname命令 hostname命令在linux上可以查看以及设置当前系统的名字 1. 查看hostname xxx@VM-15

  • MySQL之终端Terminal(dos界面)管理数据库、数据表、数据的基本操作

    MySQL有很多的可视化管理工具,比如"mysql-workbench"和"sequel-pro-". 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码.同时写出来这些文章,是想要给大家当个参考,希望也能对大家有所帮助,有所提升,这就是我为什么要写终端操作MySQL的文章了. 注意:MySQL数据库命令不区分大小写.但在MAC的终端,如果你想使用tab自动补全命令,那么你就必须使用大

  • 如何在mac的terminal安装Apache Tomcat

    首先是下载Apache Tomcat 网址是http://tomcat.apache.org/download-70.cgi 下载好之后解压到你常用的目录下面,这里我放到了desktop 通过输入以下命令行进入apache文件的bin包 cd /Users/akilyu/Desktop/apache-tomcat-7.0.78/bin1 然后输入. /startup.sh 来启动tomcat ./startup.sh1 此时如果出现Permission denied,表明当前的权限不能作出此命令

  • Android Studio升级到3.0 Terminal 中文显示异常解决

    遇到这个问题的话应该是平时终端用的是zsh造成的,如果不是的话,那我也没办法,至少我是这么解决的,希望也可以帮到你. 具体Bug如下所示 内心有一万匹草泥马呼啸而过,捣豉了很久,最终在某群中问了下得到了答案,解决途径如下. 打开~/.zshrc文件,找到如下两行. # You may need to manually set your language environment # export LANG=en_US.UTF-8 我们把第二行取消注释即可,保存之后重启AS即可,熟悉的中文又出现在终

  • PhpStorm terminal无法输入命令的解决方法

    在使用PhpStorm时,点击下面的terminal时,发现怎么输入都不显示,于是一查才发现是phpstorm与win10系统不兼容的问题,只要设置一下控制台(使用老版本就ok了) 步骤非常简单: win+r打开控制器,鼠标右键标题栏,点击属性,选择选项标签,勾选使用旧版控制台(需要重新启动),然后重启phpstorm,重新打开terminal就可以正常输入使用了, 如图: 以上就是小编为大家带来的PhpStorm terminal无法输入命令的解决方法全部内容了,希望大家多多支持我们~

  • Mac Android Studio 3.0 Terminal 中文乱码问题处理

    前几天,收到 AS 发布的 3.0 更新,就迫不及待的更新了,更新后发现整个界面的画风都变了,和 IDEA 更像了 本人是命令行重度使用患者,平时都是使用 AS 下面的 Terminal,升级完成后,使用 git log 命令查看历史 log,发现中文全部显示不出来 开始以为是 git 的问题,经测试现象如下 直接输入中文会显示 <00e6><0096> 云云,使用 ls 命令查看会显示 ??? 一堆问号,使用 ls | grep 反而正常,具体原因不详 后来在 Google 上找

  • Terminal该如何自定义提示详解

    前言 当我们打开终端时,在输入命令的位置之前,会有一段字符,显示当前用户.主机名等信息. 有的同学可能使用zshell,它功能更丰富,并且可以选择主题.不同的主题前面那段字符是不一样的.比如我主题用的是ys,显示效果如下.从左至右依次是:# 用户名 @ 主机名 in 当前路径 (如果是git仓库,会显示当前分支,是否是clean状态) 当前时间 那么这些提示是如何进行设置的呢?今天刚好看到这篇文章,记录一下. 如何自定义 其实核心就一句. export PS1="hello world &quo

  • Android xmlns 的作用及其自定义实例详解

     Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上面你写错了,不会有任何问题,但是在运行的时候就会有问题,提示你没有指定宽度等什么.这个是不用联

  • 微信小程序 Toast自定义实例详解

    微信小程序 Toast自定义实例详解 实现类似于Android的Toast提示 index.js: var timer; var inputinfo = ""; var app = getApp() Page({ data: { animationData:"", showModalStatus:false }, onLoad: function () { }, showModal: function () { // 显示遮罩层 var animation = wx

  • Android 自定义阴影效果详解及实例

    Android 自定义阴影效果详解及实例 Android5.X中,Google为其增加了两个属性 android:elevation=" " 与 android:translationZ=" ",对应垂直方向上的高度变化.系统会自动增加阴影效果. 在TabLayout中增加android:elevation=" 8dp" ,效果如下: 箭头指向的就是系统为我们默认提供,结果差强人意.那我们是不是可以自定义阴影,不使用系统提供的. 自定义阴影效果

  • 关于Laravel-admin的基础用法总结和自定义model详解

    总结laravel-admin展示用到的基本方法 基础用法 自定义model 当列表数据获取有特定条件或自己写ORM方法时可以用到,支持排序 $grid->model()->select('id','name')->where('status',1)->groupBy('project_id'); $grid->model()->select('id','name')->where('status',1)->groupBy('project_id'); //

  • Vue自定义事件(详解)

    前面的话 父组件使用props传递数据给子组件,子组件怎么跟父组件通信呢?这时,Vue的自定义事件就派上用场了.本文将详细介绍Vue自定义事件 事件绑定 每个 Vue 实例都实现了事件接口 (Events interface),即 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件 [注意]Vue 的事件系统分离自浏览器的EventTarget API.尽管它们的运行类似,但是 $on 和 $emit 不是addEventListener 和 disp

  • python魔法方法-自定义序列详解

    自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python 的相关的协议.所谓的协议就是一些约定内容.例如,如果要将一个类要实现迭代,就必须实现两个魔法方法:__iter__.next(python3.x中为__new__).__iter__应该返回一个对象,这个对象必须实现 next 方法,通常返回的是 self 本身.而 next 方法必须在每次调用的时

  • jsp中自定义Taglib详解

    一.自定义标签入门之无参数自定义标签 1.开发自定义标签类 当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发). 自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求. 如果标签类包含属性,每个属性都有对应的getter和setter方法. 重

  • Angular17之Angular自定义指令详解

    1 什么是HTML HTML文档就是一个纯文本文件,该文件包含了HTML元素.CSS样式以及JavaScript代码:HTML元素是由标签呈现,浏览器会为每个标签创建带有属性的DOM对象,浏览器通过渲染这些DOM节点来呈现内容,用户在浏览器中看到的内容就是浏览器渲染DOM对象后的结果. 2 指令的分类 组件.属性指令.结构性指令 3 指定义指令常用到的一些常量 3.1 Directive 用于装饰控制器类来指明该控制器类是一个自定义指令控制器类 3.2 ElementRef 作为DOM对象的引用

  • Angular4.x Event (DOM事件和自定义事件详解)

    Angular组件和DOM元素通过事件与外部进行通信,两者中的事件绑定语法是相同的-(eventName)="expression": <button (click)="onClick()">Click</button> DOM元素 DOM 元素触发的一些事件通过 DOM 层级结构传播,事件首先由最内层的元素开始,然后传播到外部元素,直到它们到根元素,这种传播过程称为事件冒泡. DOM事件冒泡与Angular可以无缝工作,具体示例如下: im

随机推荐