파일 이름에 대문자를 사용하지 않는 것이 모범 사례로 간주됩니까?


28

사람들은 유닉스 파일 이름에 공백을 사용해서는 안된다고 말합니다. 파일 이름에 대문자를 사용하지 않는 좋은 이유가 있습니까 (예 : File_Name.txtvs. file_name.txt)? 아니면 이것은 개인적인 취향의 문제입니까?


캡을 사용할 수 있지만 표준으로는 사용하지 않습니다. 작은 글자와 _를 사용하면 file_name.txt가 좋습니다.
Shabir A.

9
대문자와 함께 파일 이름을 사용하는 Unixy 항목이 있습니다. 예를 들어 Makefile, INSTALL, CHANGELOG 및 훌륭한 README가 있습니다.
토마스

PSR-2-PHP 세계의 사실상의 이름 지정 표준. Linux에서 대부분 실행되는 camelCase php-fig.org/psr/psr-2
jdog

답변:


46

사람들은 유닉스 파일 이름에 공백을두면 안된다고 말합니다.

사람들은 많은 것을 말합니다. 문제가 될 수있는 몇 가지 도구가 있지만, 현재로서는 공간이 소수의 독점 독점 OS 회사에 의해 확산되는 바이러스이기 때문에 피할 수 없기 때문에 현재로서는 그 수가 적습니다.

공백은 명령 행 등에서 파일 이름을 지정하기 어색합니다. 그게 다야. * nix 시스템에서 유일하게 금지 된 문자는 NUL (키보드 나 다른 사람이 아니라고 걱정하지 마십시오)이며 /경로 구분 기호이므로. 1 그 외에는 아무 것도 없습니다. 개별 경로 요소 (파일 이름)는 255 바이트 (확장 문자 세트를 사용하는 경우 가능한 합병증 )로 제한되며 4KiB 까지의 전체 경로입니다.

아니면 이것은 단지 개인적인 취향의 문제입니까?

나는 그것을 말할 것입니다. 대부분의 드의 당신은에 대문자 디렉토리의 회전을 만들 것 같다 $HOME( Downloads, Desktop, Documents- (가) D너무 그것에 대해 이상한 아무것도, 매우 인기가있다). 같은 그들의 수도, 매우 평범한 기존의 파일도있다 .Xclients하고 .Xauthority.

처음에 물건을 자본화하는 것의 가치는 사전 식으로 표시 될 때 최소한 많은 도구와 로케일에 따라 소문자보다 우선한다는 것입니다.

나는 낙타 사건 (일명 낙타 케이스)의 팬이며 파일 이름과 함께 사용합니다 /home/goldilocks/blueSuedeShoes. 분명히 개인적 취향의 문제이지만 아직 슬픔을 일으키지 않았습니다.

Java 클래스 파일은 기본적으로 대문자를 포함하는 경향이 있습니다. Java 클래스 이름이 그러하기 때문입니다. 물론, NetworkManager우리 중 일부는 선호하더라도 잊지 말자 .


1. 훨씬 더 POSIX 추천, 구분이있다 "휴대용 파일 이름 문자 집합" 하지 않는 공간을 포함 - 그러나이 포함되어 있습니까 대문자가! POSIX 는 또한 같은 문서의 다른 곳에서 "슬래시 문자 및 널 바이트"에 관한보다 일반적인 제한 사항을 지정합니다 . 이것은 오랜 전통 관행을 반영하거나 반영 합니다 .


5
Mia : "그게 사실입니까?" 빈센트 : "아니요. 제가들은 내용이 아닙니다." Mia : "누가 이걸 말 했니?" 빈센트 : "그들." Mia : "그들은 말을 많이하지 않습니까?" 빈센트 : "그렇습니다."
corsiKa

4
" 처음에 무언가를 대문자로 사용하는 것의 가치 는 사전에 […]로 나열 될 때 다른 모든 것보다 우선한다는 것입니다."— 물론 대부분 의 파일 이름이 소문자 인 경우에만 작동 하므로 한도 를 예약 할 이유가 있습니다 ( s 및 s 등을 위한 최소 선행 캡) . READMEMakefile
Blacklight Shining

