MIME 형식과 File .extension의 관계는 무엇입니까? 코드 입니다. 나는

여기에 잘못된 생각이있을 수 있지만 다음과 같이 생각했습니다.

MIME 유형이 포함 된 식별 코드입니다 내부 파일.
File .extensions는 파일 이름에 접미사가 붙은 동일 코드 입니다.

나는 어둡고 어두운 시대에 들었던 것에서 리눅스가 .extension 불가지론이라고 생각했다.

필자는 최근 Windows 세계에서 왔으며 운영 체제 수준 에서 .extension 파일이 관련 응용 프로그램과 연결하는 유일한 방법입니다.

왜 그런지 모르겠 기 때문에 “fred” 라는 파일 “fred.txt”라는 파일이 모두 텍스트 편집기에서 열린다는 것을 당혹스럽게 생각합니다.

여기에 명확한 계층 구조가 있습니까?



답변

MIME 형식은 형식의 이름을 지정하는 방법 일뿐입니다. 파일 형식을 결정하는 방법과는 아무런 관련이 없습니다.

파일 형식을 결정하는 방법에는 두 가지가 있습니다. a) 확장명을보고 정확한지 또는 b) 내용을보고이를 기반으로 추측합니다. 파일 확장자가없는 경우 b가 유일한 옵션입니다.

많은 (이진) 파일 형식에는 유형을 결정하기 위해 볼 수있는 특정 헤더가 있습니다. 따라서 이러한 유형에 대해 옵션 b를 매우 신뢰할 수 있습니다.

일반 텍스트 파일 형식은 구조에 따라 결정될 수 있습니다 (파일에 html 태그가 많이 포함되어 있으면 html 파일 일 수 있습니다).

유닉스 및 리눅스 시스템에서는 file명령 줄 유틸리티를 사용하여 파일 내용을 기반으로 파일 유형을 찾을 수 있습니다.

파일 관리자는 종종 옵션 a와 b의 조합을 사용합니다 (예 : 파일 확장자를 모르거나 파일 확장자가없는 경우 먼저 파일 확장자를 확인한 후 내용을보십시오).

파일 유형은 일반적인 Linux 파일 시스템에서 메타 데이터로 저장되지 않습니다.


답변

Linux에서 파일 확장자는 파일 이름의 일부이며 실제로 운영 체제에 아무런 의미가 없습니다. MIME 형식은 파일 내용에 대한 설명입니다. fred그리고 fred.txt모두의 MIME 타입을 것이다 text/plain.

노틸러스와 같은 파일 관리자는이 MIME 유형을 사용하여 파일을 열 프로그램을 알 수 있습니다. 터미널에서 xdg-open명령은 동일한 작업을 수행합니다. 그러나 이것은 운영 체제 레벨이 아닌 사용자 공간 레벨입니다.

파일에는 실제로이 MIME 유형이 포함되어 있지 않지만 파일을 여는 프로그램은 다양한 방법을 사용하여이 MIME 유형이 무엇인지 알아냅니다. 일부는 파일 확장자에만 의존하지만 대부분은 파일의 시작 부분에서 데이터를 보는 것을 포함하여 다양한 기술을 사용합니다.

파일의 시작 부분에 ASCII 문자로 표시 될 수있는 바이트 만 포함되어 있으면 텍스트 파일이라고 가정해도 안전합니다. 확장명이 .html과 같은 경우 프로그램은이를 HTML 페이지로 가정하여 웹 브라우저에서 엽니 다. 이진 파일 형식에서도 마찬가지입니다. 예를 들어, 비트 맵 파일 형식은 ASCII에서 ‘BMP’로 시작하고 이미지를 나타내는 이진 데이터가 나옵니다.

간단히 말해서 Linux 프로그램은 파일의 데이터와 파일 확장자를 기반으로 교육 된 추측을합니다. 이것은 매우 신뢰할 수있는 것처럼 들리지 않지만 사용 된 알고리즘은 내가 제공 한 예제보다 복잡하고 실제로 실제로 정확합니다.


답변

리눅스 세계에서 파일 확장자는 파일 형식에 대한 하나의 지표입니다. 파일 유형을 추측하는 “file”이라는 명령 행 도구가 있습니다.

이 유형을 얻으려면 주로 3 가지 지표가 있습니다.

  • 확장
  • 파일 시스템의 특수 속성 (예 : 심볼 또는 하드 링크, 폴더, 입력 장치 등)
  • 내용
    • 이진 (실행 파일의 ELF 정보와 같은)
    • 텍스트 (같은 <html>, #!/bin/bash)

파일 형식과 MIME 형식의 관계는 MIME이 파일 형식 (예 :)을 나타내는 표준 일 뿐이라는 것 text/css입니다.

Linux는 파일 유형을 “추측”하고 해당 유형에 대한 관련 프로그램을 엽니 다.