실행 파일(바이너리 파일)에 대한 표준 명명 방법과 파일에 인쇄할 수 없는 문자가 포함되어 있는지 확인하는 방법은 무엇입니까?

실행 파일(바이너리 파일)에 대한 표준 명명 방법과 파일에 인쇄할 수 없는 문자가 포함되어 있는지 확인하는 방법은 무엇입니까?

그래서 나는 종종 바이너리 실행 파일을 실행하는 죄를 범하고 cat, 내 터미널은 보통 이상한 소리를 내고 기분이 좋지 않습니다. 바이너리/실행 가능 인코딩 파일에 확장명을 부여하기 위해 허용되는 명명 규칙이 있습니까?

실행 파일이 있습니다(그리고 제가 go build -o /tmp/api.exe .언급한 대로 출력 이름을 .exe로 지정했습니다. 하지만 utf8인지 확인하기 전에 파일을 확인할 수 있는 방법이 있는지 궁금합니다.

답변1

실행 파일의 표준 명명 방법은 명령줄에서 결국 무시되는 확장자를 제공하지 않고 구현해야 하는 명령의 이름을 제공하는 것입니다 ls.cat

파일을 제공하기 전에 파일에 포함된 내용을 확인하려면 다음 catfile실행하세요.

$ file /bin/ls
/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b6b1291d0cead046ed0fa5734037fa87a579adee, for GNU/Linux 3.2.0, stripped, too many notes (256)

$ file /bin/zgrep
/bin/zgrep: a /usr/bin/sh script, ASCII text executable

이는 내 터미널에 이상한 작업을 수행하지 않는다는 것을 알려줍니다 cat /bin/zgrep(이스케이프 시퀀스도 포함하지 않고 개별적으로 식별됩니다 file).

나는 less일반적인 사용을 선호합니다. 바이너리를 표시하기 전에 경고하고 어떤 경우에도 터미널을 엉망으로 만들지 않습니다. 또한 cat짧은 파일처럼 작동 하도록 구성할 수도 있습니다 ( -F옵션 참조).

~처럼모스비인쇄할 수 없는 문자를 눈에 보이는 표현(및 접두사)으로 바꾸는 cat옵션을 추가하면 이진 파일에서 이 작업을 안전하게 수행 할 수 있다는 점을 지적합니다 . -v(Rob Pike는 이 옵션이 다음과 같이 주장한 것으로 유명합니다.^M-해롭다— 터미널에 대한 영향 때문이 아니라 명령 스타일에 대한 영향 때문입니다. )

관련 정보