.png)
我在 UNIX 環境中工作,我注意到在我的工作目錄中(距離我的 UNIX 主目錄很遠)有一個~
.
現在,曾經,我rm -rf ~
從工作目錄中執行此操作,最終完全刪除了我的主目錄,並且必須讓 IT 介入。
我不想再這樣做了。同時,我想知道:
為什麼
~
在我的工作目錄中創建?是儲存時手指滑倒了(:w!
但是會發生什麼事:w~
?!!)在簽入之前,有一個腳本會查找 p4 不知道的額外文件或資料夾,因此這
~
可能會導致問題。如何~
從我的工作目錄中刪除它,同時不刪除我的主目錄?
我確實有一個名為的備份命令del
,我使用它來代替rm -rf
.它只是將東西放在臨時位置。我可以使用它並擺脫~
,但我更感興趣的是知道為什麼會發生這種情況,以及如何刪除它。
答案1
要么引用它:
rm -i '~'
rm -i "~"
rm -i \~
或透過路徑引用它,而不僅僅是基本名稱:
rm -i ./~
rm -i /path/to/~
SOME$PATH
請注意,儘管這是一個看起來很有趣的單字元名稱,但從概念上講,這與您創建一個名為的檔案沒有什麼不同
touch 'SOME$PATH'
並嘗試透過執行以下操作來刪除它:
rm -i SOME$PATH
(警告:變數 SOME$PATH
出於範例目的,此處未引用。通常它會用引號引起來 'SOME$PATH'
)
在這兩種情況下,shell 都會擴展您提供的名稱,您需要防止這種情況發生。
另外:不要用來rm -rf
刪除檔案!其全部目的rm -r
是告訴rm
可以刪除目錄。如果您不想在嘗試刪除檔案時意外刪除整個目錄,請不要習慣性地通過-r
!
答案2
在上下文中單獨使用波浪號時,ls ~
會將您的主目錄列出為 ~ 是您的主目錄的捷徑。如果您這樣做了ls ~brown
,那麼您將列出 Brown 的主目錄的內容。
除非另有說明,VIM 將建立已更改檔案的備份副本:myFile myFile~。
這種行為很好,因為它創建了一個備份,但如果您不需要它,請添加到您的 .vimrc 檔案:設定不備份(我剛剛使用 訪問過vi ~/.vimrc
)。
當然,正如其他人所說,如果您有一個名為 ~ 的文件,那麼只需將 char 轉義為 \~
me 217 % vi this (saved as :w~)
me 218 % ls
this ~
me 219 % cat \~
kfdkdfk
me 220 % \rm \~
me 221 % ls
this
答案3
這可能會受到打字錯誤的影響。如果您的TERM=xterm
配置與我的配置類似,那麼幾乎鍵盤上的每個功能鍵都會發送轉義序列,例如...
infocmp -1 | grep -n \~ | tail -n3
138: kich1=\E[2~,
141: knp=\E[6~,
142: kpp=\E[5~,
超過一半的輸出infocmp -1
包含~
波形符在我的機器上逃脫 - 我不知道他們中的大多數人做了什麼。我確實知道zsh
在大多數情況下至少實際上吃掉了字符串的轉義部分 - 並且只留下了~
波形符。
例如,echo
然後輸入<space>
然後F6
和<return>
印刷...
/home/mikeserv
發送的實際轉義序列是...
kf6=\E[17~
有趣的是,還有其他包含>
字元的轉義序列。
infocmp -1 | grep \>
is2=\E[!p\E[?3;4l\E[4l\E>,
rmkx=\E[?1l\E>,
rs2=\E[!p\E[?3;4l\E[4l\E>,
這些是常用的轉義符 - 重置和初始化字串。不難想像,當互動式 shell 等待輸入時,鍵盤掉落或某種按鈕按下可能會導致~
整個檔案系統中出現隨機截斷的檔案。至少,它偶爾會出現在我身上。