macOS 기본 터미널 개선하기

🗓 ⏰ 소요시간 22 분

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
2
$ zsh --version
zsh 5.3 (x86_64-apple-darwin17.5.0)

최신 버전이 아닐 경우 다음 명령어로 업그레이드 해줄 수 있습니다.

1
2
$ brew update
$ brew upgrade zsh

업그레이드 후 터미널을 재시작해보면 새로운 버전이 적용된 것을 확인할 수 있습니다.

1
2
$ zsh --version
zsh 5.5.1 (x86_64-apple-darwin17.5.0)

기본 shell 변경하기

현재 사용하고 있는 쉘을 확인해보겠습니다.

1
2
$ echo $SHELL
/bin/bash

기본적으로 사용가능한 쉘은 다음 명령어로 확인할 수 있습니다.

1
cat /etc/shells

결과를 보시면 /bin/zsh 라는 경로에 zsh 가 이미 설치되어있는 걸 확인할 수 있는데요, 우리가 brew 로 새롭게 설치한 최신 버전을 등록해줘야 합니다.

1
2
3
4
5
6
7
8
9
10
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

현재 zsh 경로를 확인하고 /etc/shells 를 열어 맨 마지막에 추가해줍니다.

1
2
3
$ which zsh
/usr/local/bin/zsh
$ vi /etc/shells

그럼 다음 명령어로 기본 쉘을 변경합니다.

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
2
% cd d
Developer/ data/ dev/

이 뿐만 아니라 각종 명령어의 다양한 옵션들을 보여줍니다.

1
2
3
4
% git r
rebase -- forward-port local commits to the updated upstream head
reset -- reset current HEAD to the specified state
rm -- remove files from the working tree and from the index

히스토리

폴더를 이동하다보면 바로 이전 폴더로 돌아가야할 때가 있습니다. 그럴 땐 다음 명령어면 쉽게 이동할 수 있습니다.

1
% cd -

그런데 이전의 이전 폴더로 가려면 어떻게 해야할까요? cd - 상태에서 탭을 누르면 여태까지 이동했던 폴더의 히스토리를 보여줍니다. 선택해서 이동할 수 있습니다 (최대 10개). 예시에서는 좀 간단한 폴더들이었지만 복잡한 폴더 구조를 넘나들 때는 더 유용합니다.

1
2
3
4
5
6
% cd -
1 -- /dev
2 -- /Users
3 -- ~
4 -- ~/Dev/hexo/myBlog
5 -- ~/Dev

Spelling 체크

스펠링 체크를 이용해서 명령어를 잘못친 경우 바로잡아 줄 수 있습니다. 다음 명령어로 옵션을 켤 수 있습니다.

1
% setopt correct
1
2
% gut add
zsh: correct 'gut' to 'git' [nyae]?

상위 폴더로 이동하기

다음은 bash 에서 상위 폴더로 이동하는 명령어죠

1
$ cd ..

상위에 상위, 그 상위까지 올라가려면 좀 귀찮습니다.

1
$ cd ../../..

oh my zsh 에서는 다음과 같이 점의 갯수를 이용해서 이동할 레벨을 지정할 수 있습니다.

1
2
3
% cd ..   # 상위
% cd ... # 상위의 상위
% cd .... # 상위의 상위의 상위

테마 변경하기

테마 에서 테마의 스크린샷을 확인하고 ~/.zshrc 를 열고 테마명을 지정해주면 테마를 설정할 수 있습니다.

1
ZSH_THEME="robbyrussell" # 기본 테마

어떤 테마들이 있는지 몇 개 살펴볼까요?

nebirhos
daveverwer
af-magic
eastwood
kolo
mh

테마가 너무 많아서 고르기 귀찮을 때는 켤 때마다 랜덤으로 테마를 바꿔줄 수도 있습니다. 저는 이걸 사용하는데 재밌네요.

1
ZSH_THEME="random"

그럼 터미널을 켤 때마다 다음 메시지와 함께 랜덤으로 선택된 테마가 적용됩니다.

1
2
Last login: Wed May 30 20:33:02 on console
[oh-my-zsh] Random theme '/Users/fcreator/.oh-my-zsh/themes/sorin.zsh-theme' loaded...

테마 기능이 필요없을 땐 다음과 같이 테마 기능을 끌 수 있습니다.

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

이상으로 기본 터미널을 대체할 수 있는 방법을 살펴봤습니다. 이 외에도 폰트를 마음에 드는 폰트로 바꾸는 것도 좋겠네요.