ls 명령에서 디렉토리 및 파일의 색상을 변경하는 방법

게시 됨: 2022-01-29

Bash에서 ls 명령을 실행했다면 표시되는 디렉토리와 파일이 유형에 따라 색상이 지정되었음을 알 수 있습니다. 자신만의 색 구성표를 사용자 지정하여 다양한 텍스트 색, 배경색 및 굵게 및 밑줄과 같은 서식을 선택할 수 있습니다.

작동 원리

색 구성표는 LS_COLORS 변수에 저장됩니다. 현재 색 구성표를 보려면 Bash에 변수 내용을 인쇄하도록 지시할 수 있습니다.

 에코 $LS_COLORS

파일 형식과 번호 코드의 긴 목록이 표시됩니다. 이와 같은 목록을 만드는 방법을 직접 설명하겠습니다.

이것을 가지고 놀기 전에 LS_COLORS 변수의 현재 내용을 다른 변수에 저장하는 것이 좋습니다. 이렇게 하면 셸에서 로그아웃했다가 다시 로그인하거나 터미널 창을 닫았다가 다시 열지 않고도 기본 설정을 빠르게 복원할 수 있습니다. LS_COLORS 변수의 현재 내용을 ORIGINAL이라는 새 변수에 저장하려면 다음을 실행하십시오.

 원본=$LS_COLORS 

언제든지 다음 명령을 실행하여 변경 사항을 실행 취소하고 기본 색상을 복원할 수 있습니다.

 LS_COLORS=$ORIGINAL
광고

변경 사항은 파일을 편집하여 새 기본값으로 만들 때까지 항상 일시적입니다. 언제든지 로그아웃했다가 다시 로그인하거나 터미널 창을 닫았다가 다시 열어 색상을 기본 설정으로 복원할 수 있습니다. 그러나 이렇게 하면 하나의 빠른 명령으로 쉽게 수행할 수 있습니다.

사용자 정의 색상을 설정하는 방법

LS_COLORS 변수에는 관련 색상 코드와 함께 파일 유형 목록이 포함되어 있습니다. 기본 목록은 여러 파일 형식에 대해 다른 색상을 지정하기 때문에 깁니다.

이것이 어떻게 작동하는지 보여주기 위해 기본 예제를 시작하겠습니다. 디렉토리의 색상을 기본 굵은 파란색에서 굵은 빨간색으로 변경하려고 한다고 가정해 보겠습니다. 이를 위해 다음 명령을 실행할 수 있습니다.

 LS_COLORS="디=1;31"

di=1;31 비트는 디렉토리( di )가 ( = ) 굵게( 1; ) 빨간색( 31 )임을 ls 에 알립니다.

그러나 이것은 디렉토리를 하나의 색상으로 정의하고 다른 모든 유형의 파일을 기본 색상으로 유지하는 매우 간단한 LS_COLORS 변수입니다. .desktop 파일 확장자를 가진 파일도 밑줄이 그어진 청록색으로 만들고 싶다고 가정해 봅시다. 이를 위해 다음 명령을 실행할 수 있습니다.

 LS_COLORS="di=1:31:*.desktop=4;36"
광고

이것은 디렉토리( di )가 ( = ) 굵게( 1; ) 빨간색( 31 )이고 ( : ) .desktop( *.desktop )으로 끝나는 모든 파일이 ( = ) 밑줄이 그어진( 4; ) 청록색( 36 )임을 ls 에 알려줍니다.

이것은 파일 유형 및 색상 목록을 조합하는 프로세스입니다. filetype=color 형식으로 원하는 만큼 지정하고 각각을 콜론(:) 문자로 구분합니다.

관련: Bash 프롬프트를 사용자 정의(및 색상 지정)하는 방법

자신만의 목록을 구성하려면 색상 코드와 파일 형식 코드 목록만 알면 됩니다. 이것은 Bash 프롬프트에서 색상을 변경할 때 사용하는 것과 동일한 숫자 색상 코드를 사용합니다.

전경 텍스트의 색상 코드 목록은 다음과 같습니다.

  • 블랙: 30
  • 블루: 34
  • 시안: 36
  • 녹색: 32
  • 보라색: 35
  • 빨간색: 31
  • 흰색: 37
  • 노란색: 33

예를 들어 노란색 텍스트는 색상 코드 33이므로 di=33 을 사용하여 디렉토리를 노란색으로 만듭니다.

다음은 텍스트 색상 속성 목록입니다.

  • 일반 텍스트: 0
  • 굵게 또는 밝은 텍스트: 1(터미널 에뮬레이터에 따라 다릅니다.)
  • 희미한 텍스트: 2
  • 밑줄 친 텍스트: 4
  • 깜박이는 텍스트: 5(대부분의 터미널 에뮬레이터에서는 작동하지 않습니다.)
  • 반전된 텍스트: 7(이것은 전경색과 배경색을 반전시키므로 현재 텍스트가 검은색 배경에 흰색 텍스트인 경우 흰색 배경에 검은색 텍스트가 표시됩니다.)
  • 숨겨진 텍스트: 8

