Symlink

如果在將文件符號連結到該目錄時該目錄不存在,則創建該目錄

  • May 20, 2019

假設我想像以下命令一樣進行符號連結:

ln -s /home/user/dots/cmus/cmus.theme /home/user/cmus/cmus.theme

但是要使上述命令起作用,我需要確保該目錄/home/user/cmus已經存在。否則會出錯。有沒有辦法解決這個問題mkdir -p

為了使我的問題清楚,我將放下我的案例。我想創建一個 shell 腳本,它將我的點文件符號連結到適當的位置。到目前為止,我有以下內容:

DIR=$HOME/projects/dotFiles

DOTFILES=(
   "bin"
   ".bashrc"
   ".bash_profile"
   ".gitconfig"
   ".profile"
   ".tmux.conf"
   ".xinitrc"
   ".config/cmus/cmus.theme"
   ".config/compton.conf"
   ".config/dunst"
   ".config/feh"
   ".config/mpv"
   ".config/nvim"
   ".config/ranger"
   ".local/share/fonts"
)

for dotfile in "${DOTFILES[@]}";do
   rm -rf "${HOME}/${dotfile}"
   ln -sf "${DIR}/${dotfile}" "${HOME}/${dotfile}"
done

但是,我不知道如何在不事先明確創建目錄的情況下解決我指定的問題。

如果您使用的是 GNU cp,則可以使用它的-s選項

cd "${HOME}"
cp -rs "${DIR}/.*" "${DIR}/*" .

這將創建適當的目錄層次結構和符號連結文件,而不是複制它們。

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