假设我想像以下命令一样进行符号链接:
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
选项:这将创建适当的目录层次结构和符号链接文件,而不是复制它们。