그래서 나는 찾고 있어요폴 아일랜드의 도트 파일그리고 참고자료를 찾아보세요이것배시 스크립트:
#!/bin/bash
cd "$(dirname "$BASH_SOURCE")" \
&& source 'utils.sh'
declare -a FILES_TO_SYMLINK=(
'shell/bash_aliases'
'shell/bash_exports'
'shell/bash_functions'
'shell/bash_logout'
'shell/bash_options'
'shell/bash_profile'
'shell/bash_prompt'
'shell/bashrc'
'shell/curlrc'
'shell/inputrc'
'shell/screenrc'
'shell/tmux.conf'
'git/gitattributes'
'git/gitconfig'
'git/gitignore'
'vim/vim'
'vim/vimrc'
'vim/gvimrc'
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
main() {
local i=''
local sourceFile=''
local targetFile=''
for i in ${FILES_TO_SYMLINK[@]}; do
sourceFile="$(cd .. && pwd)/$i"
targetFile="$HOME/.$(printf "%s" "$i" | sed "s/.*\/\(.*\)/\1/g")"
if [ -e "$targetFile" ]; then
if [ "$(readlink "$targetFile")" != "$sourceFile" ]; then
ask_for_confirmation "'$targetFile' already exists, do you want to overwrite it?"
if answer_is_yes; then
rm -rf "$targetFile"
execute "ln -fs $sourceFile $targetFile" "$targetFile → $sourceFile"
else
print_error "$targetFile → $sourceFile"
fi
else
print_success "$targetFile → $sourceFile"
fi
else
execute "ln -fs $sourceFile $targetFile" "$targetFile → $sourceFile"
fi
done
}
main
이 스크립트에는 나를 정말 혼란스럽게 만드는 두 가지 사항이 있습니다.
첫째, 이 sed는 실제로 무엇을 하는가?
sed "s/.*\/\(.*\)/\1/g"
다음에 무엇이 올 것인가?구현하다하다?
실행 명령에서 아무것도 발견되지 않았습니다.
답변1
sed 명령이 파일의 기본 이름을 가져오는 것 같습니다. 슬래시 앞에 있는 모든 것을 제거합니다.
실행 가능한 함수는 utils.sh에 정의되어야 하는데 해당 저장소에는 표시되지 않습니다. 첫 번째 인수로 주어진 명령을 실행한 다음 (성공하면?) 두 번째 인수에 주어진 메시지를 인쇄하는 것처럼 보입니다.
그 결과 예 ~/.gitignore
를 들어 심볼릭 링크가 생성되는 것 같습니다 .git/gitignore