Bash에서 사용할 때는 파일 이름에 "?"와 같은 문자를 사용하지 않는 것이 가장 좋습니다.

Bash에서 사용할 때는 파일 이름에 "?"와 같은 문자를 사용하지 않는 것이 가장 좋습니다.
  1. 예를 들어:

    $ ls -l
    total 344
    -r-------- 1 t t 145657 Mar 11 01:53 joeltest-slides.pdf
    -rw-rw-r-- 1 t t 166814 Mar 11 01:55 The Joel Test: 12 Steps to Better Code? by Joel Spolsky.pdf
    drwx-w--w- 2 t t   4096 Sep 19  2012 The Joel Test 12 Steps to Better Code_files
    -rw--w--w- 1 t t  31940 Feb 12  2011 The Joel Test 12 Steps to Better Code.html
    $ mv The\ Joel\ Test\:\ 12\ Steps\ to\ Better\ Code{                                                                                                                 
    \ by\ Joel\ Spolsky.pdf,.pdf}
    mv: missing destination file operand after ‘The Joel Test: 12 Steps to Better Code{’
    Try 'mv --help' for more information.
    

    무슨 뜻이에요 missing destination file operand? ? 파일명 때문인가요 ?

  2. Bash에서 내장 또는 외부 명령을 통해 파일 작업을 수행할 때 파일 이름을 지정할 때 어떤 문자를 피하는 것이 가장 좋습니까? 예를 들어,

    ?위의 예는 그것이 그 중 하나임을 암시합니까 ?

    하다내 이전 게시물개행 문자가 그 중 하나라는 것을 암시합니까?

    하다내 이전 우편공백이 그 중 하나라는 것을 암시합니까?

  3. Linux 관점에서 파일 이름에 사용할 수 있는 문자에 제한이 없다는 것이 맞습니까? 파일 시스템 유형(ext4)의 관점에서도 마찬가지입니까?

답변1

절대적인 규칙은 /파일 이름에 슬래시나 null 바이트를 사용할 수 없다는 것입니다. 슬래시는 디렉터리 구분 기호이므로 이스케이프할 수 없습니다. 널 바이트는 이름의 끝을 나타내며 이스케이프될 수 없습니다. 그렇지 않으면 Linux에서는 모든 문자가 허용되지만(다른 파일 시스템과 공유되는 미디어 또는 네트워크 리소스에 액세스하는 경우 제외) 여러 문자가 문제를 일으킬 수 있습니다. 내 생각에 모든 최신 *BSD는 /널 바이트를 제외한 모든 문자를 허용 하지만 일부 오래된 유니스는 더 많은 제한을 가지고 있습니다.

파일 이름이 인용 없이 범용 쉘에서 작동하도록 하려면 !"#$&'()*;<=>?[\]^`{|}~공백(공백, 탭, 줄 바꿈)을 피해야 합니다. ~마지막이었다면 괜찮았을 텐데. 특히 bash에서는 ^괜찮습니다. 시작 부분을 제외한 모든 곳에서 괜찮고, #명령 이름을 제외하고는 괜찮습니다(할당으로 해석되므로).~=

그 외에도 중요도에 따라 정렬된 몇 가지 파일 이름 이식성 제안이 있습니다.

  • 파일 이름은 -(대시/하이픈)으로 시작하면 안 됩니다. 명령은 이를 옵션으로 해석할 수 있습니다.
  • ~많은 응용 프로그램에서 "홈 디렉토리"를 의미하므로 이니셜(물결표)을 사용하지 마십시오 .
  • 더 일반적으로는 구두점으로 시작하거나 끝나지 않는 것이 좋습니다. 많은 응용 프로그램이 이러한 기호에 특별한 의미를 할당하기 때문입니다(예: 출력 의 경우에도 "파일에 쓰기" 대신 " |foo프로그램을 통한 파이프"를 의미함 ).foo|foofoo|
  • Windows 사용자와 파일을 교환하거나 이동식 미디어에 파일을 저장하는 경우 Windows에서 지원하지 않는 문자를 사용하지 마십시오.\/?:*"><|
  • 인쇄할 수 없는 문자(예: 제어 문자), 탭 또는 개행 문자를 사용하지 마십시오. 많은 인터페이스에서는 입력할 수도 없습니다.
  • 잘못 작성된 일부 쉘 스크립트는초크공간적으로 그리고 \*?[]그들은 있기 때문에와일드카드. 또한 여러 파일에서 작동하는 일부 응용 프로그램은 이러한 문자를 와일드카드로 동시에 해석합니다.
  • 오래된 컴퓨터나 다른 언어, 특히 라틴 알파벳이 아닌 언어를 사용하는 사람과 파일을 교환하는 경우 다른 문자 인코딩을 사용할 수 있습니다. 이것ASCII 코드문자는 어디에서나 사용할 수 있으며 동일한 방식으로 인코딩됩니다.
  • 많은 응용 프로그램이 사용파일 확장자, 지원하는 파일과 파일을 여는 방법을 알아보세요. 또한 시스템은 확장자를 사용하여 파일을 여는 데 사용할 응용 프로그램을 결정합니다. 그러므로 확장을 그대로 유지하시기 바랍니다. 확장자는 마지막 점 뒤의 부분입니다. txt예를 들어 압축된( ) 텍스트( ) 파일 myfile.txt과 같이 확장자가 여러 개 있는 경우도 있습니다 .myfile.txt.gz.gz.txt
  • .로 시작하는 파일 이름은 다음과 같습니다.기본적으로 숨겨짐명령의 출력 ls과 많은 파일 브라우저에서.
  • Unix는 대소문자를 구분합니다. 전통적 myfile으로 Myfile파일 이름은 입력하기 쉽기 때문에 소문자였습니다. 과거에는 시스템에서 소문자보다 대문자의 순위를 매기는 경우가 많았으므로 파일 이름을 대문자로 시작하여 디렉터리 목록에서 먼저 표시하는 전통이 있었지만 최신 시스템에서는 대소문자를 구분하지 않고 이름의 순위를 매기는 경우가 많습니다. 소문자를 사용하면 복잡해지지 않고 입력이 쉬워집니다.

이러한 모든 복잡한 문제를 기억하고 싶지 않다면 다음 두 가지 간단한 규칙을 따르십시오.

  • a최대 보안: 문자 와 z숫자 0, 분리된 단어를 사용 9하고 파일 이름 끝에 넣으세요. 예를 들어:-.extensionmy-file.txt
  • 읽기 쉽도록: 파일 이름 끝에 영어 문자와 숫자 또는 사용자 고유의 스크립트를 사용하고 공백이나 -구분된 단어를 추가합니다. .extension예를 들어:Jörgs Datei.txt

최종 팁: 날짜의 경우 YYYYMMDD 형식(연-월-일, 4자리 연도, 앞에 0이 붙은 월 및 일 숫자)을 사용하세요 20150622-report.txt. 이렇게 하면 파일 이름을 정렬하면 시간순으로 정렬됩니다.

관련 정보