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


50

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


4
늦었지만 검색하는 사람들을 위해 : GNU lsgrep파이핑 할 --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.