ls -b
인쇄할 수 없는 문자가 포함된 파일 이름은 인쇄되어야 합니다. 예를 들어 ex ex.txt
로 표시되어야 ex\ ex.txt
하지만 macOS에서는 작동하지 않지만 여전히 작동하는 ex ex.txt
이유를 아는 사람이 있습니까?
답변1
이 -b
옵션은 그렇지 않습니다.표준화이므로 해당 동작은 구현에 따라 다릅니다.
많은 Linux 시스템은 기본적으로 GNU ls를 사용하며 -b
옵션을 다음과 같이 정의합니다.
그래픽이 아닌 문자에 대해 C 스타일 이스케이프 인쇄
그리고자세한 참조 구현. 공백 문자는 그래픽이 아닌 문자이므로 결국 이스케이프됩니다.
macOS에서정의-b
은 다르다:
-비 인쇄할 수 없는 문자를 강제로 인쇄합니다(제공:
ctype(3)
및 현재 로케일)을 파일 이름에 포함\xxx
합니다. 여기서트리플 엑스8진수 문자의 숫자 값입니다.-비 ~처럼-비, 가능하면 C 이스케이프 코드를 사용하세요.
함수 ctype
(또는 매크로)는 공백 문자를 인쇄 가능한 것으로 간주하고 이스케이프하지 않습니다.