ls에서 다른 파일의 색상을 변경하는 방법 [중복]

ls에서 다른 파일의 색상을 변경하는 방법 [중복]

그래서 디렉토리, 일반 파일, bash 스크립트 등의 텍스트 색상을 변경하는 방법이 있다는 것을 알고 있습니다. 이를 기반으로 파일의 색상을 변경하는 방법이 있습니까 _file extension_?

예:

$ ls -l
foo.txt  [is red] 
foo.text  [is blue] 
foo.secret  [is green] 
foo.txt  [is red]

답변1

예, LS_COLORS변수를 사용하십시오(GNU 가정 ls). 이를 조작하는 가장 쉬운 방법은 다음을 사용하는 것입니다 dircolors.

dircolors --print-database > dircolors.txt

현재 설정을 에 덤프한 dircolors.txt다음 설정을 추가한 후 편집할 수 있습니다.

eval $(dircolors dircolors.txt)

업데이트되어 LS_COLORS내보내집니다. 이를 쉘 시작 스크립트에 추가해야 합니다.

제공한 예시 설정을 적용하기 위해 추가할 항목은 dircolors.txt다음과 같습니다.

.txt 00;31
.text 00;34
.secret 00;32

답변2

이를 달성하는 한 가지 방법(최선의 방법은 아님)은 사용자 정의 셸 함수를 만드는 것입니다.

myls() {
  for f in *; do
    if [ "${f##*.}" = txt ]; then
      printf '\e[1;31m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = text ]; then
      printf '\e[1;34m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = secret ]; then
      printf '\e[1;32m%s\e[0m\n' "$f"
    else
      printf '%s\n' "$f"
    fi
  done
}

추가 자료:

관련 정보