Linux 符號連結遍歷問題
我正在嘗試使用 USB PENDRIVE 來增加我目前建構大型庫的路徑。
所以,我有這個想法,在我的程序中創建一個符號連結到 Pendrive 中的文件夾。這樣它就使用了筆式驅動器中的空間,而不是我的主記憶體儲空間。
/home/me/opencv/
<– 這是我要建構的產品/home/me/opencv/build/
<– 這是建構文件夾。此時沒有足夠的記憶體來建構它,所以我創建了這個符號連結
/home/me/opencv/
mkdir /media/me/pendrive/opencv/build/ ln -s /media/me/pendrive/opencv/build/ /home/me/opencv/ -s
/home/me/opencv/
這在指向我的筆式驅動器的文件夾下創建了一個連結“build” 。這裡的問題是目錄遍歷也指向筆式驅動器。
cd /home/me/opencv ls
這會在 opencv 文件夾中呈現許多文件夾和文件
但如果我這樣做…
cd /home/me/opencv/build ls ..
這將呈現一個空的 opencv 文件夾,其中只有一個名為 build 的文件夾。
假設您可以使用sudo或擁有 root 權限,您可以嘗試綁定掛載。例如,
mkdir /home/me/opencv/build mkdir -p /media/me/pendrive/opencv/build sudo mount -o bind /home/me/opencv/build /media/me/pendrive/opencv/build
然後,當在 中時
/home/me/opencv/build
,您應該看到 中..
的內容/home/me/opencv/
。用於sudo umount /home/me/opencv/build
撤消安裝。
您遇到的邏輯目錄路徑和物理目錄路徑之間存在差異。
cd /home/me/opencv/build
這會將您放置在邏輯目錄中,但實際上,由於符號連結
/home/me/opencv/build
,您實際上是在中。/media/me/pendrive/opencv/build
ls ..
將顯示物理父目錄的內容/media/me/pendrive/opencv
。物理目錄路徑是一個邏輯目錄路徑,它的所有符號連結都已解析。如果邏輯目錄路徑不只包含符號連結,它們是相同的。
另請參閱該建構目錄中
pwd -L
和while之間的區別(並閱讀手冊)。pwd -P``pwd
cd
也有-L
和-P
標誌(並且-L
是預設值)。