概述

在现实生活中,每一位 Linux 使用者都要面对 Bash。 虽然第一眼看上去非常枯燥,但是又很多方法能够让你的 shell 足够的个性化。 shell 提示符的彩色增强让能够让你的 shell 独一无二, 而且还非常清晰易读。

在本文中我以 Bash shell 为例。因为在不同的终端里的转义序列不完全相同, 所以在本文中我使用的是 ANSI 终端。

Shell 的配置

shell 彩色配置出现在 bash 的个人配置文件  ~/.bashrc  或者是全局配置文件  /etc/bashrc  里面。 可以通过 bashrc  里面的 PS1 变量来设置提示符的外观。

通常情况下,这个条目看起来应该是这个样子:

~/.bashrc: PS1="\s-\v\$ "

\s 表示 shell 的名称,-\v 表示他的版本号。 在提示符的最后面我们放置了一个 $。这样看起来也许有点乏味, 所以不妨试试下面这种模式——这种模式在大多数 Linux 的发行版本下是默认的设置:

~/.bashrc: PS1="\u@\h \w \$ "

这表示 用户@ 当前目录 $,这个是大部分 Linux 用户都熟悉的 shell 提示符。

转义序列

要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[。这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, = 用八进制表示的 33)。

要直接在 shell 里面输入转义序列我们需要先按 ctrl-v: CTRL-v ESC 。

使用 shell 的颜色

下面我用一个提示符的例子来解释 shell 的颜色。

~/.bashrc: PS1="\[\033[0;32;40m\u@\h:\w\$ \]"

这样提示符就全部显示成绿色了。就像这样:

nico@ebrain:~$

\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度。稍后我会介绍其他的可用字符。 转义序列字符串要用

括起来, 防止转义序列的文本显示在 shell 里占用太多的空间。

下面我们要选择前景色(这里是 32,代表绿色)。背景色的 40 表示黑色。 要是不想让提示符后面的文字也变成绿色,我们用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。前景色和背景色都有 8 种可用的选择。

可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。

用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。

示例:

~/.bashrc: PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"

这给了我们一个非常多彩的提示符:

nico@ ebrain: ~$

我们使用  export PS1="string"  来测试这些设置, 稍后我们要把这些设置转移到  .bashrc  里面。 现在我的提示符看起来是这个样子:

PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]\033[1;37;40m $\033[0;37;0m\] "
[ nico@ebrain:~ ]

文本属性

刚才提到了,在第一个转义序列后面的“0”是提示符的文本的默认颜色设置。 对于文本属性来说,这些值是有意义的:0、1、22、4、24、5、25、7、27, 分别表示:默认值、粗体、非粗体、下划线、非下划线、闪烁、非闪烁、 反显、非反显。

通过下面这一段短小的脚本,我们可以看看色彩组合。

#!/bin/sh
############################################################
# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
# Last change: Mon Feb 16 16:24:41 CET 2004
############################################################for attr in 0 1 4 5 7 ; doecho "----------------------------------------------------------------"printf "ESC[%s;Foreground;Background - \n" $attrfor fore in 30 31 32 33 34 35 36 37; dofor back in 40 41 42 43 44 45 46 47; doprintf '\033[%s;%s;%sm %02s;%02s  ' $attr $fore $back $fore $backdoneprintf '\n'doneprintf '\033[0m'
done

这段脚本可以从  showansicol.tar.gz  下载,格式是  tar.gz 。

另一个程序

在 shell 中设置颜色不仅仅能创建更加漂亮的提示符, 在编写控制台程序的时候也非常有用。

对于一个要使用彩色的程序员,就必须要使用类似  slang  或  ncurses  这样的的库,者通常会增加执行文件的大小。  Ncurses  有着或多或少的独立于终端的类型的优势。

C 语言示例

用绿色打印“Hello Word”:

#include <stdio.h>
int main(void){const char *const green = "\033[0;40;32m";const char *const normal = "\033[0m";printf("%sHello World%s\n", green, normal);return 0;
}

另外一个有用的转义序列是  printf("\033[2J") ,它和  system(clear)  完成的功能一样。但是可以不需要头文件 unistd.h 。

使用 printf("\033[1K")  可以删除一行。

初始化脚本示例

如果我们想在  /etc/init.d  的  init  脚本成功的执行后, 得到一个漂亮的、清晰易读的提示,而不是一个简单的  '.' , 我们可以再一次的使用转义序列。

这是一段  cron init script  的摘录:

#!/bin/sh
# Start/stop the cron daemon.
test -f /usr/sbin/cron || exit 0case "$1" instart)  echo -n "Starting periodic command scheduler: cron"start-stop-daemon --start --quiet --exec /usr/sbin/cronecho "."
;;

如果  cron  脚本执行成功就会显示一个句点。 可以用 [Ok] 给这些信息添加上彩色特征,通过改变  echo  字符串,例如:

