Bash使用
使用 ln
創建缺失的目錄
所以我正在編寫一個小型包管理器,我遇到的一個問題是創建指向文件的符號連結。
它將包安裝到
/usr/pkg/name-version
,然後讀取文件以確定要創建的符號連結。我ln
用來製作連結,但在嘗試安裝 Linux API 標頭時遇到了問題。我需要連結標頭檔本身,而不是包含它們的文件夾(因此,如果 2 個包需要將文件放在包含的同一子目錄中,它們可以不搞砸一個包)。我解決了這個問題,但是
ln
如果路徑不完整,就會出錯,這很煩人,因為在安裝軟體包之前這些目錄不應該存在。是否有一個標誌
ln
會創建任何失去的目錄,或者我將不得不使用一些複雜的 bash 腳本?
您不需要復雜的 bash 腳本,而是一個簡單的單行腳本。
mkdir --parents
將處理所有事情,如果目錄結構已經存在,甚至不會列印錯誤。請注意在刪除時如何處理這些目錄,以免破壞其他包。
另外,既然你是在寫
bash
,你可以看看巫術(無恥的插頭)。也許只修改它會更簡單,因為它成熟且靈活。
沒有標誌可以使用
ln
. 創建目錄不是它的工作。
mkdir -p foo/bar/qux
將創建foo
,foo/bar
並foo/bar/qux
根據需要創建。因此,首先呼叫mkdir -p
除最後一個路徑組件之外的所有組件。聽起來您正在重新發明
輪子Stow,這是一個簡單的包管理器,它通過創建所需深度的目錄以及指向內部不同包組件的符號連結來合併目錄層次結構。或者可能是XStow,它與 Stow 類似,但具有更多自定義可能性。