4
많은 키보드에서 ctrl-space 또는 ctrl- @ 또는 alt-0은 NUL을 입력합니다.
dubiousjim

2
@ dodgethesteamroller ext *에서 슬래시 (또는 더 정확하게 는 값이 0x2F 인 바이트 )에 대해 잘못 알고 있다고 생각합니다 . 사실, 나는 그것이 파일 시스템에 도달 할 것이라고 믿지 않는다. VFS 계층은 백업 저장소에 관계없이 허용하지 않습니다.
zwol

3
파일 이름과 디렉토리 이름에 공백을 사용하지 마십시오. 시스템이 기술적으로 허용하더라도 슬픔을 유발할뿐입니다. 대신 밑줄 문자 "_"를 사용하십시오.
SnakeDoc

9

파일 이름에서 대문자를 피하는 한 가지 이유는 Unix에서 정렬 순서가 대소 문자를 구분하므로 대문자로 시작하는 파일이 순서대로 나타나지 않기 때문입니다. 이것이 Makefile보통 대문자를 사용하여 이름이 붙여 지는 이유 입니다. M스크롤을 건너 뛰거나 스크롤하지 않고 가장 먼저보고 싶은 파일 중 하나입니다 a-l.

이것은 파일 이름 측면에서 훨씬 나빠질 수 있다고 말했습니다.

  • 공백을 사용하면 파일 이름을 올바르게 인용하지 않는 잘못 작성된 프로그램 및 스크립트가 손상됩니다.
  • 기호가있는 파일 이름을 시작하는 -많은 프로그램이 명령 줄 옵션 대신에 파일 이름 (예 :로 표시됩니다으로 문제가 발생할 수 있습니다 rm -r라는 이름의 파일을 제거하지 않습니다 -r).
  • 로 파일 이름을 시작하면 .많은 유틸리티와 셸 글 로빙에서 숨겨집니다 (예 : rm *와 같은 파일은 제거되지 않습니다 .config)
  • 특수 문자와 같은 |<>*?인쇄 할 수없는 문자와 같은 특수 문자를 사용하는 newline것은 기술적으로 가능하지만 공백 문자와 유사한 스크립트 / 프로그램을 중단 할 수 있습니다. 차이점은 공백 문자가 자주 사용되므로 프로그래머가 프로그램을 테스트하는 경향이 있지만 덜 인기있는 문자는 테스트되지 않은 상태입니다.

4
이것은 더 이상 사실이 아닌 현대 로케일에서의 정렬이 요즘 대소 문자를 구분하지 않는 경향이 있으며 많은 도구와 쉘 글 로빙은 파일 이름을 정렬하는 로케일을 존중합니다.
Stéphane Chazelas

2
당신은 rm *같은 파일을 제거하지 .config않겠습니까?
와일드 카드

1
@Wildcard는 실제로는 아니지만 아마도 귀하의 예는 내 것보다 더 현실적입니다. 내 요점은 점으로 시작하는 파일 이름이 사용자가 해당 점을 명시 적으로 지정하더라도 글 로빙에 영향을 미치지 않는다는 것을 보여주었습니다.
Dmitry Grigoryev

1
@DmitryGrigoryev, 아닙니다. 도트 파일이있는 디렉토리에서 ls -ald. ?? *를 시도하십시오.
Bill Barth

1
"파일 이름에 대문자를 사용하기로 선택한 경우 Unix의 정렬 순서는 대소 문자를 구분한다는 사실을 명심해야합니다." 사용자는이 동작을 원할 수 있으며 Makefile그에 README대한 완벽한 예입니다. 문자가 이름의 첫 번째 문자가 아닌 경우이 효과는 무시할 수 있으므로 camelCase를 사용하면 큰 영향을 미치지 않습니다. 물론, 당신은 anOctagon전에 보기에 놀랐을 수도 angle있지만 적어도 그들은 목록에 함께있을 것입니다.
G-Man, 'Reinstate

