문제
만약 내가한다면
$ 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
여기 핑. 뿐만 아니라 grep
핑 ls
불필요한 (사용 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
: http://mywiki.wooledge.org/parsingls - 의 힘
glob
에스: http://mywiki.wooledge.org/glob
다른 팁
바이너리를 직접 호출하여 "실제"LS를 실제로 사용하고 있는지 확인해야합니다.
/bin/ls ....
왜냐하면 : LS가 항상 이상한 이유 나 버그를 위해 -color =를 무시하지 않는 한, 당신이 설명한 코드는 실제로 작동해야합니다.
직접 또는 변수를 통해 일부 옵션을 추가하는 일부 별칭이나 기능을 의심합니다. 이것이 사실이 아님을 두 번 확인하십시오.