속성 또는 둘 이상의 색상 코드를 지정할 때 코드 목록을 세미콜론(;) 문자로 구분하십시오. 여기에서 속성을 지정하지 않으면 일반 텍스트가 사용되므로 일반 텍스트에 대해 0을 지정할 필요가 없습니다.

예를 들어 굵은 텍스트는 색상 코드 1이고 노란색 텍스트는 색상 코드 33이므로 디렉토리를 굵은 노란색으로 만들려면 di=1;33 을 사용합니다. 둘 이상의 속성을 지정할 수도 있습니다. 예를 들어, di=1;4;33 을 사용하여 디렉토리를 굵게, 밑줄이 있는 노란색으로 만들 수 있습니다.

배경색 코드 목록은 다음과 같습니다.

  • 검정색 배경: 40
  • 파란색 배경: 44
  • 청록색 배경: 46
  • 녹색 배경: 42
  • 보라색 배경: 45
  • 빨간색 배경: 41
  • 흰색 배경: 47
  • 노란색 배경: 43

예를 들어 파란색 배경은 색상 코드 44이므로 디렉토리에 파란색 배경을 사용하려면 di=44 를 사용합니다. 배경 색상 코드, 전경 색상 코드 및 원하는 만큼 속성을 결합할 수도 있습니다. 예를 들어, di=1;4;33;44 는 파란색 배경에 굵은 밑줄이 그어진 노란색 텍스트를 제공합니다.

파일 형식 코드 목록은 다음과 같습니다.

  • 디렉토리: 디
  • 파일:피
  • 심볼릭 링크: ln
  • 명명된 파이프(FIFO): 파이
  • 소켓: 그래서
  • 블록 장치: bd
  • 문자 장치: cd
  • Orphan Symbolic Link(더 이상 존재하지 않는 파일을 가리킴): 또는
  • 누락된 파일(고아 심볼릭 링크가 가리키는 누락된 파일): mi
  • 실행 파일("x" 권한이 있음): ex
  • *.extension: 지정한 확장자로 끝나는 모든 파일. 예를 들어, .txt로 끝나는 파일에는 *.txt, .mp3로 끝나는 파일에는 *.mp3, .desktop으로 끝나는 파일에는 *.desktop 또는 기타 원하는 것을 사용하십시오. 원하는 만큼 다양한 파일 확장자를 지정할 수 있습니다.
광고

: 문자로 구분하여 원하는 만큼 다양한 색상의 파일 유형 코드를 지정하십시오. 이 프로세스를 반복하여 LS_COLORS 변수를 어셈블합니다.

예를 들어 디렉토리에 굵은 보라색 텍스트를 사용하고 실행 파일에 빨간색 밑줄이 그어진 텍스트를 사용하고 .mp3 파일에 빨간색 배경에 굵은 녹색 텍스트를 사용한다고 가정해 보겠습니다. 위의 목록에서 파일 형식 코드와 색상 코드를 합치면 다음을 얻을 수 있습니다.

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41" 

새 기본 색상을 설정하는 방법

이제 현재 Bash 세션에서 작동하는 사용자 정의 LS_COLORS 변수가 있습니다. 그러나 이것을 기억할 필요 없이 새 Bash 세션을 시작할 때마다 자동으로 사용되도록 영구적으로 만들고 싶을 것입니다.

사용자 계정의 .bashrc 파일에 추가하여 사용자 지정 LS_COLORS 변수 및 원하는 다른 Bash 변수를 설정할 수 있습니다. 이 파일은 ~/.bashrc에 있습니다. 따라서 사용자 이름이 bob인 경우 /home/bob/.bashrc에서 찾을 수 있습니다. 환경 변수를 설정하는 다른 방법도 있지만 이것은 간단한 방법입니다.

먼저 원하는 텍스트 편집기에서 이 파일을 엽니다. 여기서는 nano를 예로 사용하지만 vi, emacs 또는 기타 원하는 것을 사용할 수 있습니다.

 나노 ~/.bashrc 

다음과 같이 파일 끝에 새 줄에 사용자 지정 LS_COLORS 변수를 추가합니다.

 LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
광고

파일을 저장하고 종료합니다. nano에서 Ctrl+O를 누른 다음 Enter를 눌러 저장하고 Ctrl+X를 눌러 종료합니다.

새 Bash 세션을 시작할 때마다 Bash는 .bashrc 파일을 읽고 자동으로 LS_COLORS 변수를 설정합니다. 나중에 색상을 변경하려면 .bashrc 파일로 돌아가서 LS_COLORS 라인을 편집하십시오.

기본 색상을 다시 사용하기 위해 .bashrc 파일에 추가한 LS_COLORS= 라인을 삭제할 수도 있습니다. LS_COLORS 값을 설정하지 않으면 Bash는 기본 색상을 사용합니다.