파일 확장자에 어떤 목적 (운영 체제 용)이 있습니까?


73

Linux는 파일 헤더의 코드를 통해 파일 유형을 결정합니다. 파일을 여는 데 사용할 소프트웨어를 알기 위해 파일 확장자에 의존하지 않습니다.

그것이 제가 교육에서 기억 한 것입니다. 내가 틀렸다면 나를 바로 잡아주세요!

최근 우분투 시스템과 약간의 작업 : 내가 좋아하는 확장 기능이있는 시스템의 파일을 많이 볼 .sh, .txt, .o,.c

이제 궁금합니다 :이 확장은 인간만을위한 것입니까? 그래서 어떤 종류의 파일인지 생각해야합니까?

아니면 운영 체제에도 어떤 목적이 있습니까?


5
여기에서 좋은 반응을 얻을 수없는 경우도있다 기억 unix.stackexchange.com
mchid



5
Windows에서는 Linux / Unix에서는 대부분 그렇지 않습니다. - 주요 예외는 압축 프로그램입니다 gzip, bzip2, xz- 등등. 이러한 프로그램은 접미사를 사용하여 파일의 압축 된 버전을 대체하는 압축되지 않은 파일과 분리합니다. 압축 프로그램은 실제로 파일이 실제로 처리해야하는 형식의 압축 파일이지만 잘못된 접미사에 대해 불평합니다.
Baard Kopperud

6
이 질문의 문제점 중 일부는 "운영 체제"가 잘 정의 된 개념이 아니라고 생각합니다. 운영 체제의 일부는 무엇이며 그 위에있는 응용 프로그램은 무엇입니까? OS의 어느 부분 (우리가 이야기하든 OS)이 파일 형식을 신경 쓰지 않는 것은 아닙니다. 그들이 어떻게 아는지 에 대한 구별 은 무의미합니다. 그들은 둘 다하지 않습니다. 반면에 응용 프로그램은 하나 또는 두 가지 작업을 모두 수행 할 수 있습니다.
IMSoP

답변:


39

Linux는 파일 헤더의 코드를 통해 파일 유형을 결정합니다. 소프트웨어로 파일을 여는 데 사용하는 파일 확장자에 의존하지 않습니다.

그것이 제가 교육에서 기억 한 것입니다. 내가 틀렸다면 나를 바로 잡아주세요!

  • 정확하게 기억했다.

이러한 확장은 인간만을위한 것입니까?

  • 그렇습니다.

확장에 의존하는 다른 운영 체제와 상호 작용할 때는 확장을 사용하는 것이 더 현명한 아이디어입니다.

Windows에서는 여는 소프트웨어가 확장에 연결되어 있습니다.

Windows에서 "file"이라는 텍스트 파일을 여는 것은 "file.txt"라는 동일한 파일을 여는 것보다 어렵습니다 (파일 열기 대화 상자 *.txt*.*매번 전환해야합니다 ). 탭과 세미콜론으로 구분 된 텍스트 파일도 마찬가지입니다. 전자 메일 가져 오기 및 내보내기 (.mbox 확장명)도 마찬가지입니다.

특히 소프트웨어를 코딩 할 때. HTML 파일 인 "software1"및 JavaScript 파일 인 "software2"라는 파일을 여는 것은 "software.html"및 "software.js"에 비해 더 어려워집니다.


