Symlink
如果在將文件符號連結到該目錄時該目錄不存在,則創建該目錄
假設我想像以下命令一樣進行符號連結:
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}/*" .
這將創建適當的目錄層次結構和符號連結文件,而不是複制它們。