刪除以 shell 回應字元集命名的 linux 文件

刪除以 shell 回應字元集命名的 linux 文件

我創建了一個名為\;:$"\'測試我的軟體的檔案。我最終遇到了錯誤,因為我無法刪除檔案屬性。我試圖找到一個精確的字元組合來通過 刪除它rm,但我找不到方法。

rm \\;:$\"\\\'
rm: cannot remove `\\': No such file or directory

rm "\\"\;:$\"\\\'
rm: cannot remove `\\;:$"\\\'': No such file or directory

rm '\;:$"\'''
rm: cannot remove `\\;:$"\\': No such file or directory

(最後一次嘗試殺了我)

還有許多其他嘗試。需要伸出援手!

答案1

如果檔案名稱正是\;:$"\',那麼您應該能夠使用以下命令刪除它:

rm \\\;\:\$\"\\\'

只要用一個 轉義所有字元即可\

答案2

您可以嘗試ls -li在包含該文件的目錄中刪除該文件,並透過發出命令返回 inodefind . -inum <inode-number> -exec rm -i {} \;

-i在 find 命令中新增了 ,以便在刪除之前進行提示,以防 find 命令找到超出您預期的另一個檔案。

除了評論之外,我還嘗試自己建立和刪除該文件:

ls -l
total 0
-rw-r--r-- 1 test test 0 mrt 24 14:11 \;:$"\'

[test@testhost +1] /tmp/ff$ rm \\\;\:\$\"\\\' 

[test@testhost +1] /tmp/ff$ ls -l
total 0

答案3

您可以使用單引號,然後您只需擔心引用單引號本身。

rm '\;:$"\'\'

在互動式使用中,您可以簡單地使用製表符補全,以'\或開頭\\。從'\產量中完成製表符'\;:$"\'\''',因為 bash 只是用 替換每個嵌入的單引號'\''。從無或從\\Yield進行 Tab 補全\\\;\:\$\"\\\'

答案4

如果您不限於使用 bash 或其他 shell 腳本環境,刪除此類檔案的簡單方法可能是編寫一個簡短的程序,僅用unlink()您最喜歡的語言進行調用,或者使用檔案管理器,例如 Gnome Commander 或 Midnight指揮官手動刪除該檔案。後一個選項可讓您選擇有問題的檔案並將其刪除,而無需在任何地方輸入檔案名,這將消除元字元具有任何特殊含義的可能性。

相關內容