sed를 사용하여 컬러 출력을 유지하는 방법

sed를 사용하여 컬러 출력을 유지하는 방법

저는 이 sed명령을 사용하고 있으며 이전 명령의 색상 출력을 유지하고 싶습니다. sed의 출력은 ls색상이 지정되어 있지만 sed의 출력은 색상이 없습니다. 저는 OSX를 사용하고 있습니다.

ls -la | sed -En  '/Desktop/q;p'

답변1

macOS에서는 lsGNU가 아니며 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출력이 모니터로 가는지 확인하고 모니터의 색상만 확인합니다. 그 이유는 색상이 이스케이프 시퀀스, 즉 보이지 않는 명령 문자를 통해 구현되므로 프로그램이 일부 색상을 혼동할 수 있기 때문입니다. 파일 이름 등).

관련 정보