리눅스에서 파일 확장자가 중요한 시스템이 있다면이를 버그라고 부릅니다. 소프트웨어가 파일 확장자에 의존하면 악용 될 수 있습니다. 우리는 인터프리터 지시어 를 사용하여 파일이 무엇인지 식별합니다 ( "파일의 처음 두 바이트는 문자"#! "일 수 있습니다.이 숫자는 마법의 숫자 (16 진수 23과 21,"# "와"의 ASCII 값! ")는 종종 shebang이라고합니다.").

파일 확장자의 가장 유명한 문제는 Windows의 LOVE-LETTER-FOR-YOU.TXT.vbs 였습니다. 이것은 파일 탐색기에 텍스트 파일로 표시되는 시각적 기본 스크립트입니다.

Ubuntu에서는 노틸러스에서 파일을 시작할 때 수행 할 작업에 대한 경고가 표시됩니다. 노틸러스에서 스크립트를 실행하여 gEdit을 열어야하는 일부 소프트웨어를 시작하려는 것은 분명한 문제이며 이에 대한 경고가 표시됩니다.

무언가를 실행할 때 명령 행에서 확장이 무엇인지 시각적으로 볼 수 있습니다. 그것이 .vbs로 끝나면 의심스러워지기 시작할 것입니다 (.vbs는 Linux에서 실행 가능하지 않습니다. 적어도 약간의 노력 없이는 아닙니다)).


31
마지막 문장에서 당신이하고 싶은 말을 완전히 얻지 못했습니다. 첫째, 확장명을 숨기지 않고 숨기는 것이 문제입니다. 둘째는 Linux에서 익스플로잇이 동일하게 작동합니다. 바이너리 파일의 이름을 지정하고 readme.txt실행 파일 로 만듭니다. 사용자가 실행 한 경우 편집기를 열지 않고 코드를 실행합니다. 이와 관련하여 확장 기능을 중요하게 만들면 (숨겨지지는 않음) 잘 모르는 사용자에게는 더 안전하고 설명하기 쉽습니다. 다른 차이점 (대부분 현재 디렉토리에서 파일을 실행하지 않음)이 있지만 확장자와 관련이 없습니다.
techraf

4
@techraf 사실 파일 관리자 는 아마도 readme.txt텍스트 편집기로 파일 을 열려고 시도 할 것입니다 . 방금 KDE에서 돌고래로 시도하여 실행 권한을 추가하고 저장 한 .txt다음 클릭하면 Kate에서 열립니다. 이름을 바꾼 .sh다음 클릭하면 실행됩니다.
Bakuriu

9
linux : make는 파일 확장자에 의존하는 규칙을 기반으로하기 때문에, 단순한 확장자 이상의 사람을위한 확장명을 만들지 않습니까?
bolov

15
이것은 엄청나게 잘못된 대답입니다. Linux의 일부 부분은 매직 숫자를 사용하여 파일 형식을 결정합니다. 명령 행에서 파일을 실행합니다. 그러나 시스템의 다른 거대한 부분은 파일 확장자를 사용하여 동적 링커 (.so 파일을 원하는), modprobe, 빌드 시스템, 플러그인, 파이썬 라이브러리, 루비 등 여부를 알 수 있습니다. 마법의 숫자가 있고, file휴리스틱 기반이며, 명확하지 않습니다.
Alan Shutko

3
"리눅스는 파일 헤더의 코드를 통해 파일 형식을 결정합니다" "올바른"WTF? "파일 헤더의 코드"는 무엇입니까? 이러한 코드는 없으며 Linux에는 일반적인 "파일 헤더"가 없습니다.
leonbloy

68

여기에는 100 % 흑백 답변이 없습니다.

일반적으로 Linux는 파일 이름 (및 파일 확장자, 즉 일반적으로 마지막 기간 이후의 파일 이름의 일부)에 의존하지 않고 대신 내용의 처음 몇 바이트를 검사하고 알려진 매직 번호 목록과 비교하여 파일 유형을 결정합니다. .

