쉘 스크립트의 8진수 이스케이프 시퀀스는 16진수 이스케이프 시퀀스보다 이식성이 더 좋습니까?

쉘 스크립트의 8진수 이스케이프 시퀀스는 16진수 이스케이프 시퀀스보다 이식성이 더 좋습니까?

임의의 데이터를 처리할 수 있는 쉘 코드를 작성하는 프로젝트의 일환으로 저는 널 바이트를 다른 문자로 변환하는 방법을 찾고 있었습니다. tr임의의 바이트를 8진수를 사용하여 이스케이프해야 한다는 것을 발견했습니다 . Unix 유틸리티의 일부 다른 비GNU 구현(지금은 잊어버렸습니다)도 \xHH출력에서 ​​보다 일반적이고 인쇄할 수 없는 문자 대신 8진수 이스케이프 시퀀스를 요구하며 8진수 이스케이프 시퀀스로 표시됩니다. Linux의 루프백 장치에 대한 지원 파일은 다음에서 찾을 수 있습니다 /sys/block/${LOOP_DEVICE}/loop/backing_file. 리터럴로 표시되는 인쇄할 수 없는 문자에 대한 지원 파일 경로 \012.

나는 8진수 이스케이프 시퀀스가 ​​POSIX 표준이거나 Unix 시절부터 사용된 관행이라고 가정합니다. Unix는 사용 방법을 \xHH배웠을 tr때 더 새롭고 덜 지원되었지만 이러한 의심이 맞는지는 확실하지 않습니다. \OOO과도하게 사용하면 \xHH쉘 스크립트/함수의 이식성이 향상됩니까?

답변1

지원되는 내용은 유틸리티에 따라 다릅니다. tr및 의 경우 printfPOSIX는 16진수 시퀀스가 ​​아닌 8진수 시퀀스만 지원합니다. 대부분의 최신 Unix 시스템은 최소한 POSIX 표준을 구현하려고 시도하므로 일반적으로 POSIX 표준의 기능에 의존하는 것이 안전합니다.

POSIX가 무엇을 지원하는지 알고 싶다면,최신 버전온라인에서는 셸 및 유틸리티 섹션에서 각 유틸리티에 대한 정보를 볼 수 있습니다.

관련 정보