"$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']"
rc
-like 쉘 에서는 다음을 사용할 수 있습니다.
rm '$option[value=''2016'']'
답변2
디렉토리가 비어 있는 경우:
rmdir \$pattern
그렇지 않으면:
rm -r \$pattern
(해당 폴더에 포함된 모든 파일이 재귀적으로 삭제됩니다.)
답변3
특수 문자가 포함된 파일을 작업해야 할 때 한 가지 옵션은 bash 자동 완성을 사용하는 것입니다. 명령을 입력하기 시작하고(이 경우 rmdir
) Tab몇 번 클릭합니다. 현재 디렉터리의 모든 파일/디렉터리를 반복하여 모든 특수 문자를 자동으로 이스케이프합니다.
이는 매우 긴 파일 이름을 작업하는 경우에도 잘 작동합니다.
답변4
예상치 못한 데이터베이스 명령이 실행되는 것을 방지하려면 웹 애플리케이션에서 SQL 쿼리를 작성할 때 일반적으로 사용되는 "\"로 이 문자를 이스케이프하면 됩니다.