1. 程式人生 > >linux終端terminal個性化配置

linux終端terminal個性化配置

{本文介紹linux終端字型顏色設定、終端提示符顯示內容設定、自定義alias命令}

linux開啟終端快捷鍵:

ctrl + alt + t  新視窗中開啟

ctrl + shift +t 新標籤頁中開啟

個人配置檔案介紹

 系統預設狀態下的終端顯示為紫底白字(皮皮的linux為ubuntu 14.04 LTS)

   在沒有經過自定義配置的終端下因為所有輸入輸出都是一個顏色(ls命令除外),對查詢一些命令的執行結果很不方便。
對終端的配置,可以寫到不同的檔案之中,如:~/.bashrc、/etc/bash.bashrc、/etc/profile這幾個檔案。

這些檔案的的作用時機

    /etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/profile.d目錄的配置檔案中搜集shell的設定.此檔案預設呼叫/etc/bash.bashrc檔案。

    /etc/bashrc:為每一個執行bash shell的使用者執行此檔案.當bashshell被開啟時,該檔案被讀取.

   ~/.bash_profile/~/.bash_login/~/.profile:使用者登入執行,source立即生效。每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案.

   ~/.bashrc:每次開啟新視窗時執行。該檔案包含專用於你的bashshell的bash資訊。與/etc/bashrc衝突則執行前者~。

   ~/.bash_logout:當每次退出系統(退出bashshell)時,執行該檔案. 

可以明白的是:針對於使用者的配置,應該將配置資訊寫入~/.bashrc檔案。(只對當前使用者有效,重新開啟的如果不是當前使用者的terminal當然沒有效果!所以lz一般設定兩次,一個root使用者,一個當前普通使用者)

終端terminal 補全設定為大小寫不敏感

編輯~/.inputrc(沒有的話,就新建一個),在最後加一行: 
set completion-ignore-case on
儲存,重新開啟終端就可以了。

還有命令列輸入字元之後,就可以用方向鍵Up,Down來搜尋以該串字元開頭的歷史命令。

終端顏色配置

為了設定終端顏色,我們需要對~/.bashrc檔案中的PS1變數進行定製。     
在顏色模式開啟的情況下,PS1變數代表的內容就是使用者名稱+主機名+路徑名(長路徑)+$。

        eg: [email protected]:~$ 中使用者名稱-pipi;主機名-ubuntu;路徑名-~

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

