앰퍼샌드가 포함 된 하위 디렉토리 이름을 어떻게 이스케이프합니까?


9

kornshell을 실행하고 디렉토리 트리를 탐색하려고합니다. 다음과 같은 이름의 서브 디렉토리로 cd하십시오.

 -3ab_&_-3dc.img

내 질문은 어떻게이 이름으로 앰퍼샌드를 피해야합니까? 나는 큰 따옴표와 백 슬래시의 다른 조합을 성공적으로 시도했습니다.

답변:


11

를 들어 &(또는 거의 모든 다른 문자, 당신은 두 가지 간단한 가능성이있다.

  • 전체를 작은 따옴표로 묶습니다. ' -3ab_&_-3dc.img'
  • 번거로운 각 문자 앞에 백 슬래시를 넣으십시오. -3ab_\&_-3dc.img

두 가지 예외가 있습니다.

  • 작은 따옴표에는 작은 따옴표 방법이 작동하지 않습니다. 백 슬래시는 작은 따옴표 안에 특별하지 않으므로 직접 사용할 수도 없습니다. 할 수있는 일은 작은 따옴표로 묶인 문자열을 끝내고 즉시 백 슬래시와 작은 따옴표를 사용하고 작은 따옴표를 다시 시작하는 것입니다. 그래서 예를 들어, 디렉토리의 이름은 경우입니다 foo'bar\qux: cd 'foo'\''bar\qux'. 그런 식으로 기억할 수 있습니다. 작은 따옴표 안에 작은 따옴표를 '\''가져 옵니다 .
  • 백 슬래시 방법은 개행에는 작동하지 않습니다. 백 슬래시-개행은 무시됩니다. 줄 바꿈을 작은 따옴표로 묶어야합니다.

큰 따옴표도 사용할 수 있지만 일부 문자 앞에 백 슬래시를 넣어야합니다. 작은 따옴표가 더 간단합니다.

여기에는 디렉토리 이름이 대시로 시작한다는 점에서 또 다른 어려움이 있습니다. 이 문자는 cd거의 모든 명령과 마찬가지로 명령이 옵션에 따른다 는 것을 알려줍니다 . 대시는 쉘에만 국한되지 않고 명령에만 국한되므로 따옴표는 영향을 미치지 않습니다. 옵션으로 해석하지 않고 명령으로 대시로 시작하는 인수를 전달하는 두 가지 방법이 있습니다.

  • 이 주장을 표현할 다른 방법을 찾으십시오. 파일 이름의 경우 ./앞에 추가하면 여전히 동일한 파일이 지정됩니다.
  • 논쟁을 --먼저하십시오. 옵션을 찾지 말라고 명령합니다.

다음은이 서브 디렉토리로 변경할 수있는 몇 가지 방법입니다.

cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'

감사. 나는 그 형식도 시도했지만, 앰퍼샌드를 피하는 것을 잊었다 (제 3 예에서와 같이). 내가했을 때 효과가있었습니다.
RCinICT

5

앰퍼샌드를 이스케이프해야하지만 앰퍼샌드가 -아니라 앞선 문제가있을 수 있습니다 . 선행 -만든 CD는 옵션에 전달하는 것이라고 생각합니다. 다음을 사용하여이 문제를 해결할 수 있습니다 ./.

cd './-3ab_&_-3dc.img'

&확실히 문제입니다. 에 관해서 -는 쉘에 따라 다릅니다. Zsh는로 cd시작하는 디렉토리에 매우 만족 합니다 -. 그러나 bash는 그렇지 않습니다.
Patrick

감사. 나는 그 형식도 시도했지만, 앰퍼샌드를 피하는 것을 잊었다. 내가했을 때 효과가있었습니다.
RCinICT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.