Skip to content

[MacOS] 美化系統預設終端機(Terminal)

在習慣了有著豐富顏色的 Linux 終端機後(我曾經花費了很大力氣調整得很漂亮 XDD),猛然切換到了全然白底的 Mac 預設終端機 —— Terminal.app,真的有種『天哪怎麼又要重新設定』…… 的崩潰感。

來看個簡單的比對,我在遠端 Linux 伺服器上的目錄底下有著漂亮的顏色與檔案排序:

反觀我的 MacBook Pro:

天哪我不小心調成了連字都看不到的顏色

一言以敝之,我們需要進行許多調整,來讓 Mac 預設的終端機更加美觀。以下,我簡單分享我配置的過程。或許哪天,我可以回來參考我自己的配置也說不定。

以下分成幾個部分介紹:

  • 終端機背景、字體
  • 終端機提示符號 PS1
  • 終端機 ls 指令顯示的各種檔案顏色(256 色)

終端機背景、字體

首先,我們可以透過簡單的圖形化介面進行最基本的設定。開啟終端機後,你應該能在右上角看見終端機的選項:

或者,你也可以用 command + , 的快捷鍵開啟。開啟後,你應該會看到許多關於終端機外觀設定的選項。

在這裡,你可以選擇預設要開啟的終端機調整終端機的文字顏色大小ANSI 的基礎顏色終端機光標顏色與形狀 …… 等等。

設定完成之後,應該會有你希望擁有的基本終端機外觀

備註:會有一段 The default interactive shell is now zsh … 的提醒,是因為我將預設的腳本語言從 zsh 改成了 bash。如果想要隱藏這段提醒,可以參考我的另外一篇文章:[MacOS] 如何隱藏終端機 “To update your account to use zsh, please run `chsh -s /bin/zsh`. …” 的訊息


終端機提示字符 PS1

在 Mac OS 當中,Terminal 的使用者名稱是沒有顏色的。但是我們可以透過調整 PS1,來讓我們的使用者名稱加上顏色、並能顯示目前所在的目錄位置這是個很棒的功能)。

如果在你的使用者目錄底下,沒有 .bash_profile 這一檔案的話,可以使用編輯器直接新增並寫下你要的設定。(不同的腳本語言會有不同的設定檔,要注意一下

比方說我使用 vim 編輯器,直接使用以下指令便可編輯:

vim ~/.bash_profile

然後在這份檔案中,試著設定不同的 PS1

export PS1="My name is Clay: "

存檔離開,這時候要使用 source 指令讓 ~/.bash_profile 的設定生效:

source ~/.bash_profile

你應該會看到以下終端機畫面:

然後我們一樣可以輸入指令。改變的就只有終端機前面提示的名稱。

那要如何設定成有顏色的名字 + 提示當前所在路徑呢?我們需要對顏色的代碼有點基礎的認識。

在終端機中我們可以簡單設定的顏色的數種,依照類別可以分為

  • 特效
  • 文字顏色
  • 背景顏色

而在終端機中指定文字,需要使用以下語法:

\[\e[特效;文字顏色;背景顏色\]你要設定顏色的文字\[\e[m\]

而不論是特效、文字顏色、背景顏色,都是使用顏色碼來指定。以下紀錄簡單的顏色碼。


特效顏色碼

effect_color_code


文字顏色碼

front_color_code


背景顏色碼

back_color_code


獲取不同資訊的字符

而除了顏色之外,也有自動獲取像是日期時間等的格式字符可以使用:

標籤用途
\d日期
\h主機名稱
\n換行
\t時間
\u使用者名稱
\W當前工作目錄
\w完整當前工作目錄

比方說,我可以使用 \u 取得使用者名稱、再使用 \w 取得當前的工作目錄。

我們再次嘗試修改 ~/.bash_profile 這份檔案。

export PS1="\[\e[1;32m\]\u@MacBook-Pro\[\e[m\]:\[\e[1;34m\]\w\[\e[m\]$ "

同樣,儲存退出後使用以下指令讓設定生效(這個指令之後還會用上許多次):

source ~/.bash_profile

Output:

這樣一來就美觀多了。


終端機 ls 指令顯示的各種檔案顏色(256 色)

配置到現在,我們在終端機中的使用者名稱看起來已經有顏色、也能顯示出目前所在的目錄路徑。然而,若是使用 ls 指令,則會發現各種資料夾、檔案仍然是白色的。

那麼下一步,就是調整我們 ls 指令顯示的檔案顏色啦!

首先,我們需要安裝 coreutils 工具來讓終端機能夠自己配置不同文件的顏色。(若需要啟用 Homebrew,可以參考:[MacOS] 透過 brew 指令透過終端機下載套件

而下載的 ~/.dircolors 則是我推薦的一套顏色設定配置,若有想要修改的顏色同樣可以編輯該設定檔。

brew install coreutils
wget https://raw.github.com/trapd00r/LS_COLORS/master/LS_COLORS -O ~/.dircolors

下載好後,再次修改 ~/.bash_profile,在裡頭寫下:

# GDIRCOLORS
if brew list --formula | grep coreutils > /dev/null ; then
  PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
  alias ls="ls --show-control-chars --color=auto --sort=extension"
  eval `gdircolors -b $HOME/.dircolors`
fi



然後儲存關閉、再次使用以下指令讓設定生效:

source ~/.bash_profile

接著使用 ls 指令,應該能看到不同的檔案都有著各自的顏色了:

接著,如果覺得有任何文件的顏色自己不喜歡,可以使用以下指令編輯設定檔:

vim ~/.dircolors

Output:

可以將其修改成自己喜歡的顏色,在終端機中也會即時地顯示出來。在這裡,我們以資料夾 DIR 為例:

修改成了藍色後,儲存關閉。再次使用 source ~/.bash_profile 讓顏色設定生效,再次查看當前目錄顏色。

可以發現,資料夾真的變成藍色的了!

到這邊為止,我的配置也差不多結束了。或許大家也可以嘗試著設置看看不同的配置。


解決 ~/.bash_profile 載入緩慢的問題(2020/11/21 更新)

雖然看起來漂亮地讓終端機有了色彩,但很快地,我發現只要嘗試著開啟新的終端機,載入 ~/.bash_profile 的速度異常緩慢,甚至需要到三四秒才能開啟。

經過測試發現,應是以下的指令太過冗余:

# GDIRCOLORS
if brew list --formula | grep coreutils > /dev/null ; then
  PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
  alias ls="ls --show-control-chars --color=auto --sort=extension"
  eval `gdircolors -b $HOME/.dircolors`
fi



基本上,只要使用到 Homebrew 指令的通通都會花費個幾秒,我們可以將指令修改得更快載入。

首先,確認 brew --prefix coreutils 指令的路徑:

brew --prefix coreutils

Output:

/usr/local/opt/coreutils

在我的裝置中,顯示出的便是以上的路徑。當然,你有可能和我的不一樣。

將此一路徑替換掉 ~/.bash_profile 中的 $(brew –prefix coreutils),並刪去判斷 coreutils 工具是否存在的指令。最終的設定配置如下:

# GDIRCOLORS
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
alias ls="ls --show-control-chars --color=auto --sort=extension"
eval `gdircolors -b $HOME/.dircolors`



這樣一來開啟終端機的速度就會很快了。


References


Read More

Leave a Reply