如\033[1;31;1m代表高亮紅色前景和透明背景

\033[0m   #採用終端預設設定,即取消顏色設定

Terminal properties

Terminal bold dark underline blink reverse concealed
xterm yes no yes bold yes yes
linux yes yes bold yes yes no
rxvt yes no yes bold/black yes no
dtterm yes yes yes reverse yes yes
teraterm reverse no yes rev/red yes no
aixterm normal no yes no yes yes
PuTTY color no yes no yes no
Windows no no no no yes no
Cygwin SSH yes no color color color yes
Mac Terminal yes no yes yes yes yes

顏色設定有關的幾張表

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

程式碼序列說明

\aASCII響鈴字元(也可以鍵入 \007)

\d "Wed Sep06"格式的日期

\eASCII轉義字元(也可以鍵入 \033)

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

\H 主機的全稱(如 "mybox.mydomain.com")

\j 在此 shell中通過按 ^Z掛起的程序數

\l 此 shell的終端裝置名(如 "ttyp4")

\n 換行符

\r 回車符

\sshell的名稱(如 "bash")

\t24小時制時間(如 "23:01:01")

\T12小時制時間(如 "11:01:01")

\@ 帶有 am/pm的 12小時制時間

\u 使用者名稱

\vbash的版本(如 2.04)

\VBash版本(包括補丁級別) ?/td>;

\w 當前工作目錄(如 "/home/drobbins")

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

\! 當前命令在歷史緩衝區中的位置

\# 命令編號(只要您鍵入內容,它就會在每次提示時累加)

\$ 如果您不是超級使用者 (root),則插入一個 "$";如果您是超級使用者,則顯示一個 "#"

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

\\ 反斜槓

\[這個序列應該出現在不移動游標的字元序列(如顏色轉義序列)之前。它使 bash能夠正確計算自動換行。

\] 這個序列應該出現在非列印字元序列之後。

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

  程式碼             意義

  0                 OFF

  1                 高亮顯示

  4                 underline

  5                 閃爍

  7                 反白顯示

  8                 不可見

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

 前景            背景             顏色

  30                40               黑色

  31                41               紅色

  32                42               綠色

  33                43               黃色

  34                44               藍色

  35                45               紫紅色

  36                46               青藍色

  37                47               白色

   1                  1              透明色

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

 終端顏色設定

在終端中使用命令對配置檔案進行備份

cp  ~/.bashrc ~/.bashrc.bak
然後開啟檔案

sudo vi ~/.bashrc #沒有這個檔案的話可以修改檔案sudo vi /etc/bashrc

找到PS1變數設定的程式碼,註釋之

#if [ $color_prompt" = yes]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
#fi
可以直接修改PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

或者可以在檔案的末尾加上”PS1='\[email protected]\h:\w\$'“(這也是終端的預設設定,即不加任何顏色)

#setup XIM environment, needn't if use SCIM as gtk-immodules
export [email protected]=fcitx
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

PS1='\[email protected]\h:\w\$'

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

Note: 要將全部非列印字元用bash 轉義序列 "\["和 "\]"括起來。"\[    \]"是為了把轉義序列的字串括起來,防止轉義序列的文字顯示在 shell 裡佔用太多的空間。

\033 聲明瞭轉義序列的開始,然後是 [ 開始定義顏色。 後面的 0 定義了預設的字型寬度,接著的中間的數字定義字元顏色。最後面的數字定義了字元背景色。字母m是定義本身所必須的,字母m後面的字元就是你想改變的字元了。

Ps1 ="\[ -------------> 最外面的括弧

                 \033[1;32;40m[

           ----> 定義最右邊的" [ " ;

        1:字型寬度,好像有加亮功能.

        32:字元顏色。32表示綠色。

        40:背景色,40表示黑色。

再例如在\u前面加上\[\033[1;31;1m\]

PS1='\[\033[1;31;1m\]\[email protected]\h:\w\$'讓使用者名稱以紅色高亮顯示

儲存回到終端後輸入“source ~/.bashrc”。

   我們要想辦法讓資訊顯示以不同顏色展示。這裡顏色設定的作用範圍是從當前設定命令到下一顏色設定命令的,也就是說,如果我們只在\u前設定了顏色,那麼終端的字型應該都是紅色的,不僅資訊項是紅色的,就連輸入命令都是紅色的。

  明白了對PS1變數進行設定的原理之後,可以在PS1變數中插入字串,或者為每個資訊項設定不同的顏色,或者控制資訊欄顯示的內容:

我們可以讓使用者名稱(紅色)、路徑(綠色)、美元符號(黃色)、命令(白色)

PS1='\[\033[1;31;1m\]\[email protected]\h:\[\033[1;32;1m\]\w\[\033[1;33;1m\]\$\[\033[1;37;1m\]'

不顯示主機名(@\h去掉)並且顯示長路徑名

PS1='\[\033[1;31;1m\]\u:\[\033[1;32;1m\]\w\[\033[1;33;1m\]\$\[\033[1;37;1m\]'

source一下:source ~/.bashrc

終端中路徑名過長問題

有時候在終端需要連續開啟幾層的資料夾才能訪問到我們所需的檔案,而這個時候在終端中顯示的路徑名就像是一條長長的尾巴

使終端只顯示使用者當前工作目錄的名字

可以在PS1變數設定終端只顯示工作目錄的基名,即將PS1變數中的\w的小寫的w換成大寫的W,修改後的PS1變數為:

PS1='\[\033[1;31;1m\]\[email protected]\h:\[\033[1;32;1m\]\W\[\033[1;33;1m\]\$\[\033[1;37;1m\]'

不顯示主機名(@\h去掉)並且顯示短路徑名

PS1='\[\033[1;31;1m\]\u:\[\033[1;32;1m\]\W\[\033[1;33;1m\]\$\[\033[1;37;1m\]'

實現不需每次開啟終端都要source的需求

如果開啟新的終端,使用者定義的配置並沒有顯示出來,還是預設配置。 這個時候可以通過source命令去手動載入.bashrc檔案,可是每次開啟終端都要source一次。
回到文章開頭的地方,我們說/etc/profile檔案從/etc/profile.d目錄的配置檔案中搜集shell的設定,此檔案預設呼叫/etc/bashrc檔案,開啟profile檔案:

sudo gedit /etc/profile

   在檔案中有一句呼叫/etc/bash.bashrc檔案的程式碼,前文所說profile檔案自動載入bash.bashrc檔案,事實上就是由程式碼實現的,可以在這裡新增一句新的程式碼,以使profile自動載入使用者的.bashrc檔案,實現不需每次開啟終端都要source的需求

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
      . ~/.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi
儲存。

開啟一個終端,可以發現,我們之前的配置已經能夠自動載入了。 

終端其它設定

之前看到的我的終端都是黑底的,其實使用者可以直接在終端中設定首選項以實現半透明背景,或者是以一張圖片作為背景也可以:
開啟一個terminal,滑鼠指到螢幕最上面,選擇選單中選擇 編輯>配置檔案首選項>背景 再設定一下就可以了

alias命令設定

  可以通過在.bashrc檔案中設定alias以實現ls命令的一些自定義設定:

(echo "
#pipi add
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

alias vi='vim'
alias ssu='sudo su'
#alias cp='cp -i'
#alias mv='mv -i'
alias rm='rm -i'

#alias ga='git add . ; find . -size +50M ! -path *git* | xargs git reset HEAD'
alias ga='find . -size +100M ! -path *git* | cut -c 3- > .gitignore; git add .'
alias gs='git status'
alias gc='git commit -m 'update''
alias gp='git push'

alias activate='. ~/ENV/ubuntu_env/bin/activate'
alias activatepy2='. ~/ENV/py2_env/bin/activate'
#alias orange='activate; python3 -m Orange.canvas &'
alias orange 'python3 -m Orange.canvas &'

alias dm='docker-machine'
") >> ~/.bashrc 1> /dev/null

Note:輸出色彩功能不是所有系統都可以(linux可以,macos不行)
# enable color support of ls and also add handy aliases
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
ps:
1.完成後儲存並退出GEdit編輯器,回到終端後輸入“source ~/.bashrc”(14.04不用輸入都可以),再重新開啟termial就ok了
2. 不過好像沒辦法讓輸入的命令與輸出的檔名顯示不同顏色,這個怎麼解決?(求留言)