unice에서는 파일 확장자가 필요하지 않지만 내가 본 모든 tar, gzip 또는 bzip 파일은 .tar
, .tar.gz
또는 .tgz
.
특별한 이유가 있나요? 아니면 그냥 관습인가요?
답변1
원래 UNIX 시스템에서는 파일 이름 확장자가 관례였습니다. 이를 통해 사람들은 파일을 열 때 올바른 프로그램을 선택할 수 있습니다. 현대의 관례는 대부분의 상황에서 확장을 사용하는 것입니다.
- 일반 파일에만 확장자가 있고 디렉터리나 장치 이름은 없습니다. 디렉토리나 장치라는 단순한 사실만으로도 파일 유형을 나타내는 데 충분합니다.
- 직접 호출되는 실행 파일에는 확장자가 없습니다. 사용자에게는 실행 가능한 정보만으로 충분하며 커널은 파일 이름에 신경 쓰지 않습니다.
- 모두 대문자로 된 단어로 시작하는 파일은 일반적으로 텍스트 파일입니다(예
README
:TODO
. 때로는 하위 카테고리를 나타내는 추가 섹션이 있는 경우도 있습니다(예INSTALL.linux
: )INSTALL.solaris
. - 이름이 점으로 시작하는 파일은 특정 응용 프로그램에 대한 구성 또는 상태 파일이며 일반적으로 확장자가 없습니다(예
.bashrc
: ,.profile
, ).emacs
. - 몇 가지 전통적인 경우가 있습니다
Makefile
.
(이는 엄격하고 빠른 규칙이 아닌 일반적인 시나리오입니다.)
대부분의 바이너리 파일 형식에는 파일의 속성을 설명하는 일종의 헤더도 포함되어 있으며 일반적으로 파일 형식을 다음으로 식별할 수 있습니다.매직넘버. 이것file
명령은 이 정보를 보고 추측한 내용을 보여줍니다.
파일 확장자가 파일 형식보다 더 많은 정보를 제공하는 경우도 있고 그 반대인 경우도 있습니다. 예를 들어, 많은 파일 형식에는 다음이 포함됩니다.압축아카이브: Java 라이브러리(.jar
), OpenOffice 문서( .odt
, …), Microsoft Office 문서( .docx
, …) 등 또 다른 예는 소스 코드 파일입니다. 확장자는 프로그래밍 언어를 나타내며 컴퓨터가 파일 내용에서 자동으로 추측하기 어렵습니다. 대조적으로, .o
컴파일된 코드 파일 과 같은 일부 확장은 매우 모호합니다 (대상 파일), 그러나 파일 내용을 검사하면 일반적으로 대상 파일이 의도된 시스템 유형과 운영 체제를 쉽게 알 수 있습니다.
이 확장의 한 가지 장점은 파일을 열고 매직 시퀀스를 찾는 것보다 이를 식별하는 것이 훨씬 빠르다는 것입니다. 예를 들어, 셸에서 파일 이름 완성은 거의 항상 이름 기반(주로 확장명)입니다. 큰 디렉터리에 있는 모든 파일을 읽는 데는 시간이 오래 걸릴 수 있지만 파일 이름만 읽는 것만으로도 를 누를 수 있을 만큼 빠르기 때문입니다 Tab.
때로는 두 파일 형식이 거의 동일하지 않은 경우 파일 확장자를 변경하면 파일이 해석되는 방식을 설명할 수 있습니다. 예를 들어, 웹 서버는 전자를 .shtml
다르게 처리할 수 .html
있으며 전자는 다음과 같은 과정을 거칩니다.서버 측 전처리, 후자는 있는 그대로 제공됩니다.
gzip 아카이브의 경우 gzip
이름이 로 끝나고 일부 다른 확장자가 있는 .gz
파일은 다시 압축되지 않습니다 .tgz
. 이렇게 하면 gzip *
압축된 디렉터리의 모든 파일을 실행할 수 있으며 이미 압축된 파일은 수정되지 않습니다.
답변2
그들은 아마 그렇지 않을 것이다필요확장자를 사용하지만 ls
.
답변3
파일 확장자는 기본적으로 시스템 사용자의 규칙입니다. 일부 도구는 파일 확장자를 사용하여 작업을 수행합니다. 예를 들어 Nautilus는 파일 확장자에 따라 다른 아이콘을 표시합니다.
내가 당신에게 이라는 파일을 주면 file
당신은 그 파일을 여는 방법을 모를 수도 있습니다. 하지만 file.tar.gz
or 이라는 파일을 주면 file.tar
빠르고 쉽게 알아낼 수 있습니다.