bash에 공백이 포함 된 이름을 가진 디렉토리로 cd하는 방법은 무엇입니까?


84

나는 시도했다 cd "~/Library/Application Support/" -bash: cd: ~/Library/Application Support/: No such file or directory

또한 cd ~/Library/Application Support/ -bash: cd: ~/Library/Application Support/: No such file or directory

답변:


113

당신은 사용할 수 있습니다 Tab당신이 유형은 예이 다음 폴더의 나머지 부분 "에 기입"것이다 (처음 몇 글자를 누른 후 키를 cd ~/LTab채우고 cd ~/Library/다음을 입력 ApTab하고 당신을 위해 나머지를 입력합니다.

단어 사이에 공백이 있고 위의 방법을 사용하지 않으려면 \공백 앞에 (백 슬래시)를 넣으십시오 (예 :) cd ~/Library/Application\ Support.


경로는 대소 문자를 구분합니까? cd ~ / library를 사용하여 라이브러리에 액세스 할 수 있지만 대소 문자가 잘못되면 탭 방법이 작동하지 않습니다.
colinfang

@colinfang OS X는 대소 문자를 구분하지 않지만 대소 문자를 유지합니다. bash 쉘은 자동 완성과 관련하여 조금 더 차별적이어야합니다.
NReilingh

@NReilingh-아하, thx.
colinfang

1
@colinfang : 당신은 사용할 수 있습니다 shopt -s nocaseglobbind 'set completion-ignore-case on'만들기 위해 bash는이 경우에 덜 민감.
크리스 존슨

2
colinfang-bash 호환으로 대소 문자를 구분하지 않고 완료하려면 'zsh'를 시도하십시오. 또한이 쉘의 와일드 카드 완성은 매우 좋습니다.
Ɱark Ƭ

27

여기서 핵심 문제는 쉘 ( bash )이 인용하는 방식과 이것이 틸드 확장에 영향을 미치고 "단어"(프로그램 실행에 대한 인수)로 분할하는 방법에 있습니다.

bash 는 인용 된 틸드를 인용하지 않은 경우에만 처리합니다. 또한 다음 슬래시도 인용해서는 안됩니다.

동시에 bash 는 인용되지 않은 공백을 기준으로 명령 행을 "단어"로 구문 분석합니다. 이 cd명령에는 일반적으로 정확히 하나의 인수 (대상 디렉토리)가 필요합니다. 같은 명령 줄 cd foo bar수단을 실행하는 cd두 개의 인수 : foobar. 단일 foo bar인수 만 보내 려면 공백을 인용해야합니다
(예 : cd foo\ bar아래 인용 예제 참조).

특정 상황에서는 디렉토리 이름에 공백을 인용하면서 물결표와 다음 슬래시를 인용 부호로 남겨 두어야합니다. 당신의 cd "~/Library/Application Support/"당신의 동안 재판, (물결표와 슬래시) 너무 많이 인용 끝 cd ~/Library/Application Support/재판이 (가 디렉토리 이름에 공백을 인용하는 것을 생략) 너무 적게 인용.

가장 일반적인 해결책은 단일 문자 이스케이프를 사용하여 공백 만 인용하는 것입니다.

    cd ~/Library/Application\ Support

공백이나 공백 및 해당 인수의 일부 다른 비트 주위에 작은 따옴표 나 큰 따옴표를 사용할 수도 있습니다 ( ~/!는 제외).

    cd ~/Library/Application' 'Support
    cd ~/Library/Application" "Support
    cd ~/Library/App'lication 'Support
    cd ~/Library/Application" Supp"ort
    cd ~/'Library/Application 'Support
    cd ~/"Library/Application "Support

이러한 종류의 따옴표는 다른 의미를 갖지만이 예에서는 동일합니다. 작은 따옴표는 리터럴 문자열을 보호하고 큰 따옴표는 인용 된 영역에서 다양한 확장 및 대체를 허용합니다.

종종 쉘이 작업을 수행하도록 할 수 있습니다.

  • 글 로빙 (와일드 카드) :

    cd ~/L*/Ap*

    shopt -s nocaseglob대소 문자를 구분하지 않는 데 사용할 수 있습니다 .

    cd ~/l*/ap*
  • 완성:

    Tab입력 한 후를 누르면 cd ~/L확장 할 수 cd ~/Library/있습니다. 입력 한 후 (이제 ) 다시
    누르면 셸이 자동으로 이스케이프 백 슬래시를 삽입합니다.TabApcd ~/Library/Apcd ~/Library/Application\ Support/

    bind 'set completion-ignore-case on'대소 문자를 구분하지 않으려면 다음을 사용하십시오 .

    cd ~/l Tabcd ~/Library/; ap Tabcd ~/Library/Application\ Support/


좋은 답변 @Chris. 탭 문자를 어떻게 키처럼 보이게 했습니까?
robzolkos

4
@RobZ : <kbd></kbd>HTML 태그입니다 ( SE markdown에서 지원되는 여러 HTML 태그 중 하나 ).
Chris Johnsen

9

경로를 큰 따옴표로 묶으면 물결표 확장이 중지됩니다. 이를 위해 몇 가지 방법이 있습니다.

cd ~/"My Code"
cd ~/'My Code'

물결표는 여기에 인용되어 있지 않으므로 물결표 확장이 계속 실행됩니다.

cd "$HOME/My Code"

큰 따옴표로 묶인 문자열 내에서 환경 변수를 확장 할 수 있습니다. 이것이 기본적으로 물결표 확장이 수행하는 작업입니다.

cd ~/My\ Code

백 슬래시를 사용하여 공백과 같은 특수 문자를 이스케이프 할 수도 있습니다.


9

또는 폴더를 터미널 창으로 끌 수도 있습니다. 전체 파일 / 폴더 경로는 끌어서 자동 붙여 넣기됩니다.


4

" Application Support" 의 공간을 벗어나야합니다.

시험 $ cd ~/Library/Application\ Support/


0

일반적인 방법으로 문제가 해결되지 않으면로 공백을 대체 해보십시오 %20.

이것은 SSH 및와 같은 다른 도메인 스타일 명령을 다룰 때 나를 위해 일했습니다 auto_smb.


0

파일 또는 폴더 이름에 1) file name.extension이 포함 된 경우 간격이있는 폴더 / 파일에 대해이 작업을 시도 할 수 있습니다. 명령은 cd ~ / file \ name.extension / (또는) cd ~ / "file name.extension"/이어야합니다.


1
이 답변은 다른 비슷한 답변과 어떻게 다르거 나 향상됩니까?
fsb

공간을 정의하고 따옴표를 제공하는 완벽한 터미널 구문은 사용자가 정의 한 것 중 하나이며 탭 키를 사용하면 1) filename.ext 2) file name.ext와 같은 이름을 사용하지 않습니다.이 유형의 이름에 대해 tab을 누르면 auto 단어 완성은 "파일"까지 표시되며이 백 슬래시를 사용하여 터미널의 공간을 정의 할 수 있습니다. @fsp
prasanth sivanesan 2016 년

허용 된 답변을 포함하여 9 개의 다른 답변과 다른 점을 독자에게 보여 주려면 해당 정보가 모두 답변에 있어야합니다.
fsb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.