6

Windows 환경과 인터페이스하려면 Windows가 모든 것을 소문자로 사용하므로 대문자를 사용하지 않아야합니다. 이것은 종종 다른 방향으로가는 문제입니다. 링크 는 Windows에서 Page_2.html찾을 수 page_2.html있지만 Unix에서는 실패합니다.


10
그건 사실이 아니야. NTFS, VFAT 및 exFAT는 모두 대소 문자를 구분하지 않지만 대소 문자를 유지하므로 검색 목적으로 대소 문자를 무시 하지만 대소 문자를 저장 합니다. OSX의 기본 파일 시스템 인 HFS +에도 동일하게 적용됩니다. NTFS에는 POSIX 네임 스페이스가 있어 다른 모든 Unices와 정확히 동일 하게 작동 합니다 . 즉 해석되지 않은 옥텟의 매우 긴 파일 이름 만 NUL있고 /금지됩니다.
Jörg W Mittag

5
요컨대 "대소 문자를 구분하지 않지만 대소 문자를 보존하는 방법"은 "파일 A와 이름이 다르기 때문에 파일 A를 자동으로 덮어 쓸 수 있음"(또는 나중에 저장된 파일에 따라 그 반대)을 말하는 또 다른 방법입니다. 다시 말해, * nix 쉘을 사용하여 NTFS 공유에 액세스하는 경우 cat > Foofile을 덮어 씁니다 foo. ext *와 같이 대소 문자를 구분 하고 대소 문자를 구분하는 파일 시스템에 익숙한 경우이 동작이 예상치 못하게 혼동 될 수 있습니다 .
dodgethesteamroller

1
내가 틀리지 않는 @ JörgWMittag는 NTFS는 없습니다 그것은 단지의 대소 문자를 구분하지 신비한 방법으로 윈도우 작품.
Cthulhu

1
@Cthulhu : AFAIK, NTFS에는 파일 이름을 만들 수있는 네 가지 네임 스페이스가 있습니다. (단 하나의 파일이 하나 이상의 네임 스페이스에 이름을 가질 수 있는지는 알 수 없습니다.) "DOS"네임 스페이스 (8.3, 대소 문자 구분), "긴"네임 스페이스 (대소 문자 구분, 대소 문자 구분, UTF-16), "짧은 긴"이름의 특수 네임 스페이스 (예 : 대소 문자를 유지해야하지만 8.3과 일치하는 이름) 및 POSIX 네임 스페이스 ( \0/대소 문자를 구분하지 않는 옥텟 스트림 ). 적어도 그것이 내가 그것을 기억하는 방법입니다. 그러나 나는 그것이 엉망이라는 것에 동의합니다. …
Jörg W Mittag

1
… 커널 및 API의 추가 제한 사항 (실제로 다른 제한과 다른 시대의 다른 API가 있음), DOS 및 FAT와의 호환성으로 인한 제한이 있으며 명령 인터프리터에 제한이 있습니다. 그래픽) 셸을 사용하며 탐색기에 제한이 있습니다. 그리고 제한이 어디에서 왔는지 확실하게 결정 하는 것은 종종 불가능합니다 . 미쳤어 한 번 탐색기 를 사용하여 파일을 만들 수 있었는데 시도한 도구를 사용하여 열거 나 복사하거나 이동하거나 이름을 바꾸거나 삭제할 수 없었습니다. 그것은 기본적으로 ...
Jörg W Mittag

4

한도를 피하는 한 가지 이유는 bash탭 완성이 대소 문자를 구분하기 때문입니다 (적어도 기본적으로) . 이것은 기본 구성으로 끝날 때마다 여전히 저를 트립 bash합니다. 물론 다른 인기있는 쉘이 있지만 이것은 bash많은 OS에서 기본 로그인 쉘 이라는 사실과 결합 하여 기본값이 대소 문자를 구분하는 경우가 종종 있음을 의미합니다. 소문자로 된 파일 이름을 사용하면 여기서 단순화합니다.


