구분 기호로 이중 점 또는 이중 빼기 기호를 사용하는 것이 좋은 생각입니까? 나는 실험 과학 데이터에 대한 좋은 명명 규칙을 찾으려고 노력하고 있습니다. 예를 들어:
2017-12-11T19-45..JDoe-042..UO2(NO3)2-EtOAc_dist..150.3K..1.234mM.dat
2017-12-11T19-45--JDoe-042--UO2(NO3)2-EtOAc_dist--150.3K--1.234mM.dat
내 이유:
- 플랫폼 간 호환성을 보장하기 위해 적합한 문자는 해당 문자
_
-
.
의 조합뿐입니다. - 내 생각엔 그들 중 누구도 혼자 일하는 사람은 없어:
_
공백을 남겨두십시오. 화학식은 대소문자를 구분하므로 camelCase를 사용할 수 없습니다.-
:
내부 실험실 코드의 일부인 경우가 많으며 시간(수정된 ISO 8601 표기법) 및 비율에 대한 콜론 대신 사용되기도 합니다..
소수점입니다.
- 이들의 조합 중 가장 인기 있는 것은,것 같다, 예
_-_
. 그런데 이게 3글자인데, 이미 파일명이 꽤 길기 때문에(예제에서 볼 수 있듯이) 가능하다면 2글자로 붙이고 싶습니다. - 시각적으로, 그리고 vs 와 vs
__
의 차이점을 빠르게 구별하기는 어렵습니다 ._
--
-
.
..
- 나는 쉼표(의견에서 올바르게 제안된 것처럼 고려해야 할 실행 가능한 문자임)를 포함하지 않았습니다. 왜냐하면 이미 주로 숫자 값에 대해 소수점을 유지하고 있는
,
단일 점과 혼동하기 쉬울 것이라고 생각하기 때문입니다..
.
SE 네트워크의 여러 게시물에 따르면, 예를 들어
- 파일 또는 폴더 이름에 마침표(".")가 유효한 문자입니까?
- 폴더 이름에 점(.)을 포함하는 것은 나쁜 습관인가요? 여러 개의 점이 포함된 파일 이름은 어떻습니까?
- 파일 이름에 마침표가 여러 개 포함되어야 합니까?
--
나는 둘 다 완벽하게 수용 가능 하다고 생각하며 ..
최종 선택을 고려 중입니다 ..
. 그러나 특히 정규식이나 Python 스크립트가 이러한 파일과 폴더를 처리하는 방법에 대해서는 잘 모르겠습니다. 둘 중 하나에 대한 경험이 거의 없지만 배우고 있습니다.
특수 소프트웨어의 동작에 관계없이 이러한 구분 기호가 일반적으로 일반 파일 시스템 및 스크립팅 언어에 안전하다고 생각하십니까?
답변1
그 중 하나Unix/Linux에서 면밀히 조사되고 추측된 디자인 결정사용자에게 유리하게 작동하는 파일 시스템 기능입니다. 다음을 제외한 모든 문자가 파일/디렉토리 이름에 허용됩니다.영점 \0
(ASCII 000) 및줄이다 /
(후자는 파일용으로 예약되어 있습니다.길).
POSIX와 호환되거나 잘 작성된 프로그램과 스크립트는 이러한 관대함을 처리하지만 불행히도 그렇지 않은 예가 셀 수 없이 많습니다. 그러나 점이나 대시가 아닌 매우 구체적인 문자 집합을 뱉어내는 경향이 있습니다. (공백과 개행 문자는 가장 골치 아픈 두 가지입니다.) 실제로 점과 대시는 상당히 광범위하게 사용됩니다. 일반적인 도구, 언어 및 정규 표현식이 이를 잘 처리합니다.
...그러나 한 가지 예외가 있습니다.(물론이죠?) 이렇게 하려는 의도는 전혀 보이지 않습니다. 하지만 주의해야 할 점은 이름 앞에 대시를 사용하지 마세요. 물론 이는 합법적이지만 이러한 이름을 잘못 처리하여 명령줄 옵션/플래그로 해석되는 프로그램이 너무 많습니다. 예를 들어, 한 스크립트가 다음과 같이 파일 이름을 다른 스크립트에 전달하면 다음 some-script --my-dash-first-file ...
과 같은 내용이 표시됩니다 Unknown option '--my-dash-first-file'
.
긴 이야기 짧게당신이 제안한 솔루션은 안전합니다만약에다음과 같은 이름은 사용하지 마세요.시작대시로.
추가 경고: 특히 파일의 기본 이름을 파일의 "확장자"(예: foo.txt
)와 구분하기 위해 점 자체가 일반적이지만 점 쌍은 종종 단독으로 나타나며 특별한 의미를 갖습니다. 현재 상위 디렉터리 디렉터리( ..
) 또는 /foo/bar/../baz
path()의 이전 디렉토리. 따라서 기술적인 문제는 발생하지 않지만 이름에 있는 이중 점은 약간 독특하여 일부 사용자가 주저하게 만들 수 있습니다.