Photo by Ales Nesetril on Unsplash
์ด ๊ธ์ Notion ์ฑ ์ผ๋ก ์์ฑํ ํ์ด์ง์์๋ ๋ณด์ค ์ ์์ต๋๋ค
โ๏ธ์ด ๊ธ์ ๊ณผ๋ํ๊ฒ oh-my-zsh ๊ณผ homebrew ์ ์์
ํ๋ ๊ธ์
๋๋ค
์์
ํด์ผ ํ๋๊น ๋ ๊ฐ์ง์ ์ฌ์ฉ๋ฒ๋ ์น์ ํ๊ฒ ์ ์ด ๋์์ต๋๋ค ๐ถ
์ ธ(shell, ๋ฌธํ์ด: ์, ์๋ นํด์ํ๋ก๊ทธ๋จ)์ ์ด์ ์ฒด์ ์์์ ๋ค์ํ ์ด์ ์ฒด์ ๊ธฐ๋ฅ๊ณผ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์ ธ(๊ป๋ฐ๊ธฐ์ ์์ด ๋จ์ด)์ ์ฌ์ฉ์์ ์ด์ ์ฒด์ ์ ๋ด๋ถ(์ปค๋) ์ฌ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ธ๋ ์ธต์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฌํ ์ด๋ฆ์ด ๋ถ์๋ค.
Shell ์ ์ด์์ฒด์ ์ข
์์ ์ธ ๊ฒ์ด ์๋๋๋ค. ํ๋์ ํ๋ก๊ทธ๋จ์
๋๋ค.
๋ณดํธ์ ์ผ๋ก๋ sh, bash, zsh, fish ๋ฑ์ด ์ฌ์ฉ๋ฉ๋๋ค
(๋ณดํต์ ๋ฆฌ๋
์ค ํ๊ฒฝ์์ ๊ธฐ๋ณธ Shell ์ bash ํ๊ฒฝ ์
๋๋ค๋ง, docker ๋ฑ์์ ๊ฒฝ๋ํ๋ฅผ ์ํด sh ๋ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค)
๐ฌ Installation Process (curl, git, zsh ์ ์ค์น๊ฐ ์ ํ๋์ด์ผ ํฉ๋๋ค)
์ค์น ์ฌํ์ ์ํด docker ํ๊ฒฝ์์ ์คํํ์ต๋๋ค!
์ค์น๋ Github์ curl ๋๋ wget ๋ช ๋ น์ ๋ณต์ฌํ์ฌ ์ฌ์ฉํฉ๋๋ค. (Mac OS ๋ ๊ธฐ๋ณธ์ผ๋ก curl, git ์ ๋ด์ฅํ๊ณ ์์ต๋๋ค)
๋ง์ฝ Zsh is not installed! Please install zsh first! ๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด
homebrew ๋ฅผ ํตํด zsh ์ ๋จผ์ ์ค์น ํด์ฃผ์ธ์
(๋ณดํต์ oh-my-zsh ์ค์น ์คํฌ๋ฆฝํธ๊ฐ zsh ๋ํ ๊ฐ์ด ์ค์น ํ๋ ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค)
oh-my-zsh ํ๊ฒฝ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ๋ค ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก์ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค
(๋๋ ~/.oh-my-zsh/plugins ๋๋ ํ ๋ฆฌ ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค)
๊ฐ ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฅ ๋ํ ๋ฒ๋ค ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก ๋งํฌ์์ ํ์ธํ์ธ์!
๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ฌ๊ทธ์ธ ๋ค์ ์ค์นํด ๋ณผ๊ฒ์
1. zsh-autosuggestions
์ด์ ์ ์
๋ ฅํ๋ ๋ช
๋ น์ ๋ฐํ์ผ๋ก ์๋์์ฑ์ ์ถ์ฒํฉ๋๋ค
๐ฌ Usage
๐ echo ๋ช
๋ น์ผ๋ก ์
๋ ฅ ํ์๋ ๊ฐ์ฅ ์ต๊ทผ ๋ช
๋ น์ด์ ์๋ ์์ฑ์ ์ถ์ฒ ํด์ค๋๋ค
2. fast-syntax-highlighting
Shell ๋ช
๋ น์ด๋ฅผ ํ์ด๋ผ์ดํธ ์์ผ ์ค๋๋ค
๐ฌ Usage
๐ echo 'Hello World' ๊ฐ ํ์ด๋ผ์ดํธ ๋ฉ๋๋ค
3. zsh-completions
zsh ์์ ๋ ๋ง์ ์๋ ์์ฑ์ด ๊ฐ๋ฅํ๋๋ก ๋ช
๋ น์ด ์ธํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค
(์ฌ์ค ์ค์น ํ์ ์ ํํ ์ฒด๊ฐ์ ๋ชปํ์ง๋ง ๊ทธ๋ ๋ค ํฉ๋๋ค ๐
)
๊ฐ์ธ์ ์ธ ์๊ฐ์ด์ง๋ง Mac OS ์ โจ ์ํ์ด์ โญ๏ธ ์ค๋ฉ๊ฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค!
์ ๋ ์ด ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ubuntu ์ apt, apt-get ๊ณผ ๋์๋๋ ๊ฒ์ผ๋ก ์ดํดํ๊ณ ์์ต๋๋ค
(apt install
โ brew install
, apt-get install
โ brew cask install
)
brew ๋ฅผ ํตํด์๋, ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ background ์์ ๋์ํ๋ (์๋์ฐ ๊ธฐ์ค) ์๋น์ค ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ
brew cask ๋ฅผ ํตํด์๋, ์์ฉ ํ๋ก๊ทธ๋จ (๊ณผ ํฐํธ)๋ฅผ ์ค์นํ ์ ์์ต๋๋ค
์์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ python, mysql, mongod, zsh ๋ฑ ์๋น์ค ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค
๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํฉ๋๋ค
$ brew install [์ค์นํ -ํ๋ก๊ทธ๋จ-์ด๋ฆ]
$ brew install mysql # mysql ์ ์ค์นํฉ๋๋ค
# ๋ง์ฝ unstable ํ ์ต์ ๋ฒ์ ์ค์น๋ผ๋ฉด
$ brew install mysql --HEAD
๋ง์ฝ ์ค์นํ ํ๋ก๊ทธ๋จ์ ์ ํํ ์ด๋ฆ์ด ์ ๋งคํ๋ค๋ฉด
(์๋ฅผ ๋ค์ด, postgres ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๋ค๊ณ ํ์ ๋
postresql ์ธ์ง, postgres ์ธ์ง ์ ๋งคํ๋ค๋ฉด)
$ brew search postgres # ๋ถ๋ถ ๋งค์นญ๋ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ํ์คํ๋ค ์๊ฐํ๋ ๊ฒ ๊น์ง๋ง ์ฐ์ ๊ฒ์
==> Formulae
check_postgres postgres-xc postgresql โ postgresql@9.4 postgresql@9.5 postgresql@9.6 postgrest
==> Casks
navicat-for-postgresql postgres sqlpro-for-postgres
photo-supreme-postgresql postgrespreferencepane
๊ทธ๋ผ ํ๋ก๊ทธ๋จ ํ๋๋ฅผ ์ค์นํด ๋ณผ๊ฒ์
postgresql ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ฒ ์ต๋๋ค
์์๋,
๐ฌ ์ค์น ๋ฐ ์คํ ๊ณผ์
๐ ์ค์น๊ฐ ๋๋ฌด ๊ฐํธํ์ง ์๋์? ์ ๋ง ์ด-์ธ ํฉ๋๋ค
์๋์ ๊ฐ์ ์์๋ก ์ค์นํ๊ณ , ์คํ ํ์ธ ํ์์ต๋๋ค
# ๋จผ์ ์ ํํ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ๊ฒ์ํฉ๋๋ค
$ brew search postgres
==> Formulae
check_postgres postgres-xc postgresql โ postgresql@9.4 postgresql@9.5 postgresql@9.6 postgrest
==> Casks
navicat-for-postgresql postgres sqlpro-for-postgres
photo-supreme-postgresql postgrespreferencepane
# ๊ฒ์๋ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ๋ฐ๋ผ ์ค์นํฉ๋๋ค
$ brew install postgresql
==> Downloading https://homebrew.bintray.com/bottles/postgresql-10.5.mojave.bottle.1.tar.gz
Already downloaded: /Users/doondoony/Library/Caches/Homebrew/downloads/29b2f1f97b0e7e040ca1f0497e209cc26dcf6fe38b21f675932a2dbbc46927dc--postgresql-10.5.mojave.bottle.1.tar.gz
==> Pouring postgresql-10.5.mojave.bottle.1.tar.gz
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
To have launchd start postgresql now and restart at login:
brew services start postgresql # ์ฌ๊ธฐ ์น์ ํ๊ฒ ์๋น์ค๋ฅผ ์์ํ๋ ๋ช
๋ น์ด๋ฅผ ์๋ ค์ค๋๋ค!
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
==> Summary
๐บ /usr/local/Cellar/postgresql/10.5: 1,705 files, 20.8MB
# postgresql ์๋น์ค๋ฅผ ์์ํฉ๋๋ค
$ brew services start postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
# psql ๋ช
๋ น์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ํฉ๋๋ค
$ psql -U doondoony -d postgres # ์ฌ๋ฌ๋ถ์ ์ฌ๋ ค๋ถ์ ํธ์คํธ๋ช
์ doondoony ๋์ ์
๋ ฅํ์๋ฉด ๋ผ์!
psql (10.5)
Type "help" for help.
postgres=# \dt *.* # ํ
์ด๋ธ ๋ชฉ๋ก ์กฐํ
postgres=# \q # ๋๊ฐ๊ธฐ
# ์ค์น๋ postgresql ๋ฒ์ ํ์ธ
$ psql --version
psql (PostgreSQL) 10.5
brew cask ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํ ์ ์์ต๋๋ค
์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ฆ๊ฒจ ์ฌ์ฉํ๋ VSCode, Postman ๋ฑ์ ์์ฉ ํ๋ก๊ทธ๋จ์
ํํ์ด์ง์์ ๋ค์ด ๋ฐ์ง ์๊ณ ๋(!) ์ค์นํ ์ ์์ต๋๋ค
๋ช ๋ ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํฉ๋๋ค
$ brew cask [์ค์นํ -์์ฉ-ํ๋ก๊ทธ๋จ-์ด๋ฆ]
์์ฉํ๋ก๊ทธ๋จ๋ ํ๋ ์ค์นํด ๋ณผ๊ฒ์
Microsoft์์ ๋ง๋ ๋ชจ๋ ๊ฐ๋ฐ์๋ค์ ์น๊ตฌ Visual Studio Code ๋ฅผ ์ค์น ํ๊ฒ ์ต๋๋ค
์์๋,
1. Visual Studio Code ํ๋ก๊ทธ๋จ์ ์ ํํ ๋ช
์นญ์ ์ฐ์ ๊ฒ์ํฉ๋๋ค
2. ๊ฒ์๋ ํ๋ก๊ทธ๋จ๋ช
์ผ๋ก ์ค์นํฉ๋๋ค
3. open ๋ช
๋ น์ด๋ก ์ค์น๋ฅผ ํ์ธํฉ๋๋ค
๐ฌ ์ค์น ๋ฐ ์คํ ๊ณผ์
๐ ์ค์น ๊ณผ์ ์ฌ์ฐ์ ์ํด vscode ๋ฅผ ์ง์ ์ต๋๋ค.......
์๋์ ๊ฐ์ ์์๋ก ์ค์นํ๊ณ , ์คํ์ ํ์ธํ์ด์!
$ brew search vscode
No formula or cask found for "vscode". # ์ด๋ฐ! vscode๊ฐ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ด ์๋๊ฐ ๋ด์
$ brew search code
==> Formulae
autocode eccodes gnu-barcode objc-codegenutils qrencode woboq_codebrowser
codec2 echoprint-codegen iso-codes osslsigncode recode xcodegen
codemod fdk-aac-encoder liberasurecode pcb2gcode rxvt-unicode yydecode
codequery gecode lolcode php-code-sniffer swagger-codegen
color-code geocode-glib mp3unicode pycodestyle tivodecode
==> Casks
appcode font-eeyek-unicode font-sourcecodepro-nerd-font
avidcodecsle font-encodesans font-sourcecodepro-nerd-font-mono
avocode font-encodesans-condensed font-vazir-code
cocos-code-ide font-encodesans-expanded gifloopcoder
codekit font-encodesans-semicondensed hindenburg-prx-encoder
codelite font-encodesans-semiexpanded jclasslib-bytecode-viewer
coderunner font-envy-code-r key-codes
dcp-o-matic-encode-server font-fira-code open-in-code
font-anka-coder font-firacode-nerd-font paintcode
font-camingocode font-firacode-nerd-font-mono polycode
font-code font-junicode qlcolorcode
font-code2000 font-miao-unicode teacode
font-code2001 font-new-athena-unicode unicodechecker
font-code2002 font-office-code-pro โ visual-studio-code
font-codenewroman-nerd-font font-source-code-pro โ visual-studio-code-insiders
font-codenewroman-nerd-font-mono font-source-code-pro-for-powerline
font-courier-prime-code font-source-han-code-jp
# ์ ๊ธฐ ์ค๋ฅธ์ชฝ ์๋์ visual-studio-code ๊ฐ ์๋ค์!
$ brew cask install visual-studio-code
==> Satisfying dependencies
==> Downloading https://az764295.vo.msecnd.net/stable/7f3ce96ff4729c91352ae6def877e59c561f4850/VSCode-darwin-stable.
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'visual-studio-code'.
==> Installing Cask visual-studio-code
==> Moving App 'Visual Studio Code.app' to '/Applications/Visual Studio Code.app'.
==> Linking Binary 'code' to '/usr/local/bin/code'.
๐บ visual-studio-code was successfully installed!
$ open /Applications/Visual\ Studio\ Code.app # ์ ํ๋ฆฌ์ผ์ด์
์ด ์ค์น๋๋ฉด /Applications ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค. ์ ์ค์น๋์๊ตฐ์!
์ด๋ ๊ฒ ํ๋ฉด, ํ๋ก๊ทธ๋จ ์ญ์ ๋ ๊ฐํธํด์ ธ์!
$ brew cask list # ๋ด๊ฐ brew cask ๋ก ์ค์นํ ํ๋ก๊ทธ๋จ ๋ชฉ๋ก ํ์ธ
$ brew cask uninstall visual-studio-code # ์ญ์
==> Uninstalling Cask visual-studio-code
==> Backing App 'Visual Studio Code.app' up to '/usr/local/Caskroom/visual-studio-code/1.28.2,7f3ce96ff4729c91352ae6
==> Removing App '/Applications/Visual Studio Code.app'.
==> Unlinking Binary '/usr/local/bin/code'.
==> Purging files for version 1.28.2,7f3ce96ff4729c91352ae6def877e59c561f4850 of Cask visual-studio-code
ํน์ ํฐํธ๋ ์ธํฐ๋ท์์ ํ๋ํ๋ ๋ฐ์์ Font Book ์ ๋ฃ์ผ์
จ๋์?
brew cask ๋ก ํฐํธ๋ ์ค์นํ ์ ์์ต๋๋ค
๐ฌ ์ค์น ๊ณผ์
๐ Fira Code ํฐํธ๋ฅผ cli ๋ก ์ค์นํ ์ ์๋ค๋ ์ ๋ง ์ด-์ธ ํฉ๋๋ค
FiraCode ๋ผ๋ ์ ๋ช ํ ์์ฒด๋ฅผ ์ค์นํด ๋ณผ๊ฒ์!
$ brew search fira
==> Casks
homebrew/cask-fonts/font-fira-code homebrew/cask-fonts/font-fira-mono-for-powerline
homebrew/cask-fonts/font-fira-mono homebrew/cask-fonts/font-fira-sans
# ๋ฐ๊ฒฌ! font-fira-code ๋ฅผ ์ค์นํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค
$ brew cask install font-fira-code
Error: Cask 'font-fira-code' is unavailable: No Cask with this name exists. # ์ฅ?
์ฅ... ๋ฌธ์ ๊ฐ ์๋ค์! No Cask with this name exists ๋ผ๋ ๋ฌธ์ ๋ฅผ ๊ตฌ๊ธ์ ๊ฒ์ํด ๋ด
๋๋ค
๋ณ๋ก ๋์ ๋ ๋งํ ์ ๋ณด๊ฐ ์๋๊ฑฐ ๊ฐ์์ ๐ญ
์ค์น๊ฐ ์๋๋ ์ด์ ๋ font-fira-code ์์ ์๋ homebrew/cask-fonts ์ ๊ทธ ํํธ๊ฐ ์์ต๋๋ค
font๋ ์จ๋ ํํฐ ๋ ํฌ์งํ ๋ฆฌ ์์ ์ค์นํด์ผ ํ๊ธฐ ๋๋ฌธ์
์ถ๊ฐ์ ์ผ๋ก homebrew/cask-fonts ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ฑ๋กํฉ๋๋ค
# repository ๋ฑ๋ก์ tap ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค
$ brew tap homebrew/cask-fonts
==> Tapping homebrew/cask-fonts
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-fonts'...
remote: Enumerating objects: 1205, done.
remote: Counting objects: 100% (1205/1205), done.
remote: Compressing objects: 100% (745/745), done.
remote: Total 1205 (delta 761), reused 549 (delta 457), pack-reused 0
Receiving objects: 100% (1205/1205), 232.72 KiB | 56.00 KiB/s, done.
Resolving deltas: 100% (761/761), done.
Tapped 1182 casks (1,223 files, 1.1MB).
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ฑ๋กํ์ผ๋, ๋ค์ ํฐํธ ์ค์น๋ฅผ ์๋ํด๋ณผ๊ฒ์
$ brew cask install font-fira-code
Updating Homebrew...
==> Satisfying dependencies
==> Downloading https://github.com/tonsky/FiraCode/releases/download/1.206/FiraCode_1.206.zip
==> Verifying SHA-256 checksum for Cask 'font-fira-code'.
==> Installing Cask font-fira-code
==> Moving Font 'FiraCode-Bold.otf' to '/Users/doondoony/Library/Fonts/FiraCode-Bold.otf'.
==> Moving Font 'FiraCode-Light.otf' to '/Users/doondoony/Library/Fonts/FiraCode-Light.otf'.
==> Moving Font 'FiraCode-Medium.otf' to '/Users/doondoony/Library/Fonts/FiraCode-Medium.otf'.
==> Moving Font 'FiraCode-Regular.otf' to '/Users/doondoony/Library/Fonts/FiraCode-Regular.otf'.
==> Moving Font 'FiraCode-Retina.otf' to '/Users/doondoony/Library/Fonts/FiraCode-Retina.otf'.
๐บ font-fira-code was successfully installed!```
์ ์์ ์ผ๋ก ์ค์น๋๋ค์! Font Book ์์ ์ ์ค์น๋์๋์ง ํ์ธํด๋ณด์ธ์
```bash
# ๐ ์ง์ ์ค์น ์๋ฃ!
$ ls ~/Library/fonts | grep Fira
FiraCode-Bold.otf
FiraCode-Light.otf
FiraCode-Medium.otf
FiraCode-Regular.otf
FiraCode-Retina.otf
tap์ ์ทจ์ํ๋ ค๋ฉด, tap ํ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ untap ํ์๋ฉด ๋ฉ๋๋ค!
$ brew untap homebrew/cask-fonts
Untapping homebrew/cask-fonts...
Untapped 1182 casks (1,224 files, 1.1MB).
homebrew ๋ ํจํค์ง ๋งค๋์ ์
๋๋ค
์ฐ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ํจํค์ง ๋งค๋์ ๊ฐ ์์ฃ ...? ๋ฐ๋ก npm ์
๋๋ค!
npm ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ค์นํ๋ฉด package.json
ํ์ผ์ ๊ธฐ๋ก๋๊ณ
package.lock
ํ์ผ์ ์ค์น ํ๊ฒฝ์ด ๋จ๋๋ฐ์
homebrew ์๋ ๋น์ทํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ฐ๋ก brew bundle ์
๋๋ค!
brew bundle ๊ธฐ๋ฅ์ ํตํด, brew ์ brew cask ๋ก ์ค์นํ ํจํค์ง ๋ชฉ๋ก์
Brewfile ์ ์ ์ฅํ ์ ์์ต๋๋ค
์๋์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค
$ brew bundle dump
์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ธ๊น์ง homebrew ๋ก ์ค์นํ ๋ชจ๋ ํจํค์ง๋ฅผ
ํ์ฌ ๊ฒฝ๋ก์ Brewfile
๋ก ์ ์ฅํฉ๋๋ค
Brewfile ์ ์ ์ ์ฅ ๋์๋์ง ํ์ธํด ๋ณผ๊น์?
$ cat Brewfile
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/cask-versions"
tap "homebrew/core"
tap "homebrew/services"
brew "ffmpeg"
brew "fzf"
...
๋ง์ฝ Brewfile ์ ๋ง๋ ๋ค์ ๋ช ๊ฐ์ง ํจํค์ง๋ฅผ ๋ ์ค์นํ๊ณ , Brewfile ๋ชฉ๋ก์ ๊ฐฑ์ ํ๊ณ ์ถ๋ค๋ฉด
--force
์ต์
์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค
$ brew bundle dump --force # Brewfile์ ๋ด์ฉ์ ๋ฎ์ด์์๋๋ค
๊ทธ๋ผ ์ด๋ ๊ฒ ์ ์ฅํ ํจํค์ง ๋ชฉ๋ก์ ์ธ์ ์ธ๊น์?
๋งฅ๋ถ์ ํฌ๋งทํ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๊ฒ ์ฃ ? ๋๋ ํ์ฌ์ ๋ด PC์ ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ถ๋ค๋ฉด
Brewfile ๋ง ๋ณต์ฌํด์ ์ค์นํ๋ฉด, ์ผ์ผ์ด ํ๋ก๊ทธ๋จ ๋ค์ด๋ก๋ ํ์ด์ง ์ฐพ์๋ค๋๊ณ ํ๋ ์๊ณ ์์ด
์๋ ๋ช
๋ น์ด๋ง ์
๋ ฅํ๊ณ , โ๏ธ ์ปคํผ ํ ์ ๋ง์๊ณ ์ค์๋ฉด ๋ฉ๋๋ค
# Brewfile ์ด ์๋ ๊ฒฝ๋ก์์
$ brew bundle
์ ๋ ํฌ๋งท์ ์์ฃผํ๋ ์ด์ํ ๋ณ์ด ์์ด์, ๊ต์ฅํ ์ ์ฉํ๊ฒ ์ฌ์ฉํ๊ณ ์์ต๋๋ค!
homebrew ๋ช
๋ น์ด ์ค์์๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ช
๋ น์ด๋ฅผ ์กฐ๊ธ ์๊ฐ ํด๋๋ฆด๊ฒ์
install๊ณผ search๋ ์์์ ๋ง์ด ๋ฑ์ฅํด์ ์ค๋ช
์ ์ ์ธํฉ๋๋ค!
1. uninstall
์๋ฏธ ๊ทธ๋๋ก ์ค์นํ ๊ฒ๋ค์ ์ญ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค
$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/10.5... (1,705 files, 20.8MB)
install ๊ณผ uninstall ๋ค์ ์ธ์๋ ์ฌ๋ฌ๊ฐ๊ฐ ์ฌ ์ ์์ต๋๋ค (์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ ๋ฒ์ ์ค์นํ๊ณ ์ง์ฐ๋ ๊ฒ ๊ฐ๋ฅํฉ๋๋ค!)
$ brew cask uninstall font-fira-code visual-studio-code
==> Uninstalling Cask font-fira-code
==> Backing Font 'FiraCode-Bold.otf' up to '/usr/local/Caskroom/font-fira-code/1.206/otf/FiraCode-Bold.otf'.
==> Removing Font '/Users/doondoony/Library/Fonts/FiraCode-Bold.otf'.
==> Backing Font 'FiraCode-Light.otf' up to '/usr/local/Caskroom/font-fira-code/1.206/otf/FiraCode-Light.otf'.
==> Removing Font '/Users/doondoony/Library/Fonts/FiraCode-Light.otf'.
==> Backing Font 'FiraCode-Medium.otf' up to '/usr/local/Caskroom/font-fira-code/1.206/otf/FiraCode-Medium.otf'.
==> Removing Font '/Users/doondoony/Library/Fonts/FiraCode-Medium.otf'.
==> Backing Font 'FiraCode-Regular.otf' up to '/usr/local/Caskroom/font-fira-code/1.206/otf/FiraCode-Regular.otf'.
==> Removing Font '/Users/doondoony/Library/Fonts/FiraCode-Regular.otf'.
==> Backing Font 'FiraCode-Retina.otf' up to '/usr/local/Caskroom/font-fira-code/1.206/otf/FiraCode-Retina.otf'.
==> Removing Font '/Users/doondoony/Library/Fonts/FiraCode-Retina.otf'.
==> Purging files for version 1.206 of Cask font-fira-code
==> Uninstalling Cask visual-studio-code
==> Backing App 'Visual Studio Code.app' up to '/usr/local/Caskroom/visual-studio-code/1.28.2,7f3ce96ff4729c91352ae6
==> Removing App '/Applications/Visual Studio Code.app'.
==> Unlinking Binary '/usr/local/bin/code'.
==> Purging files for version 1.28.2,7f3ce96ff4729c91352ae6def877e59c561f4850 of Cask visual-studio-code
2. cleanup
์ด์ ๋ฒ์ ์ ํ๋ก๊ทธ๋จ๋ค์ homebrew ์์๋ ์ง์ฐ์ง ์๊ณ ๋ณด๊ดํ๋๋ฐ
๋ ์ด์ ํ์ํ์ง ์๋ค๋ฉด ์ญ์ ํ ์ ์์ต๋๋ค
์์ฉ ํ๋ก๊ทธ๋จ๋ค์ ๊ฒฝ์ฐ์๋ ์ฉ๋์ด ํฌ๊ธฐ ๋๋ฌธ์
์ฃผ๊ธฐ์ ์ผ๋ก cleanup ํด์ฃผ๋ฉด ๋ถํ์ํ ํ๋ ๋์คํฌ ์ฉ๋์ ๋ค์ ํ๋ณดํ ์ ์์ต๋๋ค
$ brew cleanup # 9์ 30์ผ ์ดํ๋ก brew cask cleanup ์ brew cleanup ์ผ๋ก ํต์ผ ๋์์ต๋๋ค
3. upgrade
์ค์น๋ ํจํค์ง๋ค์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํฉ๋๋ค
$ brew upgrade # brew ๋ก ์ค์นํ ํจํค์ง๋ฅผ ์
๊ทธ๋ ์ด๋ ํฉ๋๋ค
$ brew cask upgrade # brew cask ๋ก ์ค์นํ ํจํค์ง๋ค์ ์
๊ทธ๋ ์ด๋ ํฉ๋๋ค
4. update
homebrew ์ ๋ฒ์ ๊ณผ, formulae ์ ๋ฒ์ ์ ์
๋ฐ์ดํธ ํฉ๋๋ค
formulae ๋ brew search ๋ฅผ ํ์ ๋
ํจํค์ง๋ฅผ ๊ฒ์ํ๋ online package browser ์
๋๋ค!
$ brew update
5. prune
์ฐ๊ฒฐ์ด ๋์ด์ง๊ฑฐ๋, ์ค๋๋ Symbolic link ๋ฅผ ์ฐพ์์ ์ ๊ฑฐํฉ๋๋ค
brew install ๋ก ์ค์นํ๋ฉด, ์ค์น๋ ํจํค์ง์ ์คํ ํ์ผ์
/usr/local/bin
์ symlink ๋ฅผ ์์ฑํ๋๋ฐ
๊ทธ symlink์ ์ฐ๊ฒฐ์ ํ์ธํ๊ณ ์ ๋ฆฌํ๋ค๋ ์๋ฏธ์
๋๋ค!
๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฆฌํด ์ฃผ์๋ ํธ์ด ์ข์ต๋๋ค!
$ brew prune
6. doctor
homebrew ๋ฅผ ๋๋ฌ์ผ ์ฌ๋ฌ ํ๊ฒฝ์ ๋ฌธ์ ๊ฐ ์๋์ง ์ฒดํฌํฉ๋๋ค
homebrew ๋ฅผ ์ฌ์ฉํจ์ ์์ด ๊ฐ์ถฐ์ ธ์ผ ํ ์กฐ๊ฑด์ด ๋น ์ ธ ์๊ฑฐ๋
์ค์น๊ฐ ์๋ชป๋์๊ฑฐ๋ ํ๋ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ค์ค๋ก ์ง๋จํ๊ณ
๋ฌธ์ ๋ฅผ ์ถ๋ ฅํ๊ณ , ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ณดํต ๊ฐ์ด ์ถ๋ ฅํฉ๋๋ค
$ brew doctor
Your system is ready to brew. # ์ด ๋ฉ์์ง๋ฅผ ๋ณด๋๊ฒ ๊ฐ์ฅ ์ข์ต๋๋ค! ์๋ฌด ๋ฌธ์ ์๋ค๋ ๋ป์ด๊ฑฐ๋ ์
7. list
์๋ฏธ ๊ทธ๋๋ก ์ค์น๋ ํจํค์ง ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค
$ brew list
$ brew cask list # brew cask ๋ก ์ค์นํ ํจํค์ง๋ ๋ณ๋๋ก ๋ฆฌ์คํ
๋ฉ๋๋ค
์ด ์ ๋๋ฉด ๊ฑฐ์ homebrew ์์ ์ฌ์ฉ ํ ๋ฒํ ๋๋ถ๋ถ์ ๋ช
๋ น์ด๋ฅผ ์ ๋ฆฌํ ๋ฏ ํฉ๋๋ค
์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ์ ์ด ์์ผ์๋ฉด brew commands
๋๋ ๊ณต์ ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์!
2016๋
์ ํ์ฌ์์ ์ฒ์ ๋งฅ๋ถ ํ๋ก 2014๋ฅผ ๋ฐ๊ณ ๋๋ฌด ์ข์์ ์ด์ฌํ ๊ณต๋ถํ๋ ๊ธฐ์ต์ด ๋ฉ๋๋ค!
(๊ทธ ๋๋ ๊ฐ๋ฐ์๋ ์๋์์์ง๋ง์)
ํ๋ก๊ทธ๋จ ์ค์น๋, ์ง์ฐ๋๊ฒ๋ ๋๋ฌด ๋ฏ์ค๊ณ ์ด๋ ค์ ์๋๋ฐ 2๋
์ด ์ง๋ ์ง๊ธ
์ด๋ ๊ฒ ๋๊ตฐ๊ฐ์๊ฒ ๋ ๋์์ด ๋๋ ๊ธ์ ์ ์ ์ ์๋ค๋ ๋ญ๊ฐ ๊ธฐ๋ถ์ด ๋ฌํ๋ค์
homebrew ๊ฐ ์๋ฒฝํ ํจํค์ง ๋งค๋์ ๋ ์๋๋๋ค
์ ๊น ์ฌ๋ก๋ฅผ ๋ค์ด๋ณด์๋ฉด... nodejs ๋ homebrew ์ ์ ๋ง์ง ์์ต๋๋ค
nodejs ๋ homebrew ๋ก ์ค์น ํ์๋๊ฑธ ์ถ์ฒํ์ง ์์ต๋๋ค. ๋ง์ ์ถฉ๋์ด ์์ต๋๋ค.
nodejs ๋ฅผ ๊ณต์ ํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ค์น๋ ํด๋ณด๊ณ
n ์ด๋ผ๋ ๋
ธ๋ ๋ฒ์ ๋งค๋์ ๋ ์ฌ์ฉํด ๋ดค์์ง๋ง
์ ๋ nvm ์ด ์ ์ผ ์์ ์ ์ธ๊ฒ ๊ฐ์ต๋๋ค!
nvm ์ ์ฌ์ฉํ์ธ์!
์๋ฌ๋ฅผ ์ฌํํ์ง ๋ชปํด ์ด๋ ๊ฒ ๊ทผ๊ฑฐ์์ด ๋ง์๋๋ฆฌ๋๊ฒ ๊ฐ์ ์ฃ์กํ๋ค์...
๊ฒฝํ์ ์ํ ์ถ์ฒ์ด๋ ๋ฏฟ์ง ์์ผ์
๋ ๋ฉ๋๋ค!
์๋ฒฝํ์ง๋ ์์ง๋ง ๊ทธ ๋ถ๋ถ์ ๋ด๋ถ ๋์์ ์ ์๊ณ ์ฌ์ฉํ๋๊ฑธ๋ก ๋ณด์ํ๋ค๋ฉด
ํ๋ก๊ทธ๋จ์ ์ข ๋ ํธ๋ฆฌํ๊ณ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค
oh-my-zsh ๋ ๋ง์ฐฌ๊ฐ์ง๋ก zsh ์ ์๋ฒฝํ ํํธ๋๋ ์๋์ง๋ง
fish ์ ์์ bash ๋ฅผ ์ฐ๋ฉด์ ๊ฒฐ๊ตญ oh-my-zsh ๋ก ๋์์ค๊ฒ ๋๋๋ผ๊ตฌ์
homebrew ๋ oh-my-zsh ๋ "์ ์ด๊ฑฐ ์์ ์ฉ์ด์ ๊ผญ ์ฐ์ธ์!" ๋ ์๋๋๋ค
์ด๋ฐ ์ค์ ์ ๊ฐ์ธ์ ์ทจํฅ์ด๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ํ๋์ ๋ง์กฑ ํ์๊ธฐ ๋ณด๋ค๋
์ข๋ค๋๊ฑฐ ๋ค ์จ๋ณด์๊ณ , ๋ณธ์ธ์๊ฒ ๋ง๋ ์ค์ ์ ์ฐพ๋๊ฒ ์ค์ํ ๊ฒ ๊ฐ์ต๋๋ค
์ค๋๋ ๊ธด ๊ธ ์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
๋ค์์๋ iTerm ์กฐ๊ธ ๊พธ๋ฉฐ๋ณด๊ธฐ, ๊ด์ฐฎ์ oh-my-zsh ํ
๋ง
๋งฅ๋ถ ํ๊ฒฝ์ค์ , ์ธ๋งํ ์์ฉํ๋ก๊ทธ๋จ ๋ช ๊ฐ์ง ์๊ฐํ๊ฒ ์ต๋๋ค
๊ธ ๋ด์ฉ์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค! oh-my-zsh ๋ ์ ํํ ๊ผญ ํ์ํ๋ฏ.. ์ด ๋ง์ velog ๋ฅผ ๊ณ์ ๋ค์ด์ค๊ฒ ๋๋๊ฑฐ ๊ฐ๋ค์. ์ถ๊ฐ๋ก ์ด๋ ๊ฒ ๋ธ๋ก๊ทธ ๊ธ ๊น๋ํ๊ฒ ์์ฐ๋ ์ฌ๋๋ค ์ฐธ ๋ถ๋ฌ์์.
ํ๋ฌ์์ ๋งฅ๋ถ ํ๋ก ์ฌ๊ณ !!!
ํ๊ฒฝ ์ค์ ํ ์๊ฐํ๋ฉด ๋๊ทผ๋๊ทผ