Shell

怎麼會有一個名為~的目錄?

  • December 14, 2013

我試圖測試這個錯誤/新工具以查看它是如何工作的,它提示我選擇一個目錄來用於我正在做的事情。從目錄~/Code/indep中,我輸入了~/Code/indep/tarbell. (愚蠢,我本可以只輸入“tarbell”,但無論如何。)它促使我創建它,因為它不存在,我說是的。當我檢查這個目錄的內容時,我看到的是:

brian@navis:~/Code/indep$ ls
~ project1 project2 project3 ...

我想“哦,奇怪,它創建了一個符號連結到〜”。然而:

brian@navis:~/Code/indep$ file ./~
./~: directory

file認為它是一個目錄。

brian@navis:~/Code/indep$ ls -l
drwxr-xr-x 3 brian brian 4096 Nov  8 16:50 ~
drwxr-xr-x 8 brian brian 4096 Oct 14 18:42 project1
drwxr-xr-x 3 brian brian 4096 Sep 10 21:15 project2
drwxr-xr-x 5 brian brian 4096 Oct 14 19:33 project3
...

也是如此ls -l

我想,“哦,……這是一個硬連結嗎?我從來沒有真正使用過那些。” 但是我試圖重現,並且不可能創建到目錄的​​硬連結。所以……我想我已經把這個範圍縮小到我不明白的事情上。我是否以某種方式將我的主目錄安裝在另一個目錄中?

我此時的主要目標是刪除此文件夾中對我的主目錄的引用(rm似乎不是答案),但我也很想知道發生了什麼。

編輯:

回想起來,我完全理解發生了什麼。正如下面回答的那樣,程序~在我的目前目錄中創建了一個名為“”的目錄。唯一真正令人困惑的事實是,我與我實際查看目錄的方式不一致。有時我將其稱為“ ~”,有時稱為“ ./~”。只有當您執行後者時,您才能真正看到正在發生的事情,但在我理解這一點之前,我將使用“ ~”的絕對路徑所看到的內容與實際上是本地目錄的內容混為一談。

這是一個名為“~”的目錄。如果它是參數的第一個字元,您的 shell 將嘗試擴展“~”,因此您必須採取特殊措施。

$ mkdir ./~
$ file ./~
./~: directory
$ rm -ri ./~
rm: remove directory ‘./~’? y

引用自:https://unix.stackexchange.com/questions/99516