Suponha que eu queira fazer um link simbólico como no seguinte comando:
ln -s /home/user/dots/cmus/cmus.theme /home/user/cmus/cmus.theme
Mas para que o comando acima funcione, preciso ter certeza de que o diretório /home/user/cmus
já existe. Caso contrário, haverá erro. Existe uma maneira de contornar isso como mkdir -p
?
Para deixar meu problema claro, vou colocar meu caso de uso. Eu quero criar um script de shell que symlink meus dotfiles em locais apropriados. Até agora, tenho o seguinte:
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
Mas não tenho ideia de como posso contornar o problema que especifiquei sem criar explicitamente o diretório de antemão.
Se você estiver usando GNU
cp
, você pode usar sua-s
opção :Isso criará as hierarquias de diretório e arquivos de link simbólico apropriados em vez de copiá-los.