假设我想像以下命令一样进行符号链接:
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
但是,我不知道如何在不事先明确创建目录的情况下解决我指定的问题。
答案1
如果您使用的是 GNU cp
,则可以使用它的-s
选择:
cd "${HOME}"
cp -rs "${DIR}/.*" "${DIR}/*" .
这将创建适当的目录层次结构和符号链接文件,而不是复制它们。