如何刪除檔名“:?”

如何刪除檔名“:?”

:~我不小心在 bash shell 上建立了一個檔名

scp foo :~

怎麼刪除呢?

答案1

嘗試rm ':?'rm ":?"rm :\?

主要是您需要用單引號或雙引號引用檔案名稱。或轉義檔名中包含的任何特殊字元。

我可以數的一些特殊字元是:

*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc

我建議使用單引號來防止刪除名為my_file而不是$filewithrm $filerm "$file"when 的錯誤檔案file='my_file'。單引號字符是唯一不能在類似 Bourne 的 shell 中用單引號引起來的字符,但您始終可以使用 和 本身來引用文件名的'...'其餘'部分\'

rm -- '-$#~<>'\''"*?[]{}'`

請注意,這-對 shell 來說並不特殊,但它的特殊之處在於,rm如果在參數的開頭找到它,則將其視為選項。這裡--告訴rm後面的參數不被視為選項,即使它們以 開頭-

答案2

一般來說,每當你想刪除奇怪名稱的檔案時,你可以嘗試使用--表示選項結束的標記。該標誌之後的任何內容都將作為位置參數處理。 (也可以看看:「--」(雙破折號)是什麼意思?

那麼,那就是

rm -i -- :?

(正如 @Doug O'Neal 所建議的,該-i選項會在刪除之前提示您,以確保您刪除的是正確的檔案。)

然而,在這種情況下,?shell 會將其擴展為全域字元。所以上面的方法是行不通的。

在這種情況下,您可以使用 shell 的自動完成功能。進入該奇怪名稱的檔案所在的目錄,然後鍵入rm :(不按Enter),然後按Tab循環瀏覽目前目錄中的所有檔案。名稱奇怪的檔案將被正確引用。

相關內容