Linux中國

ls 命令輸出的顏色:它們意味著什麼?

想知道 ls 命令輸出中的顏色是什麼?它們從何而來,又該如何設置?本文將為您一一解答。

相信你一定使用過 ls 命令來 列出目錄的內容。在 Ubuntu 和許多其他發行版中,你將看到不同顏色的 ls 命令輸出。

如果你沒有看到過,你可以這樣獲得如下所示的彩色輸出:

ls --color=auto

但是你有沒有想過這些顏色在 ls 命令輸出中意味著什麼?

我將回答本文中的問題。如果你的終端默認情況下不顯示它,我還將展示如何使用 ls 命令獲取彩色輸出

Ubuntu 中 ls 命令中使用的顏色的含義

? ls 命令輸出的顏色沒有固定的標準。不同的終端和發行版使用不同的顏色編碼,你也可以根據自己的喜好進行修改。換句話說,不要依賴顏色。

我在本節中使用默認的 Ubuntu 終端及其顏色配置文件。

當你 使用 ls 命令列出文件 時,它會使用不同的顏色來指示不同類型的文件。

大多數終端都會以不同的顏色顯示可執行文件、鏈接、常規文件和目錄,以便你可以輕鬆區分它們。

有些終端(例如 Ubuntu 中的默認終端)將其提升到一個新的水平,並為音樂文件、圖像和視頻添加更多顏色。

為了演示,我列出了來自不同目錄的文件,這些文件在 Ubuntu 中用不同的顏色填充了我的終端窗口:

different colors used by the ls command

看起來很混亂? 讓我一一為你解密吧!

顏色 描述
粗體藍色 目錄
無色 文件或硬鏈接
粗體青色 指向文件的符號鏈接。
粗體綠色 可執行文件(.sh 擴展名的腳本)
粗體紅色 歸檔文件(主要是 tarball 或 zip 文件)
洋紅色 表示圖像和視頻文件
青色 音頻文件
黃色配黑色背景 管道文件(稱為 FIFO)
粗體紅色配黑色背景 損壞的符號鏈接
無色(白色)配紅色背景 表示設置用戶 ID 文件
黑色配黃色背景 表示設置組 ID 文件
白色與藍色背景 顯示粘滯位目錄
藍色配綠色背景 指向其他可寫目錄
黑色配綠色背景 當目錄同時具有粘滯位和其他可寫目錄的特徵時

? 再次強調,上述顏色數據基於終端的默認設置,如果更改調色板,將不會得到類似的結果。

但是如果你的終端不顯示任何顏色怎麼辦? 好吧,這是有原因和解決方案的。

如果 ls 命令不顯示彩色輸出怎麼辦?

事情是這樣的。默認情況下,ls 命令不應在輸出中顯示顏色。如果你使用 --color=auto 標誌,它將顯示顏色。

ls --color=auto

那麼為什麼 ls 命令在 Ubuntu 和其他一些發行版中默認添加顏色呢? 這是因為你的發行版為 ls 命令設置了別名,以便在執行 ls 命令時使用 --color=auto 標誌:

alias

因此,如果 ls 命令未顯示彩色輸出,則是因為默認情況下沒有設置別名。

現在,每當你使用 ls 命令時,你都可以使用 --color=auto 標誌。

Use  --color=auto flag with the ls command to get the colored output

但這不太方便。相反,你應該創建別名並將其添加到 .bashrc 中,以便 ls 命令默認顯示顏色。

為 ls 創建一個永久別名來顯示顏色

要創建永久別名,首先,使用以下命令打開 .bashrc 文件:

nano ~/.bashrc

使用 Alt + / 跳到文件末尾粘貼如下行到終端:

alias ls='ls --color=auto'

完成後,保存更改並退出 nano 文本編輯器。

要使你剛剛所做的更改生效,請 源引 source .bashrc 文件:

source ~/.bashrc

就是這樣! 從現在開始,你可以使用彩色輸出。

ls 命令從哪裡獲取顏色?

現在有趣的部分來了。ls 命令的顏色在哪裡定義? 答案是 LS_COLORS 環境變數。

是的。這是名為 LS_COLORS 的特殊環境變數,它定義 ls 命令使用的顏色。

Value of the LS_COLORS env variable in Ubuntu

這很好,但是誰定義了這個變數呢? 如果你想做出一些改變怎麼辦? 我也來回答一下這些問題。

實際上,你有一個專門的 dircolors 命令來為 ls 命令設置顏色。

不同的 Shell 有不同的顏色配置文件格式。這就是為什麼在使用此命令時應指定 Shell。

dircolors command output for bash

如你所見,它定義了 LS_COLORS 環境變數並將其導出,以便該變數可用於子 Shell。

現在,如果你想使用它,你可以將其複製粘貼到你的 .bashrc 文件或像這樣重定向輸出:

dircolors -b >> .bashrc

源引 source 該文件,以便效果立即可見。你只需要做一次。

理解顏色配置文件

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 命令的詳細教程:

在 Linux 中使用 ls 命令

Abhishek Prakash 提供資料。

(題圖:MJ/4d0f1f66-259f-4671-a3a8-158f61a38b10)

via: https://itsfoss.com/ls-color-output/

作者:Sagar Sharma 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國