Ubuntu終端顏色設置、路徑名設置以及ls命令設置

 Linux給人最大的享受就是可以根據個人喜好去定製令自己舒服的系統配置,像終端顏色的設置就是一個典型的例子。
圖1 系統默認狀態下的終端顯示
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    在沒有經過自定義配置的終端下工作久了,難免容易疲勞,因爲所有輸入輸出都是一個顏色,對查找一些命令的執行結果很不方便。除了顏色,默認終端配置下的長長的路徑名也是一個讓人比較蛋疼的地方。經過網上一番資料查找,才知道,原來對終端的配置,可以寫到不同的文件之中,例如:~/.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變量
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
        這幾句代碼相信大家不難理解吧,簡單地說就是:在顏色模式打開的情況下,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\$ '“(這是終端的默認設置,即不加任何顏色):
Ubuntu終端顏色設置、路徑名設置以及ls命令設置

Ubuntu終端顏色設置、路徑名設置以及ls命令設置

    完成以上操作後保存並退出GEdit編輯器,回到終端後輸入“source ~/.bashrc”,發現顯示用戶信息的地方沒什麼變化,說明剛纔的設置與默認終端設置一致。

    而接下來,我們就需要對顯示的信息的字體顏色進行設置,首先看一下顏色是如何設置的:

顏色的設置公式

顏色=\033[代碼;前景;背景m

 

如:\033[1;32;40m表示高亮顯示字體爲綠色,背景色爲黑色(顏色定義見本文前面的表格)

注意:

    要將全部非打印字符用專用的 bash 轉義序列 "\[" "\]"括起來。這兩個序列通知 bash,被括起來的字符不佔用行上的任何空間,這樣就使自動換行能夠繼續正常工作。

這點很關鍵要不然等你設好了顏色,你的終端換行會亂七八糟


    現在對上邊的PS1變量進行顏色的設置,即在需要更改顏色的地方插入顏色值,比如我們讓用戶名以紅色顯示的命令應該是:

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

    同樣對.bashrc文件進行修改後source一下,應該看到的結果如下:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    事實上我們並不是想要所有信息的顯示顏色都一樣,所以我們要想辦法讓信息顯示以不同顏色展示。這裏大家可能會注意到,顏色設置的作用範圍是從當前設置命令到下一顏色設置命令的,也就是說,如果我們只在\u前設置了顏色,那麼終端的字體應該都是紅色的,就像下邊一樣,不僅信息項是紅色的,就連輸入命令都是紅色的:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    爲此,我們需要在@符號前面插入新的顏色值以防止整個信息項以紅色顯示,修改後的PS1變量爲:
PS1='\[\033[1;31;40m\]\u\[\033[00m\]@\h:\w\$ '
    同樣source一下,結果出來了:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    明白了對PS1變量進行設置的原理之後,用戶就可以根據自己的需要隨心所欲地設置PS1變量了,比如在PS1變量中插入字符串,或者爲每個信息項設置不同的顏色,或者控制信息欄顯示的內容:
我們可以讓用戶名帶下劃線,路徑以白色顯示,並且美元符號以綠色顯示,命令則以藍色顯示:
PS1='\[\033[4;31;40m\]\u\[\033[00m\]@\h:\[\033[37;40m\]\w\[\033[32;40m\]\$ \[\033[34;40m\]'
source一下,效果如下:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
至此,終端的顏色設置問題已經解決,以下解決路徑名問題。

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\]'
下面通過圖片說明二者的效果:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置

Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    可以發現,經過修改PS1變量的值之後,終端將只顯示當前工作目錄的基名了~。
    最後,綜合以上所說,分享一下我的PS1變量,我的變量裏邊是設置爲不顯示主機名並且顯示短路徑名的:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;04;32m\]\u\[\033[00m\]:\[\033[01;37m\]\W\[\033[31m\]\$ \[\033[00m\]'
Ubuntu終端顏色設置、路徑名設置以及ls命令設置

    最後,可能各位還會發現,如果打開新的終端,用戶定義的配置並沒有顯示出來,而還是顯示默認的配置。
    這個時候可以通過source 命令去手動加載.bashrc文件,這時候,我們所設置的配置又回來了。
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    當然,終端作爲我們在系統之中常用的工具之一,如果每次打開終端都要source一次,那豈不是蛋疼死了?回到文章開頭的地方,我們說/etc/profile文件從/etc/profile.d目錄的配置文件中搜集shell的設置.此文件默認調用/etc/bashrc文件,於是我們可以打開profile文件看一看:
“sudo gedit /etc/bashrc”(注意這裏需要加上sudo!)
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    可以看到,在文件中有一句調用/etc/bash.bashrc文件的代碼,所以可以推斷,前文所說的profile文件自動加載bash.bashrc文件,事實上就是由代碼實現的,於是我們同樣地可以在這裏添加一句新的代碼,以使profile自動加載用戶的.bashrc文件,以此實現我們不需每次打開終端都要source的需求。
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    保存之後關閉編輯器,新打開一個終端,可以發現,我們之前的配置已經能夠自動加載了。
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
3.ls命令設置
    在終端一個常用的命令就是ls命令了,我們可以通過在.bashrc文件中設置alias以實現ls命令的一些自定義設置:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
    alias其實是相當於一個命令引用的東西,例如最後一句,每當你在終端裏邊輸入ls命令,終端會根據.bashrc文件中的alias的設置查找到引用的命令:ls --color=auto,所以你每次輸入“ls”其實就相當於輸入了“ls --color=auto”,而這句命令的作用是顯示當前目錄的可見文件,並且以顏色區分不同類型的文件,比如文件夾和普通文件。
Ubuntu終端顏色設置、路徑名設置以及ls命令設置

    最後一個值得一提的就是一個小建議了,之前看到的我的終端都是黑底的,其實用戶可以直接在終端中設置首選項以實現半透明背景,或者是以一張圖片作爲背景也可以:
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
Ubuntu終端顏色設置、路徑名設置以及ls命令設置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章