#!/bin/sh
# Start/stop the cron daemon.
test -f /usr/sbin/cron || exit 0
case "$1" in
start)  echo -n "Starting periodic command scheduler: cron"start-stop-daemon --start --quiet --exec /usr/sbin/cron
echo "\[ \033[1;34;40m[ \033[1;32;40mOk \033[1;34;40m]\033[0m\]";;

把这个设置应用到所有的 init脚本上非常耗费时间, 除非使用转义序列 \033 —— 因为 Ctrl-v 不是作为一个字符来处理的。

linux命令行颜色相关推荐

  1. linux命令行颜色,技术|在 Linux 命令行中自定义文本颜色

    在 Linux 命令行当中使用不同颜色以期提供一种根据文件类型来识别文件的简单方式.你可以修改这些颜色,但是在做之前应该对你做的事情有充分的理由. 如果你在 Linux 命令行上花费了大量的时间(如果 ...

  2. Linux(CentOS下)更改终端命令行颜色及网络配置

    测试环境:CentOS 7 1. 修改CentOS命令行颜色 1.1. 用户命令行颜色修改: 进入用户家目录,输入命令 ls -al 然后,用vim或者vi编辑器打开.bash_profile文件,在 ...

  3. 修改linux终端命令行颜色

    最近一直在使用 linux操作系统(Ubuntu16)学习 Docker,在使用过程中发现命令的输入输出均是白色,很容易看花眼,而且不容易区分输入与输出内容.于是下定决心,修改 linux 终端命令行 ...

  4. linux命令行界面颜色配置,如何配置Linux命令行的字体和背景颜色

    我们使用Linux的时候,经常需要使用命令行.Linux命令行的背景默认是白色的,字体默认是黑色,14像素的.那么我们如何根据自己的喜好配置Linux命令行的字体和背景颜色呢?下面小编给大家分享一下. ...

  5. 修改linux终端命令行颜色+PS1设置

    默认的linux终端命令行风格就是黑白,不容易区分输出内容,很容易看花眼.学习修改linux终端命令行颜色的方法,自己对那些方法进行了验证,最终找到了有效的修改linux终端命令行颜色的方法. 1.P ...

  6. 如何修改Linux命令行中的文本颜色

    简述 如果你在 Linux 命令行上花费了大量的时间(如果没有,那么你可能不会读这篇文章),你无疑注意到了 ls 以多种不同的颜色显示文件.你可能也注意到了一些区别 -- 目录是一种颜色,可执行文件是 ...

  7. 【老鸟分享】Linux命令行终端提示符多种实用技巧!

    1.Linux命令行提示符简介 众所周知,Linux命令行是系统管理员管理Linux的重要手段,我们管理Linux,首先要面对的就是Linux命令行提示符. Linux命令行结尾的提示符有" ...

  8. 实用!五款新型 Linux 命令行工具

    使用新的替代工具来改进旧的命令行工具. 作者 | Ricardo Gerardi 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 在Linux/Unix系统 ...

  9. [转]12款最佳Linux命令行终端工具

    摘要 "工欲善其事必先利其器",作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是 ...

最新文章

  1. 其他OJ 树型DP 选课
  2. Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)
  3. 深入解析Java字节码和字节码操作类库ASM源码解析
  4. 关于Linux下的umask
  5. 《通过C#学Proto.Actor模型》之 HelloWorld
  6. Qt:Qt实现飞秋拦截助手—ARP攻击
  7. 压力测试工具siege的用法
  8. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
  9. WEB测试—功能测试
  10. 【UAC】Windows UAC 原理浅析
  11. AXURE原型设计经验总结
  12. typecho插件:用访问量统计插件
  13. easybcd卸载linux系统,Windows 8.1和Ubuntu 14.04双系统卸载Ubuntu参考教程
  14. CF235C Cyclical Quest
  15. appium通过定位坐标进行定位(兼容模式)
  16. 什么是操作系统?操作系统的功能有哪些??
  17. python 矢量场的构造、计算;通过 matplotlib 作图、分析、筛选符合要求的像素点
  18. 微信公众平台接口调试工具——蓝牙设备调试篇
  19. jQuery小游戏之锅打灰太郎
  20. mPaaS 服务端核心组件:消息推送 MPS 架构及流程设计

热门文章

  1. 2018.10.30-dtoj-4008-纸牌游戏(cards)
  2. 注解 java.lang.annotation.Inherited 介绍
  3. Spring 5.0 GA版本发布,支持JDK9及反应式编程
  4. java尝试编写macd,试验顶背离底背离
  5. WebService简单开发 apache-cxf-3.1.6环境配置
  6. [转载]项目风险管理七种武器-多情环
  7. 删除linux系统中的ifcfg-eth0.bak
  8. 经过五年测试 维基利用HTML5迈入视频时代
  9. Linux基础操作优化
  10. javaSE----eclipse的安装与使用