[전자동]Mac 환경 구축 Tips
소개
수리에 나와 돌아오기까지 시간이 걸린다는 이유만으로 몇 년간 무시해 왔다배터리 교체 프로그램에, 마침내 애용해 온 Mac을 내기로 결정했습니다.
슬프게도, 교환 프로그램에 내놓으면 내장되어 있는 데이터는 모두 없어져 버립니다.
백업 디스크를 사용하여 데이터 복원해도 좋지만 좋은 기회이므로 출하 상태에서 돌아온 깨끗한 Mac에 현재 사용하고 있는 개발 환경만을 이식하기로 했습니다.
거기서, 이번 교환에 내기 전의 Mac의 개발 환경을 가능한 한 편하게 이식할 수 있는 쉘을 짜 보았습니다.
bash의 첫 견해가 충분하지 않은 경우
이번 코드를 정리한 리포지토리은 이쪽.
개요
シェル(zsh)
, エディタ(VSCode)
, GUIアプリ
를 1명령으로 설치(일부 설정까지)까지 실시합니다.
마이그레이션하기 전에 먼저 zsh 관련 파일을 분할
앞으로 확장해 나갈 것도 생각해 파일 분할을 실시했습니다.
.zshrcZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \
-x $ZSHHOME ]; then
for i in $ZSHHOME/*; do
[[ ${i##*/} = *.zsh ]] &&
[ \( -f $i -o -h $i \) -a -r $i ] && . $i
done
fi
.zshrc
내에서 .zsh.d
다음 파일의 내용을 호출하여 파일 분할을 실현하고 있습니다.
자세한 옵션은 여기을 참조하십시오.
출력 색칠
처리 결과에 의해 출력되는 캐릭터 라인의 색을 전환합니다.
lib/echos.sh#!/bin/bash
readonly RED=$(tput setaf 1)
readonly GREEN=$(tput setaf 2; tput bold)
readonly YELLOW=$(tput setaf 3)
readonly CYAN=$(tput setaf 6)
readonly NORMAL=$(tput sgr0)
function ok() {
printf "%s\n" "$GREEN$1$NORMAL"
}
function info() {
printf "%s\n" "$CYAN$1$NORMAL"
}
function warn() {
printf "%s\n" "$YELLOW$1$NORMAL"
}
function fail() {
printf "%s\n" "$RED$1$NORMAL"
}
출력하면 이런 느낌
다양한 설치 및 설정
brew
setup.sh#!/bin/bash
set -euo pipefail
function command_exists() {
type "$1" &> /dev/null ;
}
: "install brew" && {
if ! command_exists brew; then
info "installing brew..."
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
warn "brew is already installed"
fi
}
: "install zsh by brew" && {
# Catalinaからは標準shellがzshになっているので分岐を用意
if ! command_exists zsh; then
info "installing zsh..."
brew install zsh zsh-completions
sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells'
chsh -s $(brew --prefix)/bin/zsh
else
warn "zsh is already installed"
fi
}
: "install other packages by brew" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
# 後述で使用するcaskもここでインストール対象とします
packages=( caskroom/cask/brew-cask jq tree )
for package in ${packages[@]}; do
if ! brew list | grep $package &> /dev/null; then
info "installing ${package}..."
brew install ${package}
else
warn "${package} is already installed"
fi
done
brew cleanup
}
brew-cask
homebrew-cask란?brew cask
에 대한 자세한 내용은 위의 기사를 참조하십시오.
setup.sh: "install brew cask" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
packages=( iterm2 visual-studio-code )
for package in ${packages[@]}; do
if ! brew cask list | grep $package &> /dev/null; then
info "installing ${package}..."
brew cask install ${package}
else
warn "${package} is already installed"
fi
done
}
oh-my-zsh
setup.sh: "install oh-my-zsh" && {
if [ ! -e $HOME/.oh-my-zsh ]; then
info "installing oh-my-zsh..."
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
else
warn "oh-my-zsh is already installed"
fi
info "installing zsh theme..."
git clone https://github.com/wesbos/Cobalt2-iterm.git
cd Cobalt2-iterm && cp cobalt2.zsh-theme ~/.oh-my-zsh/themes/
cd ../ && rm -rf Cobalt2-iterm
}
VSCode
setup.sh: "setting vscode" && {
info "create symbolic..."
SCRIPT_DIR=$(cd $(dirname $0) && pwd)
VSCODE_SETTING_DIR=~/Library/Application\ Support/Code/User
rm "$VSCODE_SETTING_DIR/settings.json"
ln -s "$SCRIPT_DIR/settings.json" "${VSCODE_SETTING_DIR}/settings.json"
}
원라이너로 설치
이대로는 git
를 사용할 수 없는 경우, 상기의 코드를 취득하는 방법이 한정되어 버리므로, HTTP 경유( curl, wget
)로 환경을 구축할 수 있도록(듯이) 합니다.
install.shDOTPATH=~/dotfiles
function command_exists() {
type "$1" &> /dev/null ;
}
: "install dotfiles" && {
if command_exists git; then
git clone "https://github.com/{your_github_name}/dotfiles.git" "$DOTPATH"
elif command_exists curl || command_exists wget; then
tarball="https://github.com/{your_github_name}/dotfiles/archive/master.tar.gz"
if command_exists curl; then
curl -L "$tarball"
elif command_exists wget; then
wget -O - "$tarball"
fi | tar zxv -C ~/
mkdir -p ~/dotfiles
mv -i ~/dotfiles-master/* "$DOTPATH" && rm -rf ~/dotfiles-master
else
echo "curl or wget required"
fi
}
: "deploy and setup" && {
cd ~/dotfiles
if [ $? -ne 0 ]; then
echo "not found: $DOTPATH"
else
sh setup.sh
fi
}
자신의 환경에서 사용할 수 있는 명령( git
, curl
, wget
)에 의해 처리를 나누어, 로컬 환경에 소스를 배치합니다.
그런 다음 이전 setup.sh
을 실행하기 만하면됩니다.
사용법
terminal$ curl -L raw.github.com/{github_name}/dotfiles/master/install.sh | bash
결론
요전날, 수리에 내고 있던 PC도 무사히 수중에 돌아왔습니다.
출하 시의 상태로부터 1명령으로 이전까지의 개발 환경을 재현할 수 있었으므로 만족합니다!
참고
シェル(zsh)
, エディタ(VSCode)
, GUIアプリ
를 1명령으로 설치(일부 설정까지)까지 실시합니다.마이그레이션하기 전에 먼저 zsh 관련 파일을 분할
앞으로 확장해 나갈 것도 생각해 파일 분할을 실시했습니다.
.zshrcZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \
-x $ZSHHOME ]; then
for i in $ZSHHOME/*; do
[[ ${i##*/} = *.zsh ]] &&
[ \( -f $i -o -h $i \) -a -r $i ] && . $i
done
fi
.zshrc
내에서 .zsh.d
다음 파일의 내용을 호출하여 파일 분할을 실현하고 있습니다.
자세한 옵션은 여기을 참조하십시오.
출력 색칠
처리 결과에 의해 출력되는 캐릭터 라인의 색을 전환합니다.
lib/echos.sh#!/bin/bash
readonly RED=$(tput setaf 1)
readonly GREEN=$(tput setaf 2; tput bold)
readonly YELLOW=$(tput setaf 3)
readonly CYAN=$(tput setaf 6)
readonly NORMAL=$(tput sgr0)
function ok() {
printf "%s\n" "$GREEN$1$NORMAL"
}
function info() {
printf "%s\n" "$CYAN$1$NORMAL"
}
function warn() {
printf "%s\n" "$YELLOW$1$NORMAL"
}
function fail() {
printf "%s\n" "$RED$1$NORMAL"
}
출력하면 이런 느낌
다양한 설치 및 설정
brew
setup.sh#!/bin/bash
set -euo pipefail
function command_exists() {
type "$1" &> /dev/null ;
}
: "install brew" && {
if ! command_exists brew; then
info "installing brew..."
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
warn "brew is already installed"
fi
}
: "install zsh by brew" && {
# Catalinaからは標準shellがzshになっているので分岐を用意
if ! command_exists zsh; then
info "installing zsh..."
brew install zsh zsh-completions
sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells'
chsh -s $(brew --prefix)/bin/zsh
else
warn "zsh is already installed"
fi
}
: "install other packages by brew" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
# 後述で使用するcaskもここでインストール対象とします
packages=( caskroom/cask/brew-cask jq tree )
for package in ${packages[@]}; do
if ! brew list | grep $package &> /dev/null; then
info "installing ${package}..."
brew install ${package}
else
warn "${package} is already installed"
fi
done
brew cleanup
}
brew-cask
homebrew-cask란?brew cask
에 대한 자세한 내용은 위의 기사를 참조하십시오.
setup.sh: "install brew cask" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
packages=( iterm2 visual-studio-code )
for package in ${packages[@]}; do
if ! brew cask list | grep $package &> /dev/null; then
info "installing ${package}..."
brew cask install ${package}
else
warn "${package} is already installed"
fi
done
}
oh-my-zsh
setup.sh: "install oh-my-zsh" && {
if [ ! -e $HOME/.oh-my-zsh ]; then
info "installing oh-my-zsh..."
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
else
warn "oh-my-zsh is already installed"
fi
info "installing zsh theme..."
git clone https://github.com/wesbos/Cobalt2-iterm.git
cd Cobalt2-iterm && cp cobalt2.zsh-theme ~/.oh-my-zsh/themes/
cd ../ && rm -rf Cobalt2-iterm
}
VSCode
setup.sh: "setting vscode" && {
info "create symbolic..."
SCRIPT_DIR=$(cd $(dirname $0) && pwd)
VSCODE_SETTING_DIR=~/Library/Application\ Support/Code/User
rm "$VSCODE_SETTING_DIR/settings.json"
ln -s "$SCRIPT_DIR/settings.json" "${VSCODE_SETTING_DIR}/settings.json"
}
원라이너로 설치
이대로는 git
를 사용할 수 없는 경우, 상기의 코드를 취득하는 방법이 한정되어 버리므로, HTTP 경유( curl, wget
)로 환경을 구축할 수 있도록(듯이) 합니다.
install.shDOTPATH=~/dotfiles
function command_exists() {
type "$1" &> /dev/null ;
}
: "install dotfiles" && {
if command_exists git; then
git clone "https://github.com/{your_github_name}/dotfiles.git" "$DOTPATH"
elif command_exists curl || command_exists wget; then
tarball="https://github.com/{your_github_name}/dotfiles/archive/master.tar.gz"
if command_exists curl; then
curl -L "$tarball"
elif command_exists wget; then
wget -O - "$tarball"
fi | tar zxv -C ~/
mkdir -p ~/dotfiles
mv -i ~/dotfiles-master/* "$DOTPATH" && rm -rf ~/dotfiles-master
else
echo "curl or wget required"
fi
}
: "deploy and setup" && {
cd ~/dotfiles
if [ $? -ne 0 ]; then
echo "not found: $DOTPATH"
else
sh setup.sh
fi
}
자신의 환경에서 사용할 수 있는 명령( git
, curl
, wget
)에 의해 처리를 나누어, 로컬 환경에 소스를 배치합니다.
그런 다음 이전 setup.sh
을 실행하기 만하면됩니다.
사용법
terminal$ curl -L raw.github.com/{github_name}/dotfiles/master/install.sh | bash
결론
요전날, 수리에 내고 있던 PC도 무사히 수중에 돌아왔습니다.
출하 시의 상태로부터 1명령으로 이전까지의 개발 환경을 재현할 수 있었으므로 만족합니다!
참고
ZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \
-x $ZSHHOME ]; then
for i in $ZSHHOME/*; do
[[ ${i##*/} = *.zsh ]] &&
[ \( -f $i -o -h $i \) -a -r $i ] && . $i
done
fi
처리 결과에 의해 출력되는 캐릭터 라인의 색을 전환합니다.
lib/echos.sh
#!/bin/bash
readonly RED=$(tput setaf 1)
readonly GREEN=$(tput setaf 2; tput bold)
readonly YELLOW=$(tput setaf 3)
readonly CYAN=$(tput setaf 6)
readonly NORMAL=$(tput sgr0)
function ok() {
printf "%s\n" "$GREEN$1$NORMAL"
}
function info() {
printf "%s\n" "$CYAN$1$NORMAL"
}
function warn() {
printf "%s\n" "$YELLOW$1$NORMAL"
}
function fail() {
printf "%s\n" "$RED$1$NORMAL"
}
출력하면 이런 느낌
다양한 설치 및 설정
brew
setup.sh#!/bin/bash
set -euo pipefail
function command_exists() {
type "$1" &> /dev/null ;
}
: "install brew" && {
if ! command_exists brew; then
info "installing brew..."
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
warn "brew is already installed"
fi
}
: "install zsh by brew" && {
# Catalinaからは標準shellがzshになっているので分岐を用意
if ! command_exists zsh; then
info "installing zsh..."
brew install zsh zsh-completions
sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells'
chsh -s $(brew --prefix)/bin/zsh
else
warn "zsh is already installed"
fi
}
: "install other packages by brew" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
# 後述で使用するcaskもここでインストール対象とします
packages=( caskroom/cask/brew-cask jq tree )
for package in ${packages[@]}; do
if ! brew list | grep $package &> /dev/null; then
info "installing ${package}..."
brew install ${package}
else
warn "${package} is already installed"
fi
done
brew cleanup
}
brew-cask
homebrew-cask란?brew cask
에 대한 자세한 내용은 위의 기사를 참조하십시오.
setup.sh: "install brew cask" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
packages=( iterm2 visual-studio-code )
for package in ${packages[@]}; do
if ! brew cask list | grep $package &> /dev/null; then
info "installing ${package}..."
brew cask install ${package}
else
warn "${package} is already installed"
fi
done
}
oh-my-zsh
setup.sh: "install oh-my-zsh" && {
if [ ! -e $HOME/.oh-my-zsh ]; then
info "installing oh-my-zsh..."
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
else
warn "oh-my-zsh is already installed"
fi
info "installing zsh theme..."
git clone https://github.com/wesbos/Cobalt2-iterm.git
cd Cobalt2-iterm && cp cobalt2.zsh-theme ~/.oh-my-zsh/themes/
cd ../ && rm -rf Cobalt2-iterm
}
VSCode
setup.sh: "setting vscode" && {
info "create symbolic..."
SCRIPT_DIR=$(cd $(dirname $0) && pwd)
VSCODE_SETTING_DIR=~/Library/Application\ Support/Code/User
rm "$VSCODE_SETTING_DIR/settings.json"
ln -s "$SCRIPT_DIR/settings.json" "${VSCODE_SETTING_DIR}/settings.json"
}
원라이너로 설치
이대로는 git
를 사용할 수 없는 경우, 상기의 코드를 취득하는 방법이 한정되어 버리므로, HTTP 경유( curl, wget
)로 환경을 구축할 수 있도록(듯이) 합니다.
install.shDOTPATH=~/dotfiles
function command_exists() {
type "$1" &> /dev/null ;
}
: "install dotfiles" && {
if command_exists git; then
git clone "https://github.com/{your_github_name}/dotfiles.git" "$DOTPATH"
elif command_exists curl || command_exists wget; then
tarball="https://github.com/{your_github_name}/dotfiles/archive/master.tar.gz"
if command_exists curl; then
curl -L "$tarball"
elif command_exists wget; then
wget -O - "$tarball"
fi | tar zxv -C ~/
mkdir -p ~/dotfiles
mv -i ~/dotfiles-master/* "$DOTPATH" && rm -rf ~/dotfiles-master
else
echo "curl or wget required"
fi
}
: "deploy and setup" && {
cd ~/dotfiles
if [ $? -ne 0 ]; then
echo "not found: $DOTPATH"
else
sh setup.sh
fi
}
자신의 환경에서 사용할 수 있는 명령( git
, curl
, wget
)에 의해 처리를 나누어, 로컬 환경에 소스를 배치합니다.
그런 다음 이전 setup.sh
을 실행하기 만하면됩니다.
사용법
terminal$ curl -L raw.github.com/{github_name}/dotfiles/master/install.sh | bash
결론
요전날, 수리에 내고 있던 PC도 무사히 수중에 돌아왔습니다.
출하 시의 상태로부터 1명령으로 이전까지의 개발 환경을 재현할 수 있었으므로 만족합니다!
참고
#!/bin/bash
set -euo pipefail
function command_exists() {
type "$1" &> /dev/null ;
}
: "install brew" && {
if ! command_exists brew; then
info "installing brew..."
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
warn "brew is already installed"
fi
}
: "install zsh by brew" && {
# Catalinaからは標準shellがzshになっているので分岐を用意
if ! command_exists zsh; then
info "installing zsh..."
brew install zsh zsh-completions
sudo sh -c 'echo $(brew --prefix)/bin/zsh >> /etc/shells'
chsh -s $(brew --prefix)/bin/zsh
else
warn "zsh is already installed"
fi
}
: "install other packages by brew" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
# 後述で使用するcaskもここでインストール対象とします
packages=( caskroom/cask/brew-cask jq tree )
for package in ${packages[@]}; do
if ! brew list | grep $package &> /dev/null; then
info "installing ${package}..."
brew install ${package}
else
warn "${package} is already installed"
fi
done
brew cleanup
}
: "install brew cask" && {
# 使用したいパッケージをスペース区切りで書きます (カンマ区切りにするとエラーになる)
packages=( iterm2 visual-studio-code )
for package in ${packages[@]}; do
if ! brew cask list | grep $package &> /dev/null; then
info "installing ${package}..."
brew cask install ${package}
else
warn "${package} is already installed"
fi
done
}
: "install oh-my-zsh" && {
if [ ! -e $HOME/.oh-my-zsh ]; then
info "installing oh-my-zsh..."
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
else
warn "oh-my-zsh is already installed"
fi
info "installing zsh theme..."
git clone https://github.com/wesbos/Cobalt2-iterm.git
cd Cobalt2-iterm && cp cobalt2.zsh-theme ~/.oh-my-zsh/themes/
cd ../ && rm -rf Cobalt2-iterm
}
: "setting vscode" && {
info "create symbolic..."
SCRIPT_DIR=$(cd $(dirname $0) && pwd)
VSCODE_SETTING_DIR=~/Library/Application\ Support/Code/User
rm "$VSCODE_SETTING_DIR/settings.json"
ln -s "$SCRIPT_DIR/settings.json" "${VSCODE_SETTING_DIR}/settings.json"
}
이대로는
git
를 사용할 수 없는 경우, 상기의 코드를 취득하는 방법이 한정되어 버리므로, HTTP 경유( curl, wget
)로 환경을 구축할 수 있도록(듯이) 합니다.install.sh
DOTPATH=~/dotfiles
function command_exists() {
type "$1" &> /dev/null ;
}
: "install dotfiles" && {
if command_exists git; then
git clone "https://github.com/{your_github_name}/dotfiles.git" "$DOTPATH"
elif command_exists curl || command_exists wget; then
tarball="https://github.com/{your_github_name}/dotfiles/archive/master.tar.gz"
if command_exists curl; then
curl -L "$tarball"
elif command_exists wget; then
wget -O - "$tarball"
fi | tar zxv -C ~/
mkdir -p ~/dotfiles
mv -i ~/dotfiles-master/* "$DOTPATH" && rm -rf ~/dotfiles-master
else
echo "curl or wget required"
fi
}
: "deploy and setup" && {
cd ~/dotfiles
if [ $? -ne 0 ]; then
echo "not found: $DOTPATH"
else
sh setup.sh
fi
}
자신의 환경에서 사용할 수 있는 명령(
git
, curl
, wget
)에 의해 처리를 나누어, 로컬 환경에 소스를 배치합니다.그런 다음 이전
setup.sh
을 실행하기 만하면됩니다.사용법
terminal$ curl -L raw.github.com/{github_name}/dotfiles/master/install.sh | bash
결론
요전날, 수리에 내고 있던 PC도 무사히 수중에 돌아왔습니다.
출하 시의 상태로부터 1명령으로 이전까지의 개발 환경을 재현할 수 있었으므로 만족합니다!
참고
$ curl -L raw.github.com/{github_name}/dotfiles/master/install.sh | bash
요전날, 수리에 내고 있던 PC도 무사히 수중에 돌아왔습니다.
출하 시의 상태로부터 1명령으로 이전까지의 개발 환경을 재현할 수 있었으므로 만족합니다!
참고
Reference
이 문제에 관하여([전자동]Mac 환경 구축 Tips), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naoya_s/items/1b6959edaac6099d4da8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)