Unix 파일 명명 규칙 [닫기]

Unix 파일 명명 규칙 [닫기]

Unix에서 파일의 명명 규칙이 무엇인지 알고 싶습니다. 확실하지는 않지만 따라야 할 공통 명명 규칙이 있는 것 같습니다.

예를 들어 파일 이름을 다음 과 backup같이 지정하고 싶습니다.part 2random

나는 이렇게 해야 한다:

backup_part2_random

또는

backup-part2-random

또는

backup.part2.random

질문이 명확해지기를 바랍니다. 기본적으로 저는 Unix 철학을 고수하는 형식을 선택하고 싶습니다.

답변1

..foo.txt

-or는 or _와 같은 논리적 단어를 구분하는 데 사용됩니다 . Shift 키를 누를 필요가 없기 때문에 더 좋고(적어도 표준 미국 영어 PC 키보드에서는) 다른 사람들은 공백처럼 보이기 때문에 선호합니다.my-big-file.txtmy_big_file.txt-_

따라서 귀하의 예를 이해하면 일반적인 Unix 규칙에 가장 가깝습니다 backup-part2-random.backup_part2_random


CamelCase는 일반적으로 Linux/Unix 시스템에서 사용되지 않습니다. /bin및 에서 파일 이름을 확인하세요 /usr/bin. CamelCase는 Unix 및 Linux 시스템의 규칙이 아닌 예외입니다.

( NetworkManager이것은 내가 CamelCase를 사용하여 생각할 수 있는 유일한 예이며 Mac 개발자가 작성한 것입니다. 많은 사람들이 이러한 이름 선택에 대해 불평했습니다. Ubuntu에서는 실제로 스크립트 이름을 network-manager.

예를 들어 /usr/bin내 시스템에서는 다음과 같습니다.

$ ls -d [A-Z]* | wc -w    # files starting with a capital
6
$ ls -d *_* | wc -w       # files containing an underscore
178
$ ls -d *-* | wc -w       # files containing a minus/dash
409

그럼에도 불구하고 대문자로 시작하는 모든 파일은 CamelCase를 사용하지 않습니다.

$ ls -d [A-Z]*
GET  HEAD  POST  X11  Xvnc  Xvnc4

답변2

멀리더 중요한 것은 특정 규칙이 일관되게 유지된다는 것입니다. 스타일을 선택하고 고수하세요.

답변3

Unix/Linux 파일 이름 규칙에 대한 내 생각:

  • Unix/Linux 파일 시스템은 본질적으로 확장 개념을 지원하지 않습니다. 파일 확장자의 개념 은 전적으로 유틸리티(예: 또는 사용 중인 셸)에서 지원되는 것으로 cp존재합니다 ls. NTFS에서도 마찬가지라고 생각하지만 제가 틀렸을 수도 있습니다.

  • 실행 파일(셸 스크립트 포함)에는 일반적으로 어떤 종류의 확장자도 없습니다. 스크립트에는 #!/bin/bash스크립트를 해석해야 하는 프로그램을 식별하기 위한 해시뱅 라인(예: )이 있습니다.

  • 두 글자 길이의 실행 파일은 매우 중요합니다. 따라서 실행 파일 이름을 두 글자로 된 파일 이름으로 지정하지 마십시오. 또한 모든 파일 은 , , 와 같이 /etc로 끝나는 것이 tab중요합니다 .fstabmtabinittab
  • 때로는 .d특히 에서 디렉토리 이름에 추가되지만 /etc이는 보편적이지 않습니다(업데이트:https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux)
  • rc구성 스크립트 또는 파일에 널리 사용되며 접두사(예: rc.local) 또는 접미사( .vimrc) 가 붙습니다.
  • Unix/Linux 커뮤니티는 확장에 대해 3자 제한을 두지 않았으며 잘 알려진 확장을 적절하게 단축할 때 눈살을 찌푸렸습니다. 예를 들어 .htmUnix/Linux에서는 HTML 파일 끝에 를 사용하는 대신 .html.
  • 파일 그룹 내에서 파일 이름은 때때로 또는 모두 대문자이므로 디렉터리 목록의 시작 부분에 나타납니다. 고전적인 예제는 Makefile소스 패키지에 있습니다. 다음과 같은 경우에만 이 작업을 수행하세요 README.
  • ~important_stuff~또는 같은 백업 파일이나 디렉터리를 식별하는 데 사용됩니다 /etc~. 많은 쉘이 개별적 ~으로 $HOME.
  • lib라이브러리 파일 은 zlib거의 항상 .
  • inetd에 의해 호출되는 스크립트에는 때때로 선행 태그가 있습니다 in.(예: ) in.tftpd.
  • 끝에 있는 z는 vmlinuz압축을 의미하지만 이런 이름의 다른 파일은 본 적이 없습니다.

답변4

파일 이름이 이름과 확장자로 구성되는 DOS와 달리 유닉스에서 파일 이름은 단지 문자열입니다. 따라서 주어진 파일 이름은 완벽하게 허용됩니다.

그러나 많은 프로그램은 다양한 파일 유형을 구별하기 위해 여전히 점으로 시작하는 파일 접미사를 사용합니다. 즉, Apache 웹 서버는 접미사를 사용하여 응답 헤더에 올바른 MIME 유형을 설정합니다.

관련 정보