Przejdź do głównej zawartości

dircolors


  • dircolors – program z pakietu GNU coreutils służący do konwersji bazy kolorów plików (np. /etc/DIR_COLORS) na odpowiednie polecenia powłoki ustawiające zmienną środowiskową LS_COLORS.
  • Pozwala dostosować schemat kolorowania dla takich narzędzi jak ls, dir, vdir, ułatwiając wizualne rozróżnianie typów plików i atrybutów (własność, uprawnienia, rozszerzenia).
  • Działa w trybie Bourne‑shell (-b, --sh) lub C‑shell (-c, --csh); może też wypisać wbudowaną bazę (-p, --print-database).

Okno terminala
dircolors [opcje] [plik_bazy]
  • Bez argumentów czyta /etc/DIR_COLORS lub domyślną wbudowaną konfigurację.
  • Wynik dołączyć do bieżącej sesji za pomocą eval "$(dircolors ...)".

ParametrOpis
-b, --sh, --bourne-shellGeneruje polecenia kompatybilne z Bourne shell (export LS_COLORS=…).
-c, --csh, --c-shellGeneruje polecenia dla C Shell (setenv LS_COLORS …).
-p, --print-databaseWypisuje wbudowaną bazę kolorów na stdout.
-q, --quiet, --silentTłumi komunikaty o błędach dotyczące brakujących plików.
--helpWyświetla krótką pomoc.
--versionWyświetla wersję programu.

Okno terminala
# 1. Załadowanie domyślnej bazy kolorów Bourne-shell
eval "$(dircolors -b)"
# 2. Użycie własnego pliku kolorów w ~/.dircolors
eval "$(dircolors -b ~/.dircolors)"
# 3. Podgląd wbudowanej bazy i zapis do pliku
mkdir -p ~/.config && dircolors -p > ~/.config/dircolors.base
# 4. Konfiguracja dla użytkowników C Shell
setenv LS_COLORS "`dircolors -c ~/.dircolors-custom`"

  • Zmienne środowiskowe: dircolors nie modyfikuje środowiska sam; generuje kod, który trzeba wykonać (eval).
  • Plik bazy: Składnia opiera się na parach KEY COLOR-CODE; można nadpisywać istniejące lub dodawać nowe rozszerzenia plików.
  • Kolor ANSI: Kody to sekwencje 0;31 (czerwony), 1;34 (pogrubiony niebieski) itp.; wartości są interpretowane przez ls --color.
  • Kompatybilność: Niektóre terminale wymagają odpowiednich wartości TERM; przy błędnym TERM kolory mogą nie działać.
  • Alternatywy: Narzędzia jak colorls czy exa korzystają z własnych schematów, ale mogą respektować LS_COLORS.

Błąd / KomunikatPrzyczynaRozwiązanie
dircolors: cannot read ...Brak lub niewłaściwa ścieżka pliku bazyPodaj poprawną ścieżkę lub stwórz plik z dircolors -p.
LS_COLORS nie działaBrak eval lub nieodświeżone środowiskoDodaj linijkę eval "$(dircolors -b)" do ~/.bashrc i zaloguj ponownie.
Nieobsługiwane kolory w terminaluTERM ustawione na dumb lub brak ANSIUstaw TERM=xterm-256color lub użyj odpowiedniego emulatora.
Zmienne rozszerzenia nie kolorują sięBrak wpisu w bazie kolorówDodaj linię *.log 01;33 (żółty) w pliku bazy i ponownie załaduj.