ls 命令輸出的顏色:它們意味著什麼?
想知道 ls 命令輸出中的顏色是什麼?它們從何而來,又該如何設置?本文將為您一一解答。
相信你一定使用過 ls
命令來 列出目錄的內容。在 Ubuntu 和許多其他發行版中,你將看到不同顏色的 ls
命令輸出。
如果你沒有看到過,你可以這樣獲得如下所示的彩色輸出:
ls --color=auto
但是你有沒有想過這些顏色在 ls
命令輸出中意味著什麼?
我將回答本文中的問題。如果你的終端默認情況下不顯示它,我還將展示如何使用 ls
命令獲取彩色輸出。
Ubuntu 中 ls 命令中使用的顏色的含義
? ls 命令輸出的顏色沒有固定的標準。不同的終端和發行版使用不同的顏色編碼,你也可以根據自己的喜好進行修改。換句話說,不要依賴顏色。
我在本節中使用默認的 Ubuntu 終端及其顏色配置文件。
當你 使用 ls 命令列出文件 時,它會使用不同的顏色來指示不同類型的文件。
大多數終端都會以不同的顏色顯示可執行文件、鏈接、常規文件和目錄,以便你可以輕鬆區分它們。
有些終端(例如 Ubuntu 中的默認終端)將其提升到一個新的水平,並為音樂文件、圖像和視頻添加更多顏色。
為了演示,我列出了來自不同目錄的文件,這些文件在 Ubuntu 中用不同的顏色填充了我的終端窗口:
看起來很混亂? 讓我一一為你解密吧!
顏色 | 描述 |
---|---|
粗體藍色 | 目錄 |
無色 | 文件或硬鏈接 |
粗體青色 | 指向文件的符號鏈接。 |
粗體綠色 | 可執行文件(.sh 擴展名的腳本) |
粗體紅色 | 歸檔文件(主要是 tarball 或 zip 文件) |
洋紅色 | 表示圖像和視頻文件 |
青色 | 音頻文件 |
黃色配黑色背景 | 管道文件(稱為 FIFO) |
粗體紅色配黑色背景 | 損壞的符號鏈接 |
無色(白色)配紅色背景 | 表示設置用戶 ID 文件 |
黑色配黃色背景 | 表示設置組 ID 文件 |
白色與藍色背景 | 顯示粘滯位目錄 |
藍色配綠色背景 | 指向其他可寫目錄 |
黑色配綠色背景 | 當目錄同時具有粘滯位和其他可寫目錄的特徵時 |
? 再次強調,上述顏色數據基於終端的默認設置,如果更改調色板,將不會得到類似的結果。
但是如果你的終端不顯示任何顏色怎麼辦? 好吧,這是有原因和解決方案的。
如果 ls 命令不顯示彩色輸出怎麼辦?
事情是這樣的。默認情況下,ls
命令不應在輸出中顯示顏色。如果你使用 --color=auto
標誌,它將顯示顏色。
ls --color=auto
那麼為什麼 ls
命令在 Ubuntu 和其他一些發行版中默認添加顏色呢? 這是因為你的發行版為 ls
命令設置了別名,以便在執行 ls
命令時使用 --color=auto
標誌:
alias
因此,如果 ls
命令未顯示彩色輸出,則是因為默認情況下沒有設置別名。
現在,每當你使用 ls
命令時,你都可以使用 --color=auto
標誌。
但這不太方便。相反,你應該創建別名並將其添加到 .bashrc
中,以便 ls
命令默認顯示顏色。
為 ls 創建一個永久別名來顯示顏色
要創建永久別名,首先,使用以下命令打開 .bashrc
文件:
nano ~/.bashrc
alias ls='ls --color=auto'
完成後,保存更改並退出 nano 文本編輯器。
要使你剛剛所做的更改生效,請 源引 .bashrc
文件:
source ~/.bashrc
就是這樣! 從現在開始,你可以使用彩色輸出。
ls 命令從哪裡獲取顏色?
現在有趣的部分來了。ls
命令的顏色在哪裡定義? 答案是 LS_COLORS
環境變數。
是的。這是名為 LS_COLORS
的特殊環境變數,它定義 ls
命令使用的顏色。
這很好,但是誰定義了這個變數呢? 如果你想做出一些改變怎麼辦? 我也來回答一下這些問題。
實際上,你有一個專門的 dircolors
命令來為 ls
命令設置顏色。
不同的 Shell 有不同的顏色配置文件格式。這就是為什麼在使用此命令時應指定 Shell。
如你所見,它定義了 LS_COLORS
環境變數並將其導出,以便該變數可用於子 Shell。
現在,如果你想使用它,你可以將其複製粘貼到你的 .bashrc
文件或像這樣重定向輸出:
dircolors -b >> .bashrc
並 源引 該文件,以便效果立即可見。你只需要做一次。
理解顏色配置文件
LS_COLORS
包含由冒號(:
)分隔的鍵值對數據。如果該值有多個部分,則它們之間用分號(;
)分隔。
鍵通常是預定義的。值部分代表顏色。
因此,如果顯示 ln=01;36
,則表示對於符號鏈接,字體為粗體,顏色(36
)為青色。
00
為正常,01
為粗體,4
為下劃線。31
代表紅色,32 代表綠色等。顏色代碼遵循 ANSI 轉義代碼。
另一個例子。or=40;31;01
表示鏈接到不存在的文件(鍵為 or
),使用黑色背景(顏色代碼 40
)、紅色(31
)和粗體字體(代碼 01
)。
我認為順序並不重要,因為代碼不重疊。31
是前景色紅色的代碼,41
是背景紅色的顏色。因此,如果使用 41
,你就知道它用於背景顏色。
使用 ls 命令執行更多操作
ls
命令可以做更多的事情,為此,我們製作了有關如何使用 ls
命令的詳細教程:
Abhishek Prakash 提供資料。
(題圖:MJ/4d0f1f66-259f-4671-a3a8-158f61a38b10)
via: https://itsfoss.com/ls-color-output/
作者:Sagar Sharma 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive