일반적으로 Unix 및 Linux에서는 파일 이름(일반 파일, 디렉터리, 링크, 장치 파일 등)에 공백을 사용하지 않아야 합니다.
하지만 저는 항상 그렇습니다. 내부 공백이 포함된 파일 이름의 경우
- 노틸러스에서는 공백 문자가 공백으로 표시됩니다.
- Bash 터미널에서는 공백을 나타내는 데 사용하거나
\
파일 이름을 큰따옴표 쌍으로 묶습니다. - 일부 응용 프로그램 파일(Nautilus, OS에서도 이 기능을 수행하는지 확실하지 않음)에서는 파일 이름의 공백이
%20
.
파일 이름에 공백이 실제로 허용되지 않습니까?
파일 이름의 공백을 올바르게 사용하거나 처리하는 방법은 무엇입니까?
답변1
/
NUL 및 NUL을 제외한 모든 문자와 마찬가지로 파일 이름에는 공백이 허용됩니다. 제안아니요공백을 지원하지 않는 소프트웨어에 의해 잘못 해석될 수 있기 때문에 파일 이름에 공백이 사용됩니다. 그러한 소프트웨어에는 결함이 있다고 말할 수 있습니다. 그러나 쉘 스크립트와 같은 프로그래밍 언어를 사용하면 공백이 포함된 파일 이름이 나타날 때 충돌하는 소프트웨어를 작성하기가 너무 쉽고 쉘 스크립트 개발자가 종종 파일 이름을 사용하여 테스트하지 않기 때문에 이러한 오류가 눈에 띄지 않는 경향이 있다고 주장할 수도 있습니다. 쉘 스크립트. 그들을.
%20
파일 이름에서 공백을 바꾸는 경우는 드뭅니다. 이는 주로 (웹) URL에 사용됩니다. URL의 % 인코딩이 파일 이름에 나타나는 경우도 있지만 이는 대개 우연입니다.
답변2
공간예보시다시피 파일 이름에는 .
"대부분의 UNIX 파일 시스템" 항목을 보면이 차트는 Wikipedia에서 가져온 것입니다., 다음 사항을 알 수 있습니다.
모든 8비트 문자 집합이 허용됩니다. 7비트 ASCII는 다양한 8비트 집합의 하위 집합이고 항상 8비트 바이트를 사용하여 구현되므로 이 범위에 포함할 수도 있습니다.
금지되는 유일한 문자는
/
및 "null"입니다. "Null"은 0바이트를 나타내지만 텍스트 데이터에서는 허용되지 않습니다.
하지만, 쉘을 사용해 본 적이 있다면 일부 문자, 특히 *
POSIX 와일드카드가 문제를 일으킬 수 있다는 것을 알고 계실 것입니다.
"문제"를 어떻게 정의하고 싶은지에 따라 다릅니다.할 수 있다필수이므로 공백(공백, 탭, 줄 바꿈 등)이 포함되어 있습니다 ""
. 하지만 공백이 허용되므로 이는 불가피합니다.
파일 이름의 공백을 올바르게 사용하거나 처리하는 방법은 무엇입니까?
셸/명령줄 컨텍스트에서는 파일 이름을 작은따옴표나 큰따옴표로 묶습니다(단,그들은 다르다WRT 기타 문제) 또는 이스케이프된 공백을 사용하십시오 \
. 예를 들면 다음과 같습니다.
> foo my\ file\ with\ spaces\ in\ the\ name
답변3
그 이유는 대체로 역사적입니다. 오래 전에는 파일 이름에 공백이 허용되지 않았기 때문에 공백이 키워드/파일 이름 구분 기호로 사용되었습니다. 미래의 쉘 인터프리터는 이전 스크립트와 역호환되어야 하므로 오늘날의 골치 아픈 문제에 봉착해 있습니다.
사람을 다룰 필요가 없는 프로세스 개발자는 공간을 완전히 제거하여 작업을 훨씬 더 쉽게 만들 수 있습니다. 이것이 Apple이 하는 일입니다. /System/Library/CoreServices/의 내용에는 공백이 거의 포함되어 있지 않습니다. 공백이 있는 프로그램은 사용자를 대신하여 열리며 CamelCased인 경우 이상하게 보일 것입니다. 유사한 UNIX 전용 경로도 공백을 피합니다.
(다소 관련된 일화: 90년대 중반, Windows 드론이 "Windows에서 할 수 없는 일을 Mac에서 할 수 있는 한 가지를 말해주세요." -> "파일 이름에 12자를 사용하세요" 문자를 말하더군요. "-> Silence. Spaces 이 12자 중에도 가능합니다)
답변4
이 질문에 대한 답변을 읽고 이 질문이 Unix 및 Linux에 관한 포럼에서 요청되었다는 점을 고려하면 공백이 있는 파일 이름에 대한 조언은 실제로 Unix 및 Linux 질문에서 나온 것이 아니라 다른 맥락에서 나온 것 같습니다. .
다른 배경의 다른 사람들이 이에 대해 어떻게 생각하는지 알아보려면 다음 중복 질문을 확인하세요.
- 파일 이름에 공백 문자를 사용하지 않는 기술적인 이유는 무엇입니까?슈퍼유저 정보
- 파일 이름에 공백을 사용하지 않아야 합니까?소프트웨어 공학에 대하여
파일 이름에 공백을 피하는 데 다음이 도움이 된다는 것을 알았습니다.
- 파일 이름을 변수에 넣을 때 올바르게 인용해야 합니다.
foo $filename
대신 작성해야 합니다foo "$filename"
. 어떤 경우에는 원시 문자열(예String.raw
: JavaScript) 에 넣어야 할 수도 있습니다. - 공백 뒤에 숫자가 있고 파일이 온라인에서 사용 가능한 경우 인코딩으로 인해 이름이 엉망이 됩니다
image 1.jpg
.image%201.jpg
- 백엔드 프로그래머가 HTTP 코드를 올바르게 처리하지 못하는 경우(아마도 첫 번째 글머리 기호 때문일 것임) 사용자가 를 다운로드하면
Product list.pdf
이름만 얻게 됩니다Product
.