저는 이 sed
명령을 사용하고 있으며 이전 명령의 색상 출력을 유지하고 싶습니다. sed의 출력은 ls
색상이 지정되어 있지만 sed의 출력은 색상이 없습니다. 저는 OSX를 사용하고 있습니다.
ls -la | sed -En '/Desktop/q;p'
답변1
macOS에서는 ls
GNU가 아니며 Linux 사용자가 기대할 수 있는 이 기능에 대한 옵션을 ls
허용하지 않습니다 .--color=always
macOS 버전에서는 ls
색상이 다음과 같이 표시됩니다.두 개의 변수: $CLICOLOR
그리고 $CLICOLOR_FORCE
. 전자가 정의된 경우 지정된 터미널은 $TERM
색상을 지원하고 출력은 터미널로 전송되며 출력은 GNU --color=auto
옵션과 마찬가지로 색상이 됩니다. 후자의 변수도 정의된 경우 최종 조건이 제거되고 GNU의 --color=always
.
따라서 색상을 에 전달하려면 sed
다음과 같은 것이 필요합니다.
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
답변2
ls
나는 많은 배포판과 마찬가지로 귀하의 배포판 에도 작동해야 하는 맵이 있다고 맹목적으로 추측합니다 ls --color=auto
.ls -la --color=always | sed …
( auto
대체로 이 설정은 ls
출력이 모니터로 가는지 확인하고 모니터의 색상만 확인합니다. 그 이유는 색상이 이스케이프 시퀀스, 즉 보이지 않는 명령 문자를 통해 구현되므로 프로그램이 일부 색상을 혼동할 수 있기 때문입니다. 파일 이름 등).