다음 명령과 같은 심볼릭 링크를 만들고 싶다고 가정해 보겠습니다.
ln -s /home/user/dots/cmus/cmus.theme /home/user/cmus/cmus.theme
하지만 위 명령이 작동하려면 디렉터리가 /home/user/cmus
이미 존재하는지 확인해야 합니다. 그렇지 않으면 오류가 발생합니다. 이 문제를 해결할 수 있는 방법이 있나요 mkdir -p
?
내 문제를 명확히 하기 위해 사용 사례를 적어보겠습니다. 적절한 위치에 도트 파일을 심볼릭 링크하는 쉘 스크립트를 만들고 싶습니다. 지금까지 나는 다음을 가지고 있습니다 :
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}/*" .
그러면 복사하는 대신 적절한 디렉토리 계층 구조와 심볼릭 링크 파일이 생성됩니다.