我創建了一個名為“$pattern”的目錄,現在每當我嘗試刪除它時,它都會說
模式:未定義的變數。
我努力了:
$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"
答案1
$
、空格'
和[
是大多數 shell 中的特殊字元。要刪除它們的特殊意義,您必須使用 shell 的引用機制。
在我知道的所有 shell 中,您可以使用單引號來引用除單引號、反斜杠和換行符之外的所有字符(在類似 Bourne 的 shell 中,它也引用最後兩個字符,除了\
某些中的反引號)。
rm -r '$pattern'
應該可以在大多數常見的 shell 中工作。
rm -r \$pattern
可以在除系列 shell 之外的所有 shell 中工作(除了類似於 Bourne 的內部反引號之外)rc
。
同樣適用於:
rm "\$option[value='2016']"
在rc
-like shell 中,您可以使用:
rm '$option[value=''2016'']'
答案2
如果目錄為空:
rmdir \$pattern
否則:
rm -r \$pattern
(它將遞歸刪除該資料夾包含的任何檔案)
答案3
當您需要對包含特殊字元的檔案進行操作時,可以選擇使用 bash 自動完成功能:開始輸入命令(在本例中為rmdir
),然後按Tab幾次。這將循環目前目錄中的所有檔案/目錄,自動轉義所有特殊字元。
如果您操作的檔案名稱很長,這也很有效。
答案4
您只需使用“\”轉義該字符,這也是在 Web 應用程式中編寫 SQL 查詢的常見做法,以防止執行預期之外的資料庫命令。