이전 강의에서는 touch로 확장자 없는 파일을 만들었습니다. 리눅스 파일 이름은 내용을 설명하지 않아도 됩니다. funny.gif라는 파일이 반드시 GIF 이미지인 것은 아닙니다.
명령줄 · 레슨 6
file
이름이나 확장자에 의존하지 않고 파일의 실제 내용 유형을 추정하는 방법을 배웁니다.
파일을 검사해 예상 유형을 확인하려면 file 명령어를 사용합니다.
$ file banana.jpg
banana.jpg: JPEG image data
파일 확장자만으로는 부족한 이유
리눅스 도구들은 보통 파일 확장자에 의존하지 않고 파일이 무엇인지 판단합니다. 셸 스크립트는 backup이라는 이름일 수 있고, 텍스트 파일은 README일 수 있으며, 이미지 파일이 잘못된 확장자를 가질 수도 있습니다. file 명령어는 파일 시스템 메타데이터와 내용에서 알아볼 수 있는 패턴 같은 속성을 검사합니다.
$ file README
README: ASCII text
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable
그 결과는 분류일 뿐 보장은 아닙니다. 특이하거나 불완전하거나 손상된 파일은 정확한 유형 대신 data처럼 넓은 설명으로 표시될 수 있습니다.
report.jpg라는 파일이 이미지가 아닐 수도 있습니다. 실제 내용의 예상 유형을 확인하는 명령어는 무엇인가요?
여러 파일 확인하기
여러 파일을 한 번에 확인할 수 있습니다:
$ file notes.txt image.png archive.tar.gz
notes.txt: ASCII text
image.png: PNG image data
archive.tar.gz: gzip compressed data
쉘 와일드카드도 사용할 수 있습니다. 쉘이 *를 일치하는 이름들로 확장한 뒤 file이 각 파일을 검사합니다.
$ file *
현재 디렉터리에서 *와 일치하는 숨김 항목 이외의 모든 이름을 file로 검사하는 명령어는 무엇인가요?
MIME 정보 표시하기
-i 옵션은 미디어 유형과 가능한 경우 문자 집합을 포함한 MIME 형식 정보를 출력합니다. 다른 프로그램이 text/html 같은 값을 요구할 때 유용합니다.
$ file -i index.html
index.html: text/html; charset=us-ascii
index.html의 MIME 형식 정보를 출력하는 명령어는 무엇인가요?
유용한 file 옵션
-i: MIME 타입 정보를 보여줍니다.-b: 간략 모드로, 출력에서 파일 이름을 생략합니다.-L: 심볼릭 링크를 따라갑니다.-z: 압축된 파일을 검사하려 시도합니다.
예를 들어:
$ file -b notes.txt
ASCII text
notes.txt를 분류하되 출력에서 파일 이름을 생략하는 명령어는 무엇인가요?
레슨 완료
file 완료
이제 file을 사용해 파일에 어떤 내용이 들어 있을지 조사할 수 있습니다.
확장자를 믿지 않고 파일을 분류할 수 있습니다.
한 명령어로 여러 경로 이름을 검사할 수 있습니다.
MIME 형식 정보를 요청할 수 있습니다.
링크, 압축 데이터와 출력 레이블의 처리 방식을 조정할 수 있습니다.