Terminal

是什麼導致 ls 輸出中出現這種綠色背景?

  • December 29, 2021

linux機器上ls輸出的截屏

’ls’ 顯示了兩個目錄。通常,任何地方的目錄都是黑色背景上的藍色。但是第一個是綠色的,無法閱讀。為什麼是這樣?如何使它在黑色上變成藍色,或者至少在黑暗的東西上變成淺色?

這是在 Ubuntu 12.04 上,在 Gnome 終端中使用 bash。在 Konsole 中,藍色稍暗,並且可以閱讀,但可能會更好。

除了根據文件類型(音頻文件為青綠色,檔案和壓縮文件為鮮紅色,圖像和影片為紫色)為文件著色之外,ls還根據文件和目錄的屬性為文件和目錄著色:

  • 帶有綠色背景的黑色文本表示目錄可以被除所屬使用者和組之外的其他人寫入,並且設置了粘性位 ( o+w, +t)。
  • 帶有綠色背景的藍色文本表示目錄可以被除擁有使用者和組之外的其他人寫入,並且沒有設置粘性位 ( o+w, -t)。

Ask Ubuntu上的Stephano Palazzo在不同的屬性顏色上製作了這張非常有啟發性的圖片:

終端中不同顏色的含義

正如terdon指出的,顏色設置可以通過dircolors. 可以使用 訪問不同顏色設置的列表dircolors --print-database

每行輸出,例如BLK 40;33;01,格式為:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET表示著色規則的目標

  • TEXT_STYLE表示文字樣式:

    • 00= 無
    • 01= 粗體
    • 04= 下劃線
    • 05= 眨眼
    • 07=反向,
    • 08= 隱藏
  • FOREGROUND_COLOR表示前景色:

    • 30= 黑色
    • 31= 紅色
    • 32= 綠色
    • 33= 黃色
    • 34= 藍色,
    • 35= 洋紅色
    • 36= 青色
    • 37= 白色
  • BACKGROUND_COLOR表示背景顏色:

    • 40= 黑色
    • 41= 紅色
    • 42= 綠色
    • 43= 黃色
    • 44= 藍色,
    • 45= 洋紅色
    • 46= 青色
    • 47= 白色

從右邊開始可以省略欄位,例如.tar 01;31表示粗體和紅色。

XTerm 和大多數其他現代終端仿真器支持 256 色。

XTerm 256 色前景色程式碼的形式為:

38;5;[FOREGROUND_COLOR]

XTerm 256 色背景顏色程式碼的形式為:

48;5;[BACKGROUND_COLOR]

其中FOREGROUND_COLORBACKGROUND_COLOR都是 0-255 範圍內的數字。下面的螢幕截圖顯示了 16 和 256 顏色模式的完整顏色程式碼列表:

16 和 256 顏色模式顏色程式碼

引用自:https://unix.stackexchange.com/questions/94498