dircolors 효과

dircolors 효과

어떤 dircolors영향을 미치나요? 명령 에만 해당되나요 ls? dircolors정의하기 전에 호출 해야 합니까 alias ls='ls --color'?

답변1

dircolors셸에서 해석된 코드를 출력합니다. 옵션이 있든 없든 -b이는 ksh, zsh 또는 bash와 같은 Bourne과 유사한 쉘과 , 즉 또는 가 sh있는 모든 최신 쉘 은 다른 쉘²을 지원하지 않음을 의미합니다.-ccshtcsh

출력 코드는 options 와 함께 호출될 때 색상이 지정된 출력을 사용자 정의하기 $LS_COLORS위해 GNU 구현에서 쿼리되는 환경 변수를 설정하도록 셸에 지시합니다 .ls--color

Bourne²와 같은 쉘에서는 다음을 수행합니다.

eval "$(dircolors -b)"

평가 출력dircolors

(t)csh에서:

eval "`dircolors -c`"

$LS_COLORS변수는 ls --color호출 전에 설정해야 하지만 사용된 별칭이나 함수 정의와는 독립적입니다 ls. 그래서:

alias ls 'ls --color' # (t)csh
alias ls='ls --color' # Korn-like shells
ls() command ls --color "$@" # most Bourne-like shells
ls() { command ls --color "$@"; } # all Bourne-like shells

쌍 호출 전후에 배치할 수 있으며 eval차이가 없습니다.

환경을 업데이트하므로 해당 eval줄을 ~/.profile/ ~/.login(또는 로그인 셸에 대한 동등한 로그인 세션 사용자 정의 파일)에 넣으면 로그인 세션당 한 번만 설정되고 별칭/함수는 셸 사용자 정의 파일( ~/.zshrc, ~/.cshrc, ~/.bashrc...).

어쨌든, 사용하지 않으면 dircolors여전히 기본 색상인 색상을 얻게 됩니다. dircolors사용자 정의 파일 없이 사용 하면 다른 기본값이 적용됩니다.

다음을 수행하여 이러한 기본값을 편집할 수 있습니다.

dircolors -p > ~/.config/dircolors

다음 명령을 사용하여 파일을 편집하고 셸 시작 파일의 줄을 변경합니다.

eval "$(dircolors ~/.config/dircolors)"

1 다른 쉘에 대한 솔루션은 많지만, 해결 방법은 본인에게 달려 있습니다. 예를 들어 최신 fish버전의 경우 다음을 수행할 수 있습니다.set -x LS_COLORS "$(sh -c "$(dircolors -b)"'; printf %s "$LS_COLORS"')"

² Bourne-shell 자체는 제외 $(...)하지만 Bourne 셸은 더 이상 사용되지 않으며 이에 `...`상응하는 항목은 더 이상 사용되지 않습니다.

관련 정보