"$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 쿼리를 작성할 때 사용되는 일반적인 방법이기도 합니다.