2
echo set completion-ignore-case On >> ~/.inputrc적어도 자신의 시스템에서 조금 도움이 될 수 있습니다.
wchargin

1
이 답변의 요점이 무엇인지는 확실하지 않습니다. 파일 이름을 "맞춤법"으로 잊어 버린 것이 아니라면 말입니다. 예를 들어, 명명 된 파일 Foo형식과 이후 유형 cat f(Tab)을 작성하면 실패합니다. 그러나 입력 한 경우에도 마찬가지입니다 cat foo. cat Foobar또는 cat Fu이름이 올바르게 기억되지 않는 파일에 액세스하는 데 문제가 있다는 사실은 실제로 자동 완성과 관련이 없습니다.
G-Man, 'Reinstate

@ G-Man Touché. 여전히 소문자로 된 파일 이름을 사용한다는 것은 기억해야 할 것이 하나도 없다는 것을 의미합니다.
Blacklight Shining

3

NL_Derek은이 웜 캔을 열 었으나 올바르게 설명하지 않았으므로 다음과 같이 말할 것입니다.

그것은 사용 대문자로 OK,하지만 당신은 (같은 디렉토리에) 파일을 생성하지 않도록해야 다른 유일한 경우로 예를, File_Name.txt 하고 file_name.txt 있기 때문에,

  • 어떻게 든 Windows 시스템에서 디렉토리를 사용할 수있게하면 두 파일 모두에 액세스 할 수 없습니다. 사용하는 이름에 관계없이 디렉토리에서 처음 나타나는 항목에만 액세스 할 수 있습니다. (단 FILENA~1.TXT, 이름과 이름을 FILENA~2.TXT 입력 dir /x하면 긴 이름과 함께 사용되는 짧은 이름을 볼 수 있습니다.)
  • 파일 시스템이 실제로 Windows 파일 시스템 인 경우 (예 : Windows를 실행하는 NFS 서버에서 exFAT 또는 NTFS 파일 시스템에서 마운트 된 경우) 두 이름이 공존 할 수 없습니다. 예를 들어, 당신이 할 경우 와 , 당신의 출력을 포함하는 하나의 파일로 끝낼 수 있습니다 .cmd1 > foocmd2 > Foocmd2
  • 마찬가지로, 파일을 Windows 시스템 으로 전송 한 경우 두 이름이 공존 할 수 없습니다. 예를 들어, 두 파일을 포함하는 아카이브 (예 : zip)를 작성하고 Windows 시스템에서 추출한 경우 두 번째 파일이 첫 번째 파일을 겹쳐 쓰게됩니다. FTP 또는 이와 유사한 것을 사용하여 Windows 상자로 전송 한 경우에도 마찬가지입니다.

Windows뿐만 아니라 다른 여러 OS (VMS, CP / M, 기타 등등 ...)
Toby Speight

3

기술적 인 이유와는 별도로, 나는 이것에 대한 실용적인 측면을 가지고 있습니다. grep -i를 사용하거나 -i를 찾는 것을 너무 좋아하지 않는 한 소문자를 고수하면보다 쉽게 ​​검색 할 수 있습니다. 때로는 스토리지 NYCDCPrimary에서와 같이 대소 문자를 사용해야하는 경우 낙타 케이스조차 혼란 스러울 수 있습니다. 따라서 storage_nyc_dc_primary와 같이 가독성을 높이기 위해 소문자를 붙이고 밑줄이나 하이픈을 사용하는 것이 가장 좋습니다.


snake_case는 눈에 쉽게 - storageNycDcPrimary그리고 StorageNycDcPrimary모두 읽을 이상입니다.
go2null

1

나는 할 생각 이 가장 좋습니다수도 사용하지 않는 파일 이름에 공백을.

어떤 사람들은 그들이 동의하지 않는다고 말하지만 그것은 내가 종교적 신념 이라고 부르는 문제입니다 : 토론하고 동의하기가 어렵습니다. 동의하지 않는 사람들은 대부분의 도구가 이제 수도와 공간 친화적으로 고정되어 있다고 말합니다. 그러나 옳지 만 이것은 문제가 아닙니다.

