`ls`로 색상을 끄는 방법?


50

에서 컬러 출력을 가지고 일반적으로 좋은 ls, grep등하지만 (예 : 다른 명령에 결과를 파이프하고 스크립트에서와 같이) 그것을 끌 수있는 스위치가 존재하지 않을 때? ls -G(함께 켜지 일부 의 BSD 파생 버전 ls이 기본 아니지만, 경우) ls +G을 해제하지 않습니다. 다른 것이 있습니까?


4
늦었지만 검색하는 사람들을 위해 : GNU ls 와 grep파이핑 할 --color=auto때 출력이 파이프 일 때 또는 실제로 tty가 아닌 경우 이미 색상이 꺼 지므로 아무것도 할 필요가 없습니다 . 그것이 '자동'의 의미입니다. 마찬가지로 ls -G, CLICOLOR_FORCE ...가 아닌 한 출력이 터미널로 보내지지 않으면 FreeBSD 또는 'CLICOLOR'는 비활성화됩니다.
— dave_thompson_085

답변:


69

ls현재 대부분의 배포판에서에 대한 색상 출력 은 일반적으로 별칭을 통해 활성화됩니다.

$ alias ls
alias ls='ls --color=auto'

별칭 앞에 백 슬래시를 붙여서 별칭을 일시적으로 비활성화 할 수 있습니다.

$ \ls

위의 작업을 수행하면이 호출에 대한 별칭이 단락됩니다. 별칭을 비활성화하려는 경우 언제든지 사용할 수 있습니다.


3
command ls물론 사용할 수도 있지만 조금 더 빠릅니다.
— iconoclast

깔끔한 트릭! ``이 나오도록 스크립트를 업데이트해야합니다.
— Viet

1
나는 \ ls을 좋아했다
— Alex Angelico

27

GNU ls를 사용하면 ls --color=never색상 출력을 명시 적으로 비활성화하도록 지정할 수 있습니다 . (가있는 경우에도 alias ls='ls --color=auto'를 실행 ls --color=never하면로 확장되고 ls --color=auto --color=never이후 옵션이 우선합니다.)


1
이것은 실제로 내가 찾던 대답이지만, BSD 파생 버전 (OS X, Solaris 및 물론 * BSD)과 같은 GNU 이외의 사례를 처리하기 때문에 slm의 답변을 선택된 답변으로 유지합니다.
— iconoclast

3

DOS 에서처럼 간단하게 사용할 수도 있습니다.

dir

색상이없는 결과가 표시됩니다 . ls와 같은 인수를 추가 할 수 있습니다 -l.


2
alias ls=ls

또는

unalias ls

이것은 착색을 영구적으로 비활성화합니다.


3
물론 이것은 산탄 총으로 비행을 죽이는 것과 비슷합니다. ls별칭에 추가 한 다른 모든 옵션 을 잃어 버리고 단일 명령 대신 전체 세션에 대해 옵션 을 잃게됩니다.
— iconoclast

그래서 내가 "영구적으로"라고 말한 이유 :-)
— Slyx

2

많은 Linux 배포판에서 이것은 사용자에서 기본적으로 켜져 .bashrc있습니다.

~/.bashrc다음과 같은 줄을 편집 하고 제거하십시오.

alias ls='ls --color=auto'

나중에이 시스템에서 생성 된 모든 새 계정에 대해이 기능을 비활성화하려면 다음에서 동일한 줄을 제거하십시오.

/etc/skel/.bashrc 

1

Centos7 에서이 설정은 /etc/profile.d/colorls.sh...이 스크립트의 마지막 3 줄은 다음과 같습니다.

alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null

욕망과 권한이 있다면 ... 원치 않는 줄을 주석 처리하면 트릭을 수행해야합니다.


또는 unalias ls ll l당신을 .bashrc당신은 권한이없는 경우
— avsej

0

색상을 끄려면 : unalias ls

