Linux终端颜色和标题设置

时间:2022-10-01 01:51:52

Linux给人最大的享受就是可以根据个人喜好去定制令自己舒服的系统配置,像终端颜色的设置就是一个典型的例子。

图1 系统默认状态下的终端显示

在没有经过自定义配置的终端下工作久了,难免容易疲劳,因为所有输入输出都是一个颜色,对查找一些命令的执行结果很不方便。除了颜色,默认终端配置下的长长的路径名也是一个让人比较蛋疼的地方。经过网上一番资料查找,才知道,原来对终端的配置,可以写到不同的文件之中,例如:~/.bashrc、/etc/bash.bashrc、/etc/profile这几个文件。但是,这些文件的作用又不尽相同,用户在进行配置之前必须先了解
各个文件的作用时机


/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.此文件默认调用
/etc/bash.bashrc文件。

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

     
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
     
~/.bashrc:该文件包含专用于你的bash shell的bash信息。
     
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

弄清楚几个文件的相互关系以及各自作用后,我们可以明白的是:针对于用户的配置,应该将配置信息写入~/.bashrc文件。我个人认为默认终端配置的不足之处有两个:1.没有使用不同的颜色以突出不同的内容;2.路径名太长导致有的时候输入的命令需要在新的一行显示。以下就通过解决这两个问题来完成本文。

1.颜色配置
   
 为了设置终端颜色,我们需要对
~/.bashrc文件中的
PS1变量进行定制。首先通过“gedit ~/.bashrc“命令打开文件,找到PS1变量所在位置:
图2 .bashrc文件中的PS1变量
Linux终端颜色和标题设置

这几句代码相信大家不难理解吧,简单地说就是:在颜色模式打开的情况下,PS1变量代表的内容就是用户名+主机名+路径名(长路径)+ $。

以下对PS1变量的设置进行具体分析:

首先我们要知道如下几张表:

前景            背景             颜色

---------------------------------------

30                40               黑色

31                41               紅色

32                42               綠色

33                43               黃色

34                44               藍色

35                45               紫紅色

36                46               青藍色

37                47               白色

1         透明色

代码             意义

-------------------------

0                 OFF

1                 高亮显示

4                 underline

5                 闪烁

7                 反白显示

8                 不可见

序列说明

\a ASCII响铃字符(也可以键入 \007)

\d "Wed Sep 06"格式的日期

\e ASCII转义字符(也可以键入 \033)

\h 主机名的第一部分(如 "mybox")

\H 主机的全称(如 "mybox.mydomain.com")

\j 在此 shell中通过按 ^Z挂起的进程数

\l 此 shell的终端设备名(如 "ttyp4")

\n 换行符

\r 回车符

\s shell的名称(如 "bash")

\t 24小时制时间(如 "23:01:01")

\T 12小时制时间(如 "11:01:01")

\@ 带有 am/pm的 12小时制时间

\u 用户名

\v bash的版本(如 2.04)

\V Bash版本(包括补丁级别) ?/td>;

\w 当前工作目录(如 "/home/drobbins")

\W 当前工作目录的“基名 (basename)”(如 "drobbins")

\! 当前命令在历史缓冲区中的位置

\# 命令编号(只要您键入内容,它就会在每次提示时累加)

\$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"

\xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "/007")表示的 ASCII 字符

\\ 反斜杠

\[这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash能够正确计算自动换行。

\] 这个序列应该出现在非打印字符序列之后。


在对以上知识有了基本了解之后,我们就可以进行实际操作了。首先在终端中使用命令“cp ~/.bashrc ~/.bashrc.backup”对配置文件进行备份(这里提醒各位,在Linux中,如果需要对配置文件之类的东西进行修改的话,最好进行备份,以防出错之后导致系统无法登录之类的问题),然后“gedit ~/.bashrc"打开文件,找到PS1变量设置的代码,注释之(在每一行代码前插入注释符号”#“)。在文件的末尾加上”
PS1='\u@\h:\w\$ '“(这是终端的默认设置,即不加任何颜色):

Linux终端颜色和标题设置

Linux终端颜色和标题设置

完成以上操作后保存并退出GEdit编辑器,回到终端后输入“source ~/.bashrc”,发现显示用户信息的地方没什么变化,说明刚才的设置与默认终端设置一致。


而接下来,我们就需要对显示的信息的字体颜色进行设置,首先看一下颜色是如何设置的:

颜色的设置公式

