Bash

使用 ln 創建缺失的目錄

  • October 30, 2015

所以我正在編寫一個小型包管理器,我遇到的一個問題是創建指向文件的符號連結。

它將包安裝到/usr/pkg/name-version,然後讀取文件以確定要創建的符號連結。我ln用來製作連結,但在嘗試安裝 Linux API 標頭時遇到了問題。我需要連結標頭檔本身,而不是包含它們的文件夾(因此,如果 2 個包需要將文件放在包含的同一子目錄中,它們可以不搞砸一個包)。

我解決了這個問題,但是ln如果路徑不完整,就會出錯,這很煩人,因為在安裝軟體包之前這些目錄不應該存在。

是否有一個標誌ln會創建任何失去的目錄,或者我將不得不使用一些複雜的 bash 腳本?

您不需要復雜的 bash 腳本,而是一個簡單的單行腳本。mkdir --parents將處理所有事情,如果目錄結構已經存在,甚至不會列印錯誤。

請注意在刪除時如何處理這些目錄,以免破壞其他包。

另外,既然你是在寫bash,你可以看看巫術(無恥的插頭)。也許只修改它會更簡單,因為它成熟且靈活。

沒有標誌可以使用ln. 創建目錄不是它的工作。

mkdir -p foo/bar/qux將創建foo,foo/barfoo/bar/qux根據需要創建。因此,首先呼叫mkdir -p除最後一個路徑組件之外的所有組件。

聽起來您正在重新發明輪子 Stow,這是一個簡單的包管理器,它通過創建所需深度的目錄以及指向內部不同包組件的符號連結來合併目錄層次結構。或者可能是XStow,它與 Stow 類似,但具有更多自定義可能性。

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