하이픈으로 시작하는이 이름이 "-2"인 디렉토리에 CD를 넣는 방법은 무엇입니까?


169

다음과 같은 디렉토리가 있습니다.

-2

CD에 넣고 싶지만 CD가 불평합니다.

bash: cd: -2: invalid option

성공하지 못했습니다.

cd "-2"
cd '-2'
cd \-2

어떤 해결책?

편집 : 서버에서 mc 등과 같은 파일 브라우저를 사용할 수 없습니다.


2
수퍼 유저 관련 질문 : superuser.com/questions/361573/…
yms

답변:


272

적어도 두 가지 방법 :

  1. --인수를 사용하십시오 .

    cd -- -2
    

    이것은 GNU 도구에 공통적 인 규칙을 사용하는데, 이는 --명령 행 옵션으로 나타나는 것을 처리하지 않습니다 .

    A와 주석이 언급 한,이 규칙은 또한 POSIX 표준에 정의 :

    기본 동작 : 이 섹션이 "없음"으로 표시되면 구현이 옵션을 지원할 필요가 없음을 의미합니다. 옵션을 허용하지 않지만 피연산자를 허용하는 표준 유틸리티는 "--"버릴 첫 번째 인수로 인식해야 합니다.

    인식을위한 요구 사항 "--"은 적합한 응용 프로그램은 구현이 확장으로 제공 할 수있는 임의의 옵션으로부터 피연산자를 보호 할 수있는 방법이 필요하기 때문입니다. 예를 들어 표준 유틸리티 foo가 옵션을 사용하지 않는 것으로 표시되고 응용 프로그램에서 하이픈이있는 경로 이름을 지정해야하는 경우 다음과 같이 안전하게 수행 할 수 있습니다.

    foo -- -myfile
    

    -m 확장으로 사용되는 문제를 피하십시오 .

    뿐만 아니라 :

    지침 10 :
    인수 --는 옵션의 끝을 나타내는 구분자로 받아 들여 져야합니다. 다음 인수는 '-'문자로 시작하더라도 피연산자로 취급되어야합니다 . --인수는 옵션 또는 피연산자로 사용할 수 없습니다.

  2. 경로를 명시 적으로 지정하십시오.

    cd ./-2
    

    현재 디렉토리 ( .)를 명시 적으로 명명하는 경로를 시작점 으로 지정합니다 .

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    이것들은 위의 변형입니다. 임의의 수의 이러한 변형이 가능할 수있다; 나는 그것들을 모두 발견하기 위해 독자에게 연습으로 남겨 두겠습니다.


23
이것은 GNU만이 아니라 POSIX 표준의 일부입니다. 참조 1.11 유틸리티 설명 기본값12.2 유틸리티 구문 지침 (가이드 라인 # 10). " 유틸리티는 섹션 12.2를 준수해야 cd합니다 " 페이지 에서 cd.
Dietrich Epp

이제는-!라는 디렉토리에 CD를 넣는 방법이 궁금합니다.
sergiol

2
@sergiol 같은 방법으로.
Michael Hampton

1
@ArtB : 아니요. 인용은 필드 분할에만 영향을줍니다. 따라서 "hello world"하나의 주장이지만 hello world두 가지이며 "-2"동일합니다 -2.
Dietrich Epp

1
@sergiol : cd -- --또는 cd ./--작동해야합니다.
Keith Thompson

49

이것은 작동해야합니다 :

cd -- -2 

-더 이상 옵션이 없음을 의미


26

'-2'가 현재 디렉토리에 있으면 작동합니다.

    cd ./-2

-를 입력하고 tab을 눌러 자동 완성 할 수 있습니다.


11

cd /home/...../-2도 작동합니다. 액세스 할 수있는 전체 경로를 제공하십시오.


7

보완하기 위해이 디렉토리를 제거 / 삭제하려면 다음 명령을 사용할 수 있습니다.

rm -r -- -2

... 그리고 보완하기 위해 절대 그렇게하지 않을 것입니다 .mc와 같은 그래픽 도구를 사용하거나 디렉토리의 이름을 먼저 바꿉니다.
Nick

-1

이 질문에 이미 답변 된 것을 알고 있습니다. 누구든지 내 상황과 같은 상황이라면 다음과 같습니다.

Java 앱을 실행하고로 시작하는 디렉토리를 찾고 있었으므로 <path>앱을 실행하기 전에 해당 경로를 올바른 경로로 바꿔야했습니다. 그러나 나는 그것을 잊었다. 앱이라는 디렉토리를 만들었습니다 <path>.

나는 cd <path>"-bash : 예기치 않은 토큰 줄 바꿈 근처의 구문 오류"라는 오류를 보려고 시도했다 cd -- <path>. 그러나 같은 오류가 발생했습니다.

내가 시도했을 때 cd \<path>\-이것은 효과가 있었다!

배경 정보:

"<"및 ">"기호는 STDIN 및 STDOUT을 경로 재지 정하는 데 사용되므로 쉘이 경로 재 지정으로 해석하지 않도록하려면 이스케이프해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.