颜色=\033[代码;前景;背景m

如:\033[1;32;40m表示高亮显示字体为绿色,背景色为黑色(颜色定义见本文前面的表格)

注意:

要将全部非打印字符用专用的 bash 转义序列 "\["和 "\]"括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。

这点很关键要不然等你设好了颜色,你的终端换行会乱七八糟

现在对上边的PS1变量进行颜色的设置,即在需要更改颜色的地方插入颜色值,比如我们让用户名以红色显示的命令应该是:

PS1='\[\033[1;31;40m\]\u@\h:\w\$ '

同样对.bashrc文件进行修改后source一下,应该看到的结果如下:

Linux终端颜色和标题设置

事实上我们并不是想要所有信息的显示颜色都一样,所以我们要想办法让信息显示以不同颜色展示。这里大家可能会注意到,颜色设置的作用范围是从当前设置命令到下一颜色设置命令的,也就是说,如果我们只在\u前设置了颜色,那么终端的字体应该都是红色的,就像下边一样,不仅信息项是红色的,就连输入命令都是红色的:

Linux终端颜色和标题设置

为此,我们需要在@符号前面插入新的颜色值以防止整个信息项以红色显示,修改后的PS1变量为:

PS1='
\
[\033[1;31;40m\]
\u
\
[\033[00m\]
@\h:\w\$ '

同样source一下,结果出来了:

Linux终端颜色和标题设置

明白了对PS1变量进行设置的原理之后,用户就可以根据自己的需要随心所欲地设置PS1变量了,比如在PS1变量中插入字符串,或者为每个信息项设置不同的颜色,或者控制信息栏显示的内容:

我们可以让用户名带下划线,路径以白色显示,并且美元符号以绿色显示,命令则以蓝色显示:
PS1='
\
[\033[4;31;40m\]
\u
\
[\033[00m\]
@\h:
\
[\033[37;40m\]
\w\
[\033[32;40m\]
\$ \
[\033[34;40m\]
'
source一下,效果如下:
Linux终端颜色和标题设置

至此,终端的颜色设置问题已经解决,以下解决路径名问题。

2.终端中长路径名问题

有时候在终端需要连续打开几层的文件夹才能访问到我们所需的文件,而这个时候在终端中显示的路径名就像是一条长长的尾巴,有没有什么好的办法使终端只显示用户当前的工作目录的名字呢?其实在前边的序列说明中已经提及,我们可以在PS1变量设置终端只显示工作目录的基名,即将PS1变量中的\w的小写的w换成大写的W,修改后的PS1变量为:

PS1='
\
[\033[4;31;40m\]
\u
\
[\033[00m\]
@\h:
\
[\033[37;40m\]
\W\
[\033[32;40m\]
\$ \
[\033[34;40m\]
'
下面通过图片说明二者的效果:
Linux终端颜色和标题设置

Linux终端颜色和标题设置

可以发现,经过修改PS1变量的值之后,终端将只显示当前工作目录的基名了~。

最后,综合以上所说,分享一下我的PS1变量,我的变量里边是设置为不显示主机名并且显示短路径名的:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;04;32m\]\u\[\033[00m\]:\[\033[01;37m\]\W\[\033[31m\]\$ \[\033[00m\]'
Linux终端颜色和标题设置

最后,可能各位还会发现,如果打开新的终端,用户定义的配置并没有显示出来,而还是显示默认的配置。

这个时候可以通过source 命令去手动加载.bashrc文件,这时候,我们所设置的配置又回来了。

Linux终端颜色和标题设置

当然,终端作为我们在系统之中常用的工具之一,如果每次打开终端都要source一次,那岂不是蛋疼死了?回到文章开头的地方,我们说
/etc/profile
文件
从/etc/profile.d目录的配置文件中搜集shell的设置.此文件默认调用
/etc/bashrc
文件,于是我们可以打开profile文件看一看:

“sudo gedit /etc/bashrc”(注意这里需要加上sudo!)
Linux终端颜色和标题设置

可以看到,在文件中有一句调用/etc/bash.bashrc文件的代码,所以可以推断,前文所说的profile文件自动加载bash.bashrc文件,事实上就是由代码实现的,于是我们同样地可以在这里添加一句新的代码,以使profile自动加载用户的.bashrc文件,以此实现我们不需每次打开终端都要source的需求。

Linux终端颜色和标题设置

保存之后关闭编辑器,新打开一个终端,可以发现,我们之前的配置已经能够自动加载了。

Linux终端颜色和标题设置


3.ls命令设置
    在终端一个常用的命令就是ls命令了,我们可以通过在.bashrc文件中设置alias以实现ls命令的一些自定义设置:
Linux终端颜色和标题设置

alias其实是相当于一个命令引用的东西,例如最后一句,每当你在终端里边输入ls命令,终端会根据.bashrc文件中的alias的设置查找到引用的命令:ls --color=auto,所以你每次输入“ls”其实就相当于输入了“
ls --color=auto”,而这句命令的作用是显示当前目录的可见文件,并且以颜色区分不同类型的文件,比如文件夹和普通文件。

Linux终端颜色和标题设置


最后一个值得一提的就是一个小建议了,之前看到的我的终端都是黑底的,其实用户可以直接在终端中设置首选项以实现半透明背景,或者是以一张图片作为背景也可以:

Linux终端颜色和标题设置


Linux终端颜色和标题设置

Linux终端颜色和标题设置的更多相关文章

  1. linux终端颜色控制

    引言: 由于在c代码中看到过打印彩色字, 又对PS1 想进一步了解,才有了这篇博文.----------------------------------------Linux 终端控制台字体颜色  - ...

  2. Linux 终端颜色高亮

    昨天在改一些东西时,不小心将root下的一些配置文件删掉了.导致启动终端后,字完全一个颜色,没有区分.在网上找到的都是 改整体颜色的.但实际上这时应该搜Linux终端高亮才能找到解决办法.在这里再列出 ...

  3. 一款不错的Linux终端颜色设置

    PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ " #步骤# vi ...

  4. Linux终端颜色设置

    http://blog.sina.com.cn/s/blog_65a8ab5d0101g6cf.html http://www.tuicool.com/articles/NRZfIj #PS1='${ ...

  5. linux 终端颜色代码

    echo -e "\033[背景;字体颜色m 字符串\033[0m" eg : echo -e "\033[30m 黑色字 \033[0m"   字体颜色(30 ...

  6. linux终端命令行前缀设置为“当前目录”(非绝对路径)

    操作 打开家目录下的隐藏文件.bashrc 定位到62行,将小写的\W改为大写,保存即可. 重新打开bash 注意: /etc/profile , /etc/bashrc等文件里的环境变量设置会被.b ...

  7. go get 无反应方法 Win/Linux 命令行、终端和 Git 代理设置

    go get -u -v 无反应方法 CMD要用管理员权限运行,否则设置无效 netsh winhttp set proxy proxy-server="https=127.0.0.1:10 ...

  8. linux终端terminal个性化配置(转)

    http://blog.csdn.net/pipisorry/article/details/39584489 {本文介绍Linux终端字体颜色设置.终端提示符显示内容设置.自定义alias命令} l ...

  9. 通过printf设置Linux终端输出的颜色和显示方式

    转载自:http://www.cnblogs.com/clover-toeic/p/4031618.html 在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出 ...

随机推荐

  1. mac包管理器Homebrew安装命令

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  2. Codeforces 527C Glass Carving

    vjudge 上题目链接:Glass Carving 题目大意: 一块 w * h 的玻璃,对其进行 n 次切割,每次切割都是垂直或者水平的,输出每次切割后最大单块玻璃的面积: 用两个 set 存储每 ...

  3. 利用管道实现Shell多进程

    shell中有个&,表示该程序在后台执行,其实是fork了一个子进程,跟系统调用是一样的. 在实际的操作过程中,有时需要控制后台程序的个数,毕竟启动太多的后台,会对服务的性能造成影响. 所以需 ...

  4. android 简单的开机自启

    今天我们主要来探讨android怎么让一个service开机自动启动功能的实现.Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.in ...

  5. 【转】silverlight 跨域访问

    作者:MIDI  来源:博客园  发布时间:2010-01-01 17:39  阅读:204 次  原文链接   [收藏]    在 Silverlight 使用 WebService .WCF.We ...

  6. 漫谈程序猿系列:她发现了一个Bug……

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  7. 我的Python成长之路---第八天---Python基础(25)---2016年3月5日(晴)

    多进程 multiprocessing模块 multiprocessing模块提供了一个Process类来代表一个进程对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  8. seaJS 模块加载过程分析

    先看一个seajs的官方example,  以下以seajs.use('main')为例, 解析加载mod main的过程 //app.html seajs.use("main") ...

  9. axios(封装使用、拦截特定请求、判断所有请求加载完毕)

    博客地址:https://ainyi.com/71 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 Node.js 中使用 vue2.0之后,就不再对 vue-resource 更新 ...

  10. Codeception 实战

    Codeception 测试 Php 代码 一.一句话概述 使用 cc 进行单元测试,保证现有代码质量,为以后维护与重构提供支撑. 二.目标 安装配置 cc 编写测试代码,简化开发与最大化稳定性和可维 ...