如何更改 OS X 和 iTerm2 終端機中 ls 指令的輸出顏色?

如何更改 OS X 和 iTerm2 終端機中 ls 指令的輸出顏色?

我知道有人問過類似的問題:

如何對 ls 的輸出進行著色?

儘管我並不真正理解答案並且無法真正使其發揮作用。

然而,我嘗試過一些不同的東西。我決定閱讀手冊頁ls,它提到了在處理命令時可以設定的不同環境變數ls。如果選擇該-G選項,它會顯示查看CLICOLOR環境變數。我做了並且其中一個連結將您連結到環境變數的文檔LSCOLORS。我去了它,它提到:

「這個變數的值描述了當使用 CLICOLOR 啟用顏色時,哪個屬性使用什麼顏色。這個字串是 fb 格式對的串聯,其中 f 是前景色,b 是背景色。”

它還提到 LSCOLORS 的預設值是“exfxcxdxbxegedabagacad”,並且每個部分指定 ls 命令中某些特定事物的顏色。例如,範例中的第一對 ex 指定目錄的顏色。第二個 fx 符號連結的顏色等... e 表示藍色,x 表示預設「前景」。

1) 首先,這是什麼意思:「當使用 CLICOLOR 啟用顏色時」?

2) 什麼是“前景”意思是?

環境變數必須是什麼,ls命令才能根據我的需求對輸出進行著色?


我也嘗試過:

ls --color

但它給我帶來了以下錯誤:

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

當我這樣做時發生了同樣的錯誤ls --color=auto:它本身也會引發錯誤。我不知道為什麼,也不確定是否是 iTerm2 或 OS X 導致的,或者為什麼會發生這種情況。似乎它可以在其他系統上運行...

答案1

在試圖回答我自己的問題時,我嘗試了一些不同的事情,這一切都透過實驗解決了。

1)我猜測「啟用CLICOLOR」意味著將其設為1(即true),因為一旦我將該變數設為1,LSCOLOR就開始工作。

2) 在這種情況下,「前景」是指突出顯示它將應用的背景。例如,第一對的 bc 表示它將目錄的字元著色為紅色,而背景/突出顯示將為綠色。例如,如果您的環境變數為:export LSCOLORS="bCfxcxdxbxegedabagacad"

然後執行 ls 顯示如下內容:

在此輸入影像描述

顯然,要使其工作, ls 命令必須別名為 ls -G (或每次都執行 ls -G ),並且您必須在 .bashrc 或您使用的任何 shell rc 檔案中包含以下行:

export CLICOLOR=1
export LSCOLORS="gxfxcxdxbxegedabagacad"

現在您可以按照 man ls 檔案指定的方式變更 LSCOLORS。

可能有不同的方法可以實現這一點,但這就是我在 Unix、OS X mavericks 和 iTerm2 上的工作方式。

答案2

運行時替換--color為.-Gls

相關內容