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变量
        这几句代码相信大家不难理解吧,简单地说就是:在颜色模式打开的情况下,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\$ '“(这是终端的默认设置,即不加任何颜色):




    完成以上操作后保存并退出GEdit编辑器,回到终端后输入“source ~/.bashrc”,发现显示用户信息的地方没什么变化,说明刚才的设置与默认终端设置一致。
 
    而接下来,我们就需要对显示的信息的字体颜色进行设置,首先看一下颜色是如何设置的:

颜色的设置公式

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

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

注意:

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

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

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

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

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

    为此,我们需要在@符号前面插入新的颜色值以防止整个信息项以红色显示,修改后的PS1变量为:
PS1='\[\033[1;31;40m\]\u\[\033[00m\]@\h:\w\$ '
    同样source一下,结果出来了:

    明白了对PS1变量进行设置的原理之后,用户就可以根据自己的需要随心所欲地设置PS1变量了,比如在PS1变量中插入字符串,或者为每个信息项设置不同的颜色,或者控制信息栏显示的内容:
我们可以让用户名带下划线,路径以白色显示,并且美元符号以绿色显示,命令则以蓝色显示:
PS1='\[\033[4;31;40m\]\u\[\033[00m\]@\h:\[\033[37;40m\]\w\[\033[32;40m\]\$ \[\033[34;40m\]'
source一下,效果如下:

至此,终端的颜色设置问题已经解决,以下解决路径名问题。
 
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\]'
下面通过图片说明二者的效果:



    可以发现,经过修改PS1变量的值之后,终端将只显示当前工作目录的基名了~。
    最后,综合以上所说,分享一下我的PS1变量,我的变量里边是设置为不显示主机名并且显示短路径名的:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;04;32m\]\u\[\033[00m\]:\[\033[01;37m\]\W\[\033[31m\]\$ \[\033[00m\]'


    最后,可能各位还会发现,如果打开新的终端,用户定义的配置并没有显示出来,而还是显示默认的配置。
    这个时候可以通过source 命令去手动加载.bashrc文件,这时候,我们所设置的配置又回来了。
    当然,终端作为我们在系统之中常用的工具之一,如果每次打开终端都要source一次,那岂不是蛋疼死了?回到文章开头的地方,我们说/etc/profile文件从/etc/profile.d目录的配置文件中搜集shell的设置.此文件默认调用/etc/bashrc文件,于是我们可以打开profile文件看一看:
“sudo gedit /etc/bashrc”(注意这里需要加上sudo!)

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

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

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

    alias其实是相当于一个命令引用的东西,例如最后一句,每当你在终端里边输入ls命令,终端会根据.bashrc文件中的alias的设置查找到引用的命令:ls --color=auto,所以你每次输入“ls”其实就相当于输入了“ls --color=auto”,而这句命令的作用是显示当前目录的可见文件,并且以颜色区分不同类型的文件,比如文件夹和普通文件。
 
    最后一个值得一提的就是一个小建议了,之前看到的我的终端都是黑底的,其实用户可以直接在终端中设置首选项以实现半透明背景,或者是以一张图片作为背景也可以:

 
原博客:http://blog.sina.com.cn/s/blog_6d0cbb0301019egu.html

ubuntu 终端设置(颜色与长路径)的更多相关文章

  1. Ubuntu终端字体颜色方案

    默认: 蓝色代表该文件夹: 绿色代表可运行文件. 红色表示压缩文件. 浅蓝色表示链接文件: 灰色表示其它文件: 红色闪烁表示链接的文件有问题了 黄色表示设备文件. 非常不爽怎么办,改! # Attri ...

  2. Ubuntu终端命令行缩短显示路径

    平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长, 有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户根目录下 ...

  3. ubuntu里面设置颜色

    比方我是这么写的:base_color:#FAF9DE;selected_bg_color:#008522 (背景为浅黄色,选择框为绿色) 写完之后按回车确认,立即生效! 这里另一个极其严重的 bug ...

  4. ubuntu终端ls颜色配置

    buntu中没有LS_COLORS,/etc/目录中也没有DIR_COLORS,所以这里使用dircolor命令加以解决 1. 利用dircolors命令,查看我们的系统当前的文件名称显示颜色的值,然 ...

  5. ubuntu 终端命令颜色的修改

    http://blog.chinaunix.net/uid-13954789-id-3137184.html http://blog.chinaunix.net/uid-26021340-id-348 ...

  6. ubuntu终端颜色配置

    对于刚接触ubuntu的同学们,打开终端(ctrl+alt+T),会发现里面都是一个颜色,不管是用户名.主机名还是命令都是白色,当然,用 ls 列出文件的时候是会多一种颜色的.即使这样,对开发人员来说 ...

  7. ubuntu终端颜色快速配置

    ubuntu终端颜色快速配置 根据以下step步骤设置即可 step1:备份:cp ~/.bashrc ~/.bashrc.backup step2:打开文件:vim ~/.bashrc step3: ...

  8. Ubuntu终端命令行不显示颜色

    在网上找到的一个有效方案是在.bash_profile 中增加颜色定义 export LS_COLORS='di=01;35:ln=01;36:pi=40;33:so=01;35:do=01;35:b ...

  9. [转载]Linux下终端字体颜色设置方法

    原文地址:Linux下终端字体颜色设置方法作者:router 网上类似的文章有很多,但是都是转来转去的,没有经过测试,按照很多文章的方法会造成你设置之后的终端在换行和删除输入字符时终端显示会乱七八糟, ...

随机推荐

  1. QT学习入门笔记

    系统路径 path 添加dll路径,如D:\QT\5.4\mingw491_32. .pro 文件添加 QT +=  widgets,否则出现qapplication no such file or ...

  2. Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例

    遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...

  3. textview 弹出键盘上面添加完成按钮,并设置输入内容的格式。

    - (void)setContentView{ self.contentTextView = [[UITextView alloc]initWithFrame:CGRectMake(11, 70, S ...

  4. Net力软快速信息化系统开发框架 + 开发手册+数据库说明

    源码目录结构说明LeaRun.Cache –缓存层LeaRun.Resource –本地语言LeaRun.Utilities –公共类库LeaRun.DataAccess –数据库访问核心组件LeaR ...

  5. Unity Application 前后台切换调用关系

    [Unity Application 前后台切换调用关系] http://blog.csdn.net/aa4790139/article/details/48087877

  6. Redis的5种数据结构

    Redis可以存储可以存储键与5种不同数据结构类型之间的映射. 五种结构类型为:STRING(字符串).LIST(列表).SET(集合).HASH(散列).ZSET(有序集合). 1.字符串类型Str ...

  7. SpringMVC集成缓存框架Ehcache

    在互联网应用中,应用并发比传统企业及应用会高出很多.解决并发的根本在于系统的响应时间与单位时间的吞吐量.思路可分为:一减少系统的不必要开支(如缓存),二是提高系统单位时间内的运算效率(如集群). 在硬 ...

  8. Nginx-->基础-->排错-->nginx错误总结

    一.启动时错误 1.错误提示: 2016/11/16 17:36:41 [emerg] 2458#2458: getpwnam("nginx") failed 查看错误日志文件内容 ...

  9. Xcode Custom Shortcut

    edit file "/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources" add < ...

  10. SQL Server 查询所有外键子父表关系

    SELECT table_name,fk_name,reference_table_name,fk_list_number,fk_detailFROM (SELECT object_name(f.ob ...