& 기호가 포함된 하위 디렉터리 이름을 어떻게 이스케이프합니까?

& 기호가 포함된 하위 디렉터리 이름을 어떻게 이스케이프합니까?

kornshell을 실행하고 디렉토리 트리를 탐색해 보십시오. 다음 이름의 하위 디렉터리로 CD를 이동하고 싶습니다.

 -3ab_&_-3dc.img

내 질문은 이 이름에서 앰퍼샌드를 어떻게 피해야 합니까? 나는 큰따옴표와 백슬래시의 다양한 조합을 시도했지만 성공하지 못했습니다.

답변1

(또는 거의 모든 다른 캐릭터) 에는 &두 가지 간단한 가능성이 있습니다.

  • 전체 내용을 작은따옴표로 묶습니다.' -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'

답변2

& 기호를 이스케이프해야 하지만 현재 겪고 있는 문제는 아마도 -& 기호가 아닌 선행 문제일 것입니다. 선두 -CD는 당신이 옵션을 전달하고 있다고 생각합니다. 다음 방법을 사용하여 이 문제를 해결할 수 있습니다 ./.

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

관련 정보