
:~
我不小心在 bash shell 上建立了一個檔名
scp foo :~
怎麼刪除呢?
答案1
嘗試rm ':?'
或rm ":?"
或rm :\?
主要是您需要用單引號或雙引號引用檔案名稱。或轉義檔名中包含的任何特殊字元。
我可以數的一些特殊字元是:
*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc
我建議使用單引號來防止刪除名為my_file
而不是$file
withrm $file
或rm "$file"
when 的錯誤檔案file='my_file'
。單引號字符是唯一不能在類似 Bourne 的 shell 中用單引號引起來的字符,但您始終可以使用 和 本身來引用文件名的'...'
其餘'
部分\'
:
rm -- '-$#~<>'\''"*?[]{}'`
請注意,這-
對 shell 來說並不特殊,但它的特殊之處在於,rm
如果在參數的開頭找到它,則將其視為選項。這裡--
告訴rm
後面的參數不被視為選項,即使它們以 開頭-
。
答案2
一般來說,每當你想刪除奇怪名稱的檔案時,你可以嘗試使用--
表示選項結束的標記。該標誌之後的任何內容都將作為位置參數處理。 (也可以看看:「--」(雙破折號)是什麼意思?)
那麼,那就是
rm -i -- :?
(正如 @Doug O'Neal 所建議的,該-i
選項會在刪除之前提示您,以確保您刪除的是正確的檔案。)
然而,在這種情況下,?
shell 會將其擴展為全域字元。所以上面的方法是行不通的。
在這種情況下,您可以使用 shell 的自動完成功能。進入該奇怪名稱的檔案所在的目錄,然後鍵入rm :
(不按Enter),然後按Tab循環瀏覽目前目錄中的所有檔案。名稱奇怪的檔案將被正確引用。