.txt
확장자 없이 텍스트 파일을 읽을 수 있다는 것을 알았습니다 . 어떻게요? 확장자를 포함하거나 포함하지 않고 이러한 파일을 저장해야 합니까 .txt
?
또한 파일은 어떻습니까 .ini
? 나는 보통 다음과 같이 사용합니다: config.ini
, 여기서 확장 프로그램을 제거해야 합니까?
Linux가 파일 확장자를 처리하는 방법에 대한 일반적인 리소스가 유용할 것입니다.
답변1
UNIX/Linux는 Windows의 초기 DOS/CP/M 레거시를 공유하지 않습니다. 따라서 확장은 일반적으로 대부분의 UNIX 유틸리티 및 도구에 중요하지 않습니다.
저는 보통 명령줄 전용 환경을 사용합니다. 이러한 Linux 환경에서의 확장은 운영자나 사용자에게 편의를 제공하는 것 외에는 별로 중요하지 않습니다. (저는 KDE나 GNOME에 대한 경험이 부족하여 파일 관리자가 확장자를 어떻게 처리하는지 알 수 없습니다.)
그러나 이러한 편리함은 종종 중요합니다. 그것이 config.ini
실제로 Microsoft의 표준 ".ini" 형식이라면 확장 프로그램은 그대로 두겠습니다. Linux에서 일반 텍스트 파일에는 일반적으로 확장자가 없지만 모든 프로그램 구성 파일에 적용되는 것은 아닙니다. 일반적으로 프로그래머가 이를 결정할 수 있습니다.
내 생각에는 ".txt"가 Linux에서 구성 파일이나 기타 기계 판독 가능 문서가 아니라는 점을 강조하려는 경우 유용하다고 생각합니다. 그러나 소스 코드 배포에서는 확장자 없이 파일 이름을 모두 대문자로 지정하는 것이 관례입니다(예: README, INSTALL, COPYING 등).
몇 가지 표준과 규칙이 있지만 콘텐츠를 다른 사람과 공유하지 않는 한 원하는 이름을 지정하는 데 방해가 되는 것은 없습니다.
Windows에서 파일 이름을 지정하면 해당 파일이 실행 파일임을 .exe
셸(일반적으로 )에 나타냅니다. explorer.exe
UNIX는 이러한 지식을 파일 시스템의 권한에 반영합니다. 올바른 x
비트가 설정되면(참고자료 참조) 셸 및 커널 기능에 의해 실행 가능한 것으로 인식됩니다(저는 믿습니다). man chmod
그 외에도 Linux는 신경 쓰지 않으며 대부분의 쉘도 마찬가지입니다. 대부분의 프로그램은 파일에서 "유형"을 찾습니다.
물론, file
파일을 분석하여 그것이 무엇인지 어느 정도 알려줄 수 있는 좋은 명령이 있습니다. 나는 파일의 데이터를 알려진 유형과 일치시킬 수 없고 인쇄 가능한 ASCII/유니코드 문자만 포함하는 경우 해당 파일을 텍스트 파일이라고 가정합니다.
아래의 @Bruce Ediger가 절대적으로 옳습니다. 커널이나 파일 시스템 수준(예: Linux 자체)에는 파일의 내용이 파일의 이름이나 파일을 이해해야 하는 프로그램과 일치해야 하는지 강제하거나 관리하는 것이 없습니다. 이는 파일 이름을 기반으로 작업을 수행하는 셸이나 실행 프로그램 유틸리티를 만들 수 없다는 의미는 아닙니다.
답변2
Windows와 달리 UNIX 시스템에서는 파일 유형이 확장자에 의해 결정되지 않습니다. 파일 확장자는 인간의 시각적 표시일 뿐이었습니다. JPEG foo.c의 이름을 지정하고 Gimp에서 열 수 있습니다. Windows와의 또 다른 차이점은 UNIX 시스템에서는 전체 파일 이름을 사용해야 하는 반면 Windows에서는 일반적으로 이를 처리한다는 것입니다(예: explorer
AND 실행 explorer.exe
). UNIX에서는 단순히 가 아니라 foo.sh
로 호출되어야 합니다 .foo.sh
foo
관례적으로 사람들은 공통 확장 세트를 사용하는 경향이 있습니다. 이러한 관행은 불필요하지만 인류 전체에 유익할 수 있습니다.
답변3
전반적으로 엄격하고 설명이 포함된 명명 규칙을 유지하는 것이 매우 도움이 된다고 생각합니다. 유닉스에서는 이 확장이 필요하지 않지만 두 가지 이유 때문에 이를 유지합니다.
1) Windows 컴퓨터에서 파일을 읽으려는 경우 "다음 프로그램으로 열기..."를 찾는 것보다 파일을 여는 것이 더 쉽습니다.
2) 확장자는 사용자가 파일의 목적을 이해하는 데 도움이 될 수 있습니다. 우리 연구실에서는: .txt = text file.sgi = irix 컴파일된 바이너리.linux = linux 컴파일된 바이너리
이전 Unix 시스템(우리는 여전히 IRIX를 사용함)을 사용해야 하는 경우 *nix 시스템에서는 캐리지 리턴이 다르며 Windows 캐리지 리턴 문자를 사용하여 파일을 열려고 하면 프로그램이 이를 인식하지 못할 수 있다는 점을 기억하십시오.
답변4
몇 가지 좋은 답변이 있습니다. 원래 질문의 일부인 "Linux가 파일 확장자를 처리하는 방법에 대한 일반적인 리소스가 도움이 될 것입니다."의 일부에 추가로 답변하고 싶습니다.
Linux가 항상 특정 프로그램으로 특정 확장을 열도록 확장을 등록할 수 있습니다. 이 시설은빈프트.
binfmt_misc는 임의의 실행 파일 형식을 인식하고 에뮬레이터 및 가상 머신과 같은 특정 사용자 공간 애플리케이션에 전달할 수 있도록 하는 Linux 커널의 기능입니다. 실행 파일 형식은 전용 파일 시스템 인터페이스(/proc와 유사)를 통해 등록됩니다. Debian 기반 배포판은 추가 binfmt 지원 패키지를 통해 이 기능을 제공합니다.
각 형식에는 /proc/sys/fs/binfmt_misc 디렉터리에 해당 파일 항목이 있으며, 이 항목을 읽어 특정 파일 형식에 대한 정보를 얻을 수 있습니다.