올바른 질문은 파일 이름에 대문자 와 공백 을 얼마나 사용해야하는지 입니다. Java로 프로그래밍 할 때를 제외 하고는이 질문에 대한 대답은 대부분 항상 입니다. 내 파일 이름에 대문자와 공백이 필요하지 않습니다 . 모든 공백은 밑줄 ( _) 또는 빼기 부호 ( -)로 대체되며 다른 종교와는 달리 낙타 경우 (일명 낙타 케이스)를 사용하지 않습니다.

많은 사람들이 저에게 헛소리라고 불렀습니다. 그들 중 일부는 여전히 그렇습니다. 그들 중 일부는 자본 / 공간 친화적이지 않은 도구로 넘어져서 제가 옳았다는 말을 들었습니다. 원하는대로 하십시오. 파일 이름에 대문자와 공백을 사용하면 잘못 작성된 도구를 사용하지 않기를 바랍니다. 그러나 그러한 도구를 사용하는 경우 다시 한 번 고치기가 어렵고 비즈니스 비용 및 / 또는 많은 비용 및 / 또는 시간이 들지 않습니다. 그러나 나쁜 영향을 미쳤다면 일부는 파일 이름에 대문자와 공백을 사용하는 것이 나쁜 습관이라고 과거에 말한 것을 기억할 것입니다.

그리고 마지막 한가지, 당신이 모든 문제를 방지하려면 , 어떤 특수 문자를 파일 이름에이 (경우에만 문자, 숫자, 밑줄 및 적자를 낮출 수 없음 [1]). 이 원치 않는 문자 목록에는 모든 비 ASCII 문자 (예, 프랑스어 및 영어가 아닌 다른 영어 사용자도 포함)가 포함됩니다. 나는 그 중 하나가 아닙니다 : à, â, ä, ç, é, ..., ö, æ, œ ...). 이것은 또한 loginpassword를 포함한 다른 많은 것들로 확장됩니다 . 확인 된 sysadmin이 작성하지 않은 bash 스크립트로 처리되는 로그인 또는 암호에 따옴표 또는 큰 따옴표 ( '또는 ") 를 넣을 때 어떤 일이 발생하는지 짐작할 수 있습니다 ....

[1] : 어쩌면 우리는에 있음을 확장 할 수있다 ~, @, #(... 그래 내가 이맥스 파일에 대해 알고) 및 일부 다른,하지만이 문제를 찾고 있습니다.


1
마지막은 인증 시스템에서 처리해야하는 것이지 암호를 사용하는 사용자가 아닙니다. 시스템이 암호에 허용되는 문자 세트를 제한하면 시스템이 잘못됩니다.
Blacklight Shining

글쎄, 암호의 문자 제한은 토론의 주제입니다 : li1, oO0, ... 좋아하는 것에 따라 의사 소통하기가 어렵습니다. 어떤 사람들은 암호를 전달해서는 안된다고 말하지만, WiFi 키는 친구가 내 자리에있을 때 친구와 통신하는 일종의 암호입니다.
jfg956

즉에 대한 의식적인 선택입니다 당신의 일부 문자, 제한이 내장보다는 사용하지 않도록하는 일부 시스템 (이 예에서는 와이파이 표준, AP 및 클라이언트 구현 등). 무작위로 선택된 문자열을 암호로 사용하는 경우 모노 스페이스 글꼴을 사용 (또는 수신자에게 사용하도록 권장)하거나 필기 문자를 사용하는 경우 더 독특한 글리프를 사용하여 가독성을 향상시킬 수 있습니다 (소문자로 구분) L, 대문자 I 및 ​​숫자 1; 작은 소문자 O, 둥근 대문자 O, 슬래시 또는 점으로 구분 된 숫자 0 등). 또는 암호를 사용할 수 있습니다.
Blacklight Shining
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.