문제

만약 내가한다면

$ ls -l --color=always

다른 파일 유형 등에 대한 멋진 색상이있는 디렉토리 내부에 파일 목록을 얻습니다.

이제 컬러 출력을 파이프 할 수 있기를 원합니다. ls ~을 통해 grep 필요하지 않은 일부 파일을 걸러 내기 위해. 핵심은 GREP 필터 후에 채색을 보존하고 싶다는 것입니다.

$ ls -l --color=always | grep -E some_regex

^ 나는 grep 이후 색칠을 잃었다

편집 : 헤드리스 서버 Ubuntu 8.10, Bash 3.2.39, 멋진 구성이없는 재고 설치를 사용하고 있습니다.

도움이 되었습니까?

해결책

당신의 grep은 아마도 제거 될 것입니다 ls자체 채색이 켜져 있기 때문에 색상 코드가 켜져 있기 때문입니다.

당신은 이것을 할 수 있습니다 :

ls -l --color=always | grep --color=never pattern

그러나 정확히 당신이 무엇을 이해하는 것이 매우 중요합니다. grep여기 핑. 뿐만 아니라 grepls 불필요한 (사용 a glob 대신),이 특별한 경우입니다 grep파일 이름과 파일 통계뿐만 아니라 다음으로 추가 된 컬러 코드를 통한 핑 ls!

귀하의 질문에 대한 실제 대답은 다음과 같습니다 grep 그것. 파이프 할 필요는 없습니다 ls 무엇이든 또는 출력을 캡처합니다. ls 인간의 해석을위한 것입니다 (예 : 바라보다 안에서 인터렉티브 껍질 만이며,이 목적을 위해 그것은 매우 편리합니다). 앞에서 언급했듯이 어떤 파일을 필터링 할 수 있습니다 ls 글로그를 사용하여 열거 :

ls -l *.txt      # Show all files with filenames ending with `.txt'.
ls -l !(foo).txt # Show all files with filenames that end on `.txt' but aren't `foo.txt'. (This requires `shopt -s extglob` to be on, you can put it in ~/.bashrc)

고도로 이 문제에 대한이 두 가지 훌륭한 문서를 읽는 것이 좋습니다.

다른 팁

바이너리를 직접 호출하여 "실제"LS를 실제로 사용하고 있는지 확인해야합니다.

/bin/ls ....

왜냐하면 : LS가 항상 이상한 이유 나 버그를 위해 -color =를 무시하지 않는 한, 당신이 설명한 코드는 실제로 작동해야합니다.

직접 또는 변수를 통해 일부 옵션을 추가하는 일부 별칭이나 기능을 의심합니다. 이것이 사실이 아님을 두 번 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top