색상을 켜려면 alias ls = 'ls --color = auto'

색상을 일시적으로 비활성화하려면 : \ ls -ltr


0

다른 일이있을 수 있습니다. ls대화 형으로 연결된 것으로 생각되지 않는 한 색상을 사용해서는 안됩니다. 다른 프로그램으로 파이프 할 때 색상을 지정해서는 안됩니다.

별명은 일반적으로 해당 옵션을 제거 할 수 없으며 작업해야하는 다른 기계로는 가지고 다닐 수없는 개인 설정에 익숙해지기 때문에 일반적으로 나쁜 생각입니다. 다른 것으로 파이프하기 위해 전원을 꺼야하는 경우 해당 파이프의 스위치를 사용하십시오. 그러나 파이프에는 색상이 없어야합니다.

의 ls경우 LS_COLORS환경 변수를 지원하는지 확인하십시오 . trapd00r은 / LS_COLORS는 당신에게 어떻게 THT 작품을 보여줍니다. dircolors를 사용하면 매분 및 파일 유형별로 색상을 조정할 수 있습니다. 설정하지 않고 LS_COLORS채색 기능을 설정 ls한 경우 파일 유형 및 속성을 파악하기 위해 여러 가지 시스템 호출을 수행하여 색상을 지정할 대상을 파악할 수 있습니다. Sherlock의 배후에있는 사람들은이 설정 LS_COLORS이 모든 것을 피할 수 있고 속도 가 40 배 향상 된다는 것을 발견했습니다 . 그들이 찾은 것을보기 위해 그들의 gory 세부 사항을 읽으십시오.

모든 파일 형식이 기본 색상을 사용하도록합니다.

$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'

dircolor에 공급 한 LS_COLORS 파일은 다음과 같습니다.

BLK                   0
CAPABILITY            0
CHR                   0
DIR                   0
DOOR                  0
EXEC                  0
FIFO                  0
FILE                  0
LINK                  0
MULTIHARDLINK         0
NORMAL                0
ORPHAN                0
OTHER_WRITABLE        0
SETGID                0
SETUID                0
SOCK                  0
STICKY                0
STICKY_OTHER_WRITABLE 0

들어 grep당신이 지원하는 경우, 참조 GREP_COLORS또는 GREP_OPTIONS.


이렇게 ls하면 선택한 색상에 대한 GNU 출력 이스케이프 시퀀스가 ​​생성됩니다. 이 설정 ls --color=always | od -a과 의 출력을 비교합니다 . ls --color=never | od -aLS_COLORS
— Kusalananda

진짜 속임수는 ls | od -a탈출구를 방출하지 않으며 그것이 내가 원하는 것입니다. 는 ls이 단자에 출력을 전송하는 때 만 서열을 방출한다. 그러나 당신이 그것을 말하면, 그렇게 할 것입니다. 그러니 그렇게하지 마십시오.
— brian d foy

-1

@ brian-d-foy의 대답에 덧붙여 대부분 의 경우 디렉토리 의 보이지 않는 파란색 또는 "OTHER_WRITABLE"의 화려한 녹색 을 변경하려는 간단한 성가신 색상이 있으므로 24를 사용하십시오. 비트 표시 :)

export LS_COLORS='di=04;01;38;5;33:ow=04;01;38;5;33;48;2;60;10;0'

디렉토리 색상과 다른 쓰기 가능한 색상 만 재정의

04: underline;
01: bold/brighter;
38;5;33: redifined-blue;
48;2;60;10;0: dark red background

ANSI 코드 에 대해 더 읽어보기


1
문제는 ls개별 색상을 변경하는 방법이 아니라 GNU 출력에서 ​​모든 색상을 제거하는 것 입니다.
— Kusalananda

OTHER_WRITABLE 만 끄려면 export LS_COLORS = 'ow = 00'을 사용하여 'ls'로 특정 색상을 끄는 방법은 어떻습니까?
— Iggy Lake
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.