"$"로 시작하는 폴더를 제거하는 방법은 무엇입니까?

"$"로 시작하는 폴더를 제거하는 방법은 무엇입니까?

"$pattern"이라는 디렉토리를 생성했는데 이제 이를 제거하려고 하면 다음과 같이 표시됩니다.

패턴: 정의되지 않은 변수입니다.

나는 시도했다:

$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"

답변1

$, 공백 '[대부분의 쉘에서 특수 문자입니다. 특별한 의미를 제거하려면 쉘의 인용 메커니즘을 사용해야 합니다.

그만큼인용 구문은 쉘에 따라 매우 다양합니다..

내가 아는 모든 쉘에서는 작은따옴표, 백슬래시 및 개행 문자를 제외한 모든 문자를 인용하기 위해 작은따옴표를 사용할 수 있습니다(Bourne과 같은 쉘에서는 일부 백틱을 제외하고 마지막 두 문자도 인용합니다 \).

rm -r '$pattern'

가장 일반적인 쉘에서 작동해야 합니다.

rm -r \$pattern

가족의 껍질을 제외한 모든 껍질에서 작동합니다 (Bourne과 같은 껍질의 내부 백틱 제외) rc.

동일:

rm "\$option[value='2016']"

-like 쉘 에서는 rc다음을 사용합니다.

rm '$option[value=''2016'']'

답변2

디렉토리가 비어 있는 경우:

rmdir \$pattern

그렇지 않으면:

rm -r \$pattern

(폴더에 포함된 모든 파일을 반복적으로 삭제합니다)

답변3

특수 문자가 포함된 파일을 작업해야 하는 경우 bash 자동 완성 기능을 사용하는 것이 좋습니다. 명령을 입력하기 시작한 다음(이 경우 rmdir) Tab여러 번 누르십시오. 그러면 현재 디렉터리의 모든 파일/디렉터리가 순환되며 모든 특수 문자가 자동으로 이스케이프됩니다.

이는 매우 긴 파일 이름을 작업하는 경우에도 잘 작동합니다.

답변4

"\"를 사용하여 문자를 이스케이프하면 됩니다. 이는 의도한 것 이외의 데이터베이스 명령이 실행되는 것을 방지하기 위해 웹 애플리케이션에서 SQL 쿼리를 작성할 때 사용되는 일반적인 방법이기도 합니다.

관련 정보