macOS 는 유닉스 기반의 OS 로 개발을 하다보면 터미널을 많이 사용하기 마련인데 기본으로 제공되는 터미널은 너무 빈약합니다. PuTTY 같은 다른 터미널 클라이언트를 사용했던 분들이라면 더더욱 그럴거구요. 기본적인 색깔 구분도 안되서 사용이 쉽지 않았습니다.
iTerm2 + zsh + oh my zsh
터미널 관련 라이브러리들을 찾다보니 zsh 라는 쉘과 Oh my zsh 라는 프레임워크 그리고 iTerm2 라는 애플리케이션을 조합해서 많이들 사용하시더라구요. 어떤 점이 좋아서 사용하는지 하나씩 확인해보겠습니다.
Z shell (zsh)
일단 기본 쉘인 bash 를 대체할만한 쉘을 살펴보겠습니다. zsh 는 기존 bash, ksh, tcsh 의 일부 기능과 유용한 기능을 더한 쉘입니다.
Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added.
zsh 를 사용하면서 느낄 수 있는 장점들은 다음과 같습니다.
- 컨텍스트 기반 자동완성 기능 (tab)
- 다양하고 예쁜 테마와 플러그인
- 스펠링 체크
- history 기능
zsh 설치하기
기본적으로 zsh 가 설치되어 있습니다. 다음 명령어로 현재 버전을 확인할 수 있습니다.
1 | $ zsh --version |
최신 버전이 아닐 경우 다음 명령어로 업그레이드 해줄 수 있습니다.
1 | $ brew update |
업그레이드 후 터미널을 재시작해보면 새로운 버전이 적용된 것을 확인할 수 있습니다.
1 | $ zsh --version |
기본 shell 변경하기
현재 사용하고 있는 쉘을 확인해보겠습니다.
1 | $ echo $SHELL |
기본적으로 사용가능한 쉘은 다음 명령어로 확인할 수 있습니다.
1 | cat /etc/shells |
결과를 보시면 /bin/zsh
라는 경로에 zsh 가 이미 설치되어있는 걸 확인할 수 있는데요, 우리가 brew 로 새롭게 설치한 최신 버전을 등록해줘야 합니다.
1 | # List of acceptable shells for chpass(1). |
현재 zsh 경로를 확인하고 /etc/shells
를 열어 맨 마지막에 추가해줍니다.
1 | $ which zsh |
그럼 다음 명령어로 기본 쉘을 변경합니다.
1 | $ chsh -s `which zsh` |
만약 /etc/shells
에 zsh 경로를 추가하지 않았다면 다음과 같은 에러가 발생합니다.
1 | chsh: /usr/local/bin/zsh: non-standard shell |
Oh My Zsh
zsh 는 특히나 Oh my zsh 를 이용해서 테마와 플러그인들을 적용하는 것이 유용합니다. zsh 의 기능을 확장시켜주고 테마와 플러그인을 사용할 수 있도록 도와주는 것이 Oh my zsh 입니다.
Oh-My-Zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and a few things that make you shout…
oh my zsh 설치하기
다음 명령어를 이용해서 설치합니다.
1 | % sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
강력해진 자동완성 tab
tab 을 이용해서 자동완성 기능을 이용하는데 좀 더 파워풀합니다. tab 을 누르면 옵션을 보여주고 한번 더 탭을 누르면 방향키를 이용해 선택할 수 있습니다.
1 | % cd d |
이 뿐만 아니라 각종 명령어의 다양한 옵션들을 보여줍니다.
1 | % git r |
히스토리
폴더를 이동하다보면 바로 이전 폴더로 돌아가야할 때가 있습니다. 그럴 땐 다음 명령어면 쉽게 이동할 수 있습니다.
1 | % cd - |
그런데 이전의 이전 폴더로 가려면 어떻게 해야할까요? cd -
상태에서 탭을 누르면 여태까지 이동했던 폴더의 히스토리를 보여줍니다. 선택해서 이동할 수 있습니다 (최대 10개). 예시에서는 좀 간단한 폴더들이었지만 복잡한 폴더 구조를 넘나들 때는 더 유용합니다.
1 | % cd - |
Spelling 체크
스펠링 체크를 이용해서 명령어를 잘못친 경우 바로잡아 줄 수 있습니다. 다음 명령어로 옵션을 켤 수 있습니다.
1 | % setopt correct |
1 | % gut add |
상위 폴더로 이동하기
다음은 bash 에서 상위 폴더로 이동하는 명령어죠
1 | $ cd .. |
상위에 상위, 그 상위까지 올라가려면 좀 귀찮습니다.
1 | $ cd ../../.. |
oh my zsh 에서는 다음과 같이 점의 갯수를 이용해서 이동할 레벨을 지정할 수 있습니다.
1 | % cd .. # 상위 |
테마 변경하기
테마 에서 테마의 스크린샷을 확인하고 ~/.zshrc
를 열고 테마명을 지정해주면 테마를 설정할 수 있습니다.
1 | ZSH_THEME="robbyrussell" # 기본 테마 |
어떤 테마들이 있는지 몇 개 살펴볼까요?
테마가 너무 많아서 고르기 귀찮을 때는 켤 때마다 랜덤으로 테마를 바꿔줄 수도 있습니다. 저는 이걸 사용하는데 재밌네요.
1 | ZSH_THEME="random" |
그럼 터미널을 켤 때마다 다음 메시지와 함께 랜덤으로 선택된 테마가 적용됩니다.
1 | Last login: Wed May 30 20:33:02 on console |
테마 기능이 필요없을 땐 다음과 같이 테마 기능을 끌 수 있습니다.
1 | ZSH_THEME="" |
iTerm2
iTerm2 는 기본 터미널에 기능을 확장한 무료 애플리케이션입니다. 저 같은 경우는 기본 터미널에 oh my zsh 면 충분해서 잘 사용하지 않지만, 쉘을 많이 사용하시는 분들이라면 유용하실 것 같습니다.
유용한 단축키
터미널 검색하기
Command⌘ + f검색 결과에서 탐색하기
Command⌘ + Shift⇧ + g전역 검색하기
Command⌘ + Option⌥ + e클립보드 이력보기
Command⌘ + Shift⇧ + h탭 열기
Command⌘ + t탭 차례로 이동
Ctrl + tab특정 탭 이동 (탭 번호)
Command⌘ + 1창 세로 분할
Command⌘ + d창 가로 분할
Command⌘ + Shift⇧ + d화면 포커스 이동
Command⌘ + [ 또는 ]현재 포커스 찾기
Command⌘ + /탭 닫기
Command⌘ + w이상으로 기본 터미널을 대체할 수 있는 방법을 살펴봤습니다. 이 외에도 폰트를 마음에 드는 폰트로 바꾸는 것도 좋겠네요.