예를 들어 모든 비트 맵 이미지 파일 (일반적으로 이름 확장명 .bmp)은 BM첫 두 바이트 의 문자 로 시작해야합니다 . Bash, Python, Perl, AWK 등과 같은 대부분의 스크립팅 언어의 스크립트 (기본적 #으로 주석으로 시작하는 라인을 처리하는 모든 것 )는 #!/bin/bash첫 번째 라인 과 같은 shebang을 포함 할 수 있습니다 . 이 특수 주석은 시스템에 파일을 열 응용 프로그램을 알려줍니다.

따라서 일반적으로 운영 체제는 파일 형식을 결정하기 위해 파일 내용이 아닌 파일 내용에 의존하지만 Linux에서는 파일 확장자가 절대 필요하지 않다고 말하는 것은 사실의 절반에 지나지 않습니다.


응용 프로그램은 물론 파일 이름 및 확장자 확인을 포함하여 원하는 파일 검사를 구현할 수 있습니다. eog파일 확장자로 이미지 형식을 결정하고 컨텐츠와 일치하지 않으면 오류를 발생시키는 그놈의 눈 ( , 표준 사진 뷰어)이 그 예입니다 . 이것이 버그인지 기능인지에 대해 논의 할 수 있습니다 ...

그러나 운영 체제의 일부 부분도 파일 이름 확장자를 사용합니다 (예 : 소프트웨어 소스 파일을 구문 분석 할 때 확장자 /etc/apt/sources.list.d/가있는 파일 만 *.list구문 분석됩니다). 여기에서 주로 파일 형식을 결정하는 데 사용되지 않고 일부 파일의 구문 분석을 활성화 / 비활성화하는 데 사용되지만 시스템이 파일을 처리하는 방식에 영향을주는 파일 확장명입니다.

그리고 물론 인간 사용자의 이익이 분명 파일의 형식을하고도 동일한 기본 이름을 가진 여러 개의 파일과 같은 다른 확장을 허용하는 파일 확장자에서 가장 site.html, site.php, site.js, site.css단점은 물론이다 등 파일 확장과 실제를 파일 형식 / 내용이 반드시 일치 할 필요는 없습니다.

또한 Windows는 readme파일 로 수행 할 작업을 모르지만 readme.txt.


표준 이미지 뷰어에 .bmp로 끝나는 파일 이름이 필요한 경우 "BM"으로 시작하는 파일 내용에 의존하는 OS 부분은 무엇입니까? AFAIK, 커널이 관심을 갖는 유일한 매직 번호는 특별한 경우를 포함하여 실행 가능한 유형입니다 #!. 그 밖의 모든 것은 응용 프로그램의 결정에 달려 있습니다.
IMSoP

@IMSoP 나는 정확한 구현을 eog모르고 왜 그들이 파일 이름에 관심이 있는지 모르겠다. 이것은 제 생각에는 버그입니다. 물론 파일 이름이 "bmp"이지만 내용 형식이 일치하지 않으면 물론 오류가 발생합니다. 물론 각 응용 프로그램은 파일 확인 방법을 결정하지만 일반적으로 Linux 응용 프로그램은 이름에 의존해서는 안됩니다. Btw, file추천을 사용하여 내용별로 파일 형식을 검사 할 수 있습니다 .
바이트 사령관

1
내가 도전하고있는 문장은 "Linux ... 처음 몇 바이트를 검사하여 파일 형식을 결정합니다"입니다. 그 문장에서 "Linux"의 어떤 정의를 사용하고 있습니까? file유틸리티 의 존재는 실제로 아무 것도 증명하지 않습니다. 그것은 모든 OS에 존재할 수있는 유용한 도구입니다. OS의 어떤 기본 부분이 file파일 이름을 붙잡는 것보다 더 "올바른" 실행을 합니까?
IMSoP

확장자
isanae

24

다른 사람들이 언급했듯이 Linux에서는 Windows에서 사용하는 파일 이름 확장명 연결 방법 대신 인터프리터 지시문 방법이 사용됩니다 (일부 메타 데이터를 헤더 또는 매직 번호로 파일에 저장하여 올바른 인터프리터가 읽을 수 있도록 지시합니다).

즉, 거의 모든 이름을 가진 파일을 만들 수 있습니다 . 몇 가지 예외가 있습니다.

하나

주의 할 말을 추가하고 싶습니다.

파일 이름 연결을 사용하는 시스템에서 시스템에 일부 파일이있는 경우 파일에 해당 매직 넘버 나 헤더가 없을 수 있습니다. 파일 이름 확장자는 파일을 읽을 수있는 응용 프로그램에서 이러한 파일을 식별하는 데 사용되며 이러한 파일의 이름을 바꾸면 예기치 않은 결과가 발생할 수 있습니다. 예를 들면 다음과 같습니다.

파일 이름을로 변경하면 Libreoffice 에서 파일 My Novel.docMy-Novel계속 열 수 있지만 '제목 없음'으로 열리고 저장하려면 다시 이름을 지정해야합니다 (Libreoffice는 기본적으로 확장자를 추가하므로 두 파일 My-NovelMy-Novel.odt, 성 가실 수 있습니다)

더 심각하게 파일 이름을 My Spreadsheet.xlsx로 변경하면 My Spreadsheet.xlsx 파일을 내 스프레드 시트로 열어보십시오 xdg-open My-Spreadsheet(실제로 압축 된 파일이기 때문에).

그리고 당신은 파일의 이름을 변경하는 경우 My Spreadsheet.xls에를 My-Spreadsheet당신이 때, xdg-open My-Spreadsheet당신이 말하는 오류가

오류 열기 위치 :이 파일을 처리하는 것으로 등록 된 응용 프로그램이 없습니다

(두 경우 모두 그렇더라도 정상적으로 작동합니다. soffice My-Spreadsheet)

당신은 다음에 확장명이 파일의 이름을 변경하는 경우 My-Spreadsheet.odsmv당신이 얻을 것이다 그것을 열려고 :

(수리 실패)

파일을 올바르게 열려면 원래 확장명을 다시 설정해야합니다 (원하는 경우 형식을 변환 할 수 있음)

TL; DR :

이름 확장자를 가진 비원시 파일이있는 경우 모든 것이 정상이라고 가정하면 확장자를 제거하지 마십시오!


4
파일 확장자가없는 새로운 스타일의 MS Office 문서 (docx, xlsx, pptx 등)는 실제로 파일 내용이 문서 내용을 정의하는 데 필요한 모든 XML 문서와 미디어 파일을 포함하는 일반 ZIP 압축 파일이기 때문에 아카이브 관리자에서 열립니다. ZIP 압축 디렉토리의 파일 형식은 요즘 꽤 일반적입니다.
바이트 사령관

1
이미 많은 훌륭한 답변이 있지만 내가 알아 차린 libreoffice에 대해 더 구체적입니다. 쉼표로 구분 된 값 (CSV) 파일을 만들어 "test.csv"로 저장하면 사용중인 구분 기호 유형 (예 : libreoffice Calc)을 묻는 창이 열립니다. 예를 들어이 파일의 이름을 "test.cs"로 바꾸면 libreoffice의 Writer가 열립니다. 따라서 위의 ZIP 예제 외에도 libreoffice가 파일 확장자를 사용하는 것처럼 보입니다.
Ray

3
리눅스 파일 시스템은 파일 형식과 관련하여 아무것도하지 않습니다. 그것은 그 위에서 실행되는 프로그램에 달려 있습니다.
피터 그린

@PeterGreen 그렇습니다. 그러나 프로그램에 중요성을 부여한다는 사실은 예를 들어 고전적인 MacOS에는 [4 바이트 "파일 형식"및 "작성자 앱"필드가있었습니다 " 파일 이름의 일부가 아니므로 OS 및 응용 프로그램은 파일 확장자를 보지 않고도 필요한 모든 정보를
얻었습니다.

3
@PeterGreen Windows 파일 시스템은 파일 형식과 관련하여 아무것도하지 않습니다. 그래픽 셸 (Windows 탐색기)은 파일 확장명을 사용하여 두 번 클릭 할 동작을 선택하지만 기술적으로는 노틸러스와 마찬가지로 OS 위에서 실행되는 프로그램 일뿐입니다. 해당 동작으로 Linux 파일 관리자를 작성하거나 파일 내용을 검사 한 Windows를 작성하는 것이 완벽하게 가능합니다.
IMSoP

20

다른 답변과 다른 접근 방식을 취하고 "Linux"또는 "Windows"와 관련이 있다는 개념에 도전하고 싶습니다.

파일 확장자의 개념은 간단히 "이름의 일부를 기반으로 파일 유형을 식별하기위한 규칙"으로 표현할 수 있습니다. 파일 유형을 식별하는 다른 일반적인 규칙은 파일의 내용을 알려진 서명 데이터베이스 ( "마법 번호"접근 방식)와 비교하여 파일 시스템의 추가 속성 (원래 MacOS에서 사용 된 접근 방식)으로 저장하는 것입니다. .

Windows 또는 Linux 시스템의 모든 파일에는 이름과 내용이 모두 있으므로 파일 유형을 알고 싶은 프로세스는 "확장"또는 "마법 번호"접근 방식을 적절하게 사용할 수 있습니다. 대부분의 파일 시스템에이 속성에 대한 표준 위치가 없으므로 메타 데이터 접근 방식은 일반적으로 사용할 수 없습니다.

Windows에서는 파일 확장자를 파일 식별의 기본 수단으로 사용하는 강력한 전통이 있습니다. 그래픽 파일 브라우저 (Windows 3.1의 파일 관리자 및 최신 Windows의 탐색기)는 파일을 두 번 클릭하여 실행할 응용 프로그램을 결정할 때이를 사용합니다. Linux (그리고 더 일반적으로 Unix 기반 시스템)에서는 내용을 검사하는 전통이 더 많습니다. 특히 커널은 직접 실행 된 파일의 시작 부분을보고 실행 방법을 결정합니다. 스크립트 파일은 인터프리터 #!경로로 시작하여 인터프리터가 사용할 것을 나타낼 수 있습니다 .

이러한 전통은 각 시스템을 위해 작성된 프로그램의 UI 디자인에 영향을 주지만 각 접근 방식마다 상황에 따라 장단점이 있기 때문에 많은 예외가 있습니다. 내용을 검사하지 않고 파일 확장자를 사용하는 이유는 다음과 같습니다.

  • 파일 내용을 검사하는 것은 파일 이름을 검사하는 것과 비교하여 상당히 비용이 많이 듭니다. 예를 들어 "* .conf라는 모든 파일 찾기"는 "첫 줄이이 서명과 일치하는 모든 파일 찾기"보다 훨씬 빠릅니다.
  • 파일 내용이 모호 할 수 있습니다. 많은 파일 형식은 실제로 특수한 방식으로 처리 된 텍스트 파일 일뿐 아니라 다른 파일 형식은 특수하게 구성된 zip 파일이므로 정확한 서명을 정의하는 것은 까다로울 수 있습니다.
  • 파일은 실제로 여러 유형으로 유효 할 수 있습니다. HTML 파일은 또한 유효한 XML 일 수 있으며, zip 파일과 함께 연결된 GIF는 두 형식 모두에서 유효합니다.
  • 매직 넘버 매칭은 오 탐지로 이어질 수 있습니다. 헤더가없는 파일 형식은 바이트 "GIF89a"로 시작하여 GIF 이미지로 잘못 식별 될 수 있습니다.
  • 파일의 이름을 바꾸면 "비활성화 됨"으로 표시하는 편리한 방법이 될 수 있습니다. 예를 들어, 백업을 나타 내기 위해 "foo.conf"를 "foo.conf ~"로 변경하면 모든 지시문을 주석 처리하기 위해 파일을 편집하는 것이 쉽고 자동로드 된 디렉토리에서 파일을 옮기는 것보다 편리합니다. 마찬가지로 .php 파일의 이름을 .txt로 바꾸면 Apache가 소스를 PHP 엔진으로 전달하지 않고 일반 텍스트로 제공하도록 지시합니다.

기본적으로 파일 이름을 사용하는 Linux 프로그램의 예 (그러나 다른 모드가있을 수 있음) :

  • gzip과 gunzip은 ".gz"로 끝나는 모든 파일을 처리합니다.
  • gcc는 ".c"파일을 C로, ".cc"또는 ".C"를 C ++로 처리합니다.

Windows는 또한 "잘 알려진"확장명을 숨기는 강력한 전통을 가지고 있으며 DOS조차도 .COM, .BAT 및 .EXE를 생략하는 명령을 허용하여 어떤 실제 프로그램을 실행할 것인지 자동으로 검색합니다. * nix에는 그러한 전통이 없습니다.
Monty Harder

이것은 훨씬 더 나은 대답이지만 한 가지 사실적인 오류가 있습니다 ... #!시작 부분에 스크립트를 실행하여 실행할 수는 없습니다 . 실행 가능 비트가 설정된 모든 파일은 여러 가지 방법 중 하나로 실행될 수 있습니다. #!/bin/bash유사한 서명은 사용할 인터프리터를 지정합니다. 그러한 서명이 제공되지 않으면 기본 쉘 인터프리터가 가정됩니다. 'Hello World'라는 두 단어 만 포함하고 실행 비트가 설정된 파일은 실행될 때 'Hello'명령을 찾으려고 시도합니다.
DocSalvager

1
@DocSalvager 잘 잡았습니다. 어설픈 문구였습니다. shebang이 스크립트를 실행 가능 하게 만들지 않고 실행 방법 만 변경 한다는 것을 분명히하기 위해 약간의 말을 했습니다.
IMSoP

15

실제로 일부 기술 파일 확장자를 사용하므로 우분투에서 해당 기술을 사용하는 경우 확장자도 의존해야합니다. 몇 가지 예 :

  • gcc확장자를 사용하여 C와 C ++ 파일을 구별합니다. 확장명이 없으면 구분하기가 거의 불가능합니다 (클래스가없는 C ++ 파일을 상상해보십시오).
  • 많은 파일 ( docx, jar, apk) 단지 특히 ZIP 아카이브를 구성하고 있습니다. 일반적으로 컨텐츠에서 유형을 유추 할 수 있지만 항상 가능하지는 않습니다 (예 : 파일 에서 Java Manifest는 선택 사항jar).

이러한 경우 파일 확장자를 사용하지 않으면 해킹이 필요한 해결 방법으로 만 가능하며 오류가 발생하기 쉽습니다.


프로그래밍에 대해 잘 설명했지만 대부분의 세부 사항이 잘못되었습니다. gccC 파일의 프론트 엔드이며, C ++ 파일의 경우 g++언어를 지정 하려면 프론트 엔드 또는 명령 행 스위치가 필요합니다. 더 중요한 것은 특정 파일의 make사용 gcc또는 g++빌드 여부를 결정 하는 프로그램이며 make규칙 일치를위한 파일 이름 패턴 (대개 확장명)에 전적으로 의존합니다.
벤 Voigt

@BenVoigt .cc확장자가 있는 파일을 컴파일 할 때 gcc실제로는 C ++로 컴파일되며 다음과 같이 문서화됩니다 man gcc. 확장 및 처리 방법.
hvd

1
@hvd 그렇다면 올바른 프론트 엔드를 사용하지 않으면 기본 라이브러리 세트가 잘못 될 수 있습니다. 어쨌든 make는 모든 것이 파일 확장자를 기반으로하기 때문에 가장 좋은 예입니다.
벤 Voigt

1
@BenVoigt make도 좋은 예이지만 gcc파일 이름에 크게 의존합니다. .cvs 보다 명확한 예는 다음과 같습니다 .cc. C의 gcc경우 접미사를 사용하여 첫 번째 단계가 사전 처리 ( .c), 컴파일 ( .i), 어셈블 ( .s) 또는 링크 ( .o)인지를 알 수 있습니다. 자, 내가 사용 -E, -S하고 -c말할 gcc중지 하지만, 어디에 알고 파일 이름을 사용하여 시작합니다 . gcc something.ccC ++에 대한 올바른 라이브러리에 링크되지 않습니다하지만 것이다 많은 사용자가 그런 실수를 할 때 그들이 얻을 오류 메시지에 의해 혼동하는 이유는 C ++과 같은 파일을 취급합니다.
엘리아 케이건

7

첫 번째 가정은 맞습니다. Linux의 확장은 중요하지 않으며 인간 (및 확장에 관심이있는 Unix와 다른 다른 OS)에게만 유용합니다. 파일의 유형은 파일에서 처음 32 비트의 데이터에 의해 결정되는데, 이는 매직 넘버 로 알려져 있습니다. 이것이 쉘 스크립트가 #!운영 체제에 어떤 인터프리터를 호출 할 것인지 알려주기 위해 줄을 써야하는 이유 입니다. 그것없이, 쉘 스크립트는 단지 텍스트 파일입니다.

파일 관리자는 .desktop기본적으로 Window 버전의 단축키와 동일하지만 더 많은 기능을 가진 파일과 같은 일부 파일의 확장자를 알고 싶어 합니다. 그러나 OS에 관한 한, 파일 이름이 아닌 파일에 무엇이 있는지 알아야합니다.


3
이것은 사실이 아닙니다. 특정 확장명을 기대하는 프로그램이 있습니다. 가장 일반적으로 사용되는 예제는 gunzip파일이 호출되지 않은 경우 파일을 압축 해제하지 않는 것 입니다 foo.gz.
terdon

그것은 특정 소프트웨어의 구현입니다. 대부분 유닉스 계열 시스템의 유틸리티는 확장을 기대하지 않습니다.
Sergiy Kolodyazhnyy

7
대부분 은 그렇지 않습니다. 그러나 첫 번째 문장은 결코 사용되지 않으며 인간에게만 중요하다고 주장합니다. 그것은 사실이 아닙니다. gunzip하나의 예이고 eog다른 하나입니다. 또한 많은 도구는 올바른 확장자가 없으면 이름을 자동 완성하지 않습니다. 내가 말하는 것은 "확장은 항상 관련이 없습니다"보다 조금 더 복잡하다는 것입니다.
terdon

1
1 작은 문제 : OP가 운영 체제에 대해 질문했습니다. 'gunzip'및 'eog'는 운영 체제가 아니지만 자체 제한 (gunzip의 경우) 또는 방법 (eog)을 작성하기로 결정했습니다. "마임 유형".
Rinzwind

1
@ Serg 물론, OS를 좁게 정의하고 질문에 대한 간단한 대답을 얻을 수 있습니다. 그러나 사용자가 컴퓨터로 수행하는 대부분의 작업은 제외 된 소프트웨어와 관련이 있기 때문에 특히 유용한 답변은 아닙니다. 이 질문은 "운영 체제"와 "인간 만"대조되는 점에 주목하십시오. 나는 그들이 "커널"을 의미한다고 생각하지 않습니다.
IMSoP

6

댓글 답변에 비해 너무 큽니다.

"확장자"조차 다른 의미를 갖는 경우가 많다는 것을 명심하십시오.

당신의 이야기는 다음에 나오는 3 글자 인 것 같습니다. DOS는 8.3 형식을 정말 대중적으로 만들었으며 Windows는 현재 .3 부분을 사용합니다.

Linux에는 의미가 있지만 실제로 8.3 의미의 확장명이 아닌 .conf 또는 .list 또는 .d 또는 .c와 같은 많은 파일이 있습니다. 예를 들어 Apache는 /etc/apache2/sites-enabled/website.conf에서 구성 지시문을 찾습니다. 시스템은 MIME 형식과 내용 헤더를 사용하고 텍스트 파일인지 확인하지 않는 반면, 기본적으로 Apache는 .conf로 끝나지 않고는로드하지 않습니다.

.c는 또 다른 위대한 것입니다. 그러나 그것은 텍스트 파일이지만 gcc는 main.c가 main.o가되고 마지막으로 main (연결 후)에 의존합니다. 시스템은 언제든지 .c, .o 또는 확장자를 사용하여 내용과 관련하여 의미가 있지만. 의미가 있습니다. main.o와 main을 무시하도록 SCM을 설정했을 것입니다.

요점은 이것입니다 : 확장은 창에서와 같이 사용되지 않습니다. 커널은 이름의 .txt 부분을 제거하기 때문에 .txt 파일을 실행하지 않습니다. 실행 권한이 설정되어 있으면 .txt 파일을 실행하는 것도 매우 기쁩니다. 말하자면, 그들은 의미를 가지고 있으며 많은 것들을 위해 여전히 "컴퓨터 수준"에서 사용됩니다.


1
윈도우도 결합되지 않은 x.3것처럼이 더 이상, 당신이 가지고 더 이상 확장뿐만 아니라 명명 체계 .doxc, .torrent, .part, 등 그것은 단지 많은 파일 형식 및 확장이 이미 나중에 8.3 명명 여전히 일 때 다시 시간에 정의 된 것 형식은 주로 최대 3 글자를 사용하는 규칙을 간단하게 조정했습니다.
바이트 사령관

".conf", ".c"등이 "8.1 의미"와 "다른 의미"가 무엇인지 알 수 없습니다. 파일 확장자의 개념은 간단히 "이름의 일부를 기반으로 파일 유형을 식별하기위한 규칙"으로 표현할 수 있습니다. DOS / Win3.1조차도 올바른 확장자를 요구 하지 않았습니다 (Word 문서 "STUPIDN.AME"를 호출하여 WinWord에서 Ctrl-O로 열 수 있음). 일부 시스템 (예 : Windows,, gzipMakefile 등을 두 번 클릭 )이이 규칙을 사용하여 각 파일에 대한 올바른 조치에 대한 가정을 작성하도록 작성되었을 수 있습니다.
IMSoP

@ByteCommander 사실이지만 확장 프로그램은 여전히 ​​사용되는 앱을 결정합니다. 그것을 반영하기 위해 답변을 편집하는 방법을 잘 모르겠습니다.
coteyr

1
@coteyr 다시, 그것은 모두 "OS"의 의미에 달려 있습니다. 파일 관리자는 확실히 "AME"에 대한 레지스트리 키를 검색하며, "foo.txt의는"텍스트 파일로 말해 것입니다. 그러나 dir명령 프롬프트에서 실행 하면 그런 말이 없습니다. 단순히 상관하지 않습니다. 두 OS 모두에서 파일 실행은 예외입니다. 문제는 이들로 제한하는 경우, 대답은 DOS / Windows가 있다는 것이다 에만 이름을 걱정하고, 유닉스 / 리눅스 에서만 실행 권한과 파일의 첫 번째 바이트에 관심. 그 외에는 항상 따라야 할 규칙을 선택하는 응용 프로그램이 있습니다.
IMSoP

1
@coteyr Windows 3.1 이상에서 * .scr (화면 보호기 바이너리)을 잊어 버렸습니다. 즉, DOS / Windows 시스템에서도 실행 파일을위한 파일 확장자는 여전히 편리합니다. 구체적인 내용은 "운영 체제"라인을 그리는 위치에 따라 크게 달라 지지만 항상 바이너리를 메모리에로드하고 직접 실행하여 OS에 요청하는 작업을 수행 할 수 있습니다. MS-DOS에서 command.com을 살펴보면 EXE COM과 같은 목록이있어 다른 확장 프로그램을 지정하지 않으면 다른 확장명을 찾도록 편집 할 수 있다고 확신합니다. 당신을 염두에 두십시오).
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.