메뉴

문서정보

목차

소개

zsh를 사용하기로 했다. 대단한 계기가 있는 건 아니다. 맥미니를 구매해서 개발환경 세팅하는 중, 쓸만한 쉘 없냐라고 했더니 누군가 oh my zsh를 써보라고 한게 이유가 됐다.

zsh

Z shell(Zsh)는 쉘 스크링팅을 위한 command 인터프리터 및 로그인 쉘로 사용 할 수 있는 유닉스(unix)쉘이다. Zsh는 Bouren 쉘의 확장&개선된 쉘로 Bash, ksh 및 tcsh의 기능들도 일부 포함하고 있다.

zsh의 주요 기능

우분투 환경에 oh my zsh 설치

Oh My Zsh는 zsh 설정을 관리하기 위한 오픈 소스 커뮤니티 중심의 프레임워크다.

먼저 zsh를 설치한다.
# sudo apt-get install zsh 

chsh 명령을 이용해서 쉘을 변경한다.
# chsh -s /bin/zsh
# echo $SHELL
/bin/zsh

curl이나 wget을 이용해서 oh my zsh 를 설치한다.
# sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

설치가 완료되면 $HOME/.oh-my-zsh 디렉토리 밑에 테마를 비롯한 구성 파일들이 저장된다.

테마 변경

테마 관리는 zsh 기능이다. Oh my Zsh를 설치하면 테마까지 함께 설치하는데, 맘에 드는 테마를 .zshrc에 설정하면 된다. 나는 agnoster 테마를 설치했다.
# cat $HOME/.zshrc
ZSH_THEME="agnoster"

 zsh screenshot

참고

디렉토리 단계 줄이기

agnoster 테마는 디렉토리의 현재 위치를 프롬프트에 전부 표시한다. 그러다 보니 아래와 같이 터미널이 지저분해 진다. prompt_dir() 함수를 수정해서 디렉토리 표시 단계를 설정 할 수 있다.
prompt_dir() {
  # prompt_segment blue $CURRENT_FG '%~'
  prompt_segment blue $CURRENT_FG '%2~'  # 2단계까지만 출력
}

File globbing

glob패턴은 와일드 카드를 이용해서 찾고자 하는 파일이름을 지정하는 걸 의미한다. 예를 들어 Bash 쉘 명령 mv *.text textfile/은 .txt 로 끝나는 모든 파일을 textfile/ 디렉토리 밑으로 이동하라는 의미다. 여기에서 *는 "모든 문자"를 의미한다.

zsh는 file globbing를 더욱 확장해서 find로 해야 할일을 쉘 기능만으로 수행 할 수 있다.
# ls **/*.pdf
file1.pdf
fil2.pdf
dir1/file3.pdf
dir1/dir2/file4.pdf
dir3/file5.pdf
zsh에서 **뒤에 /를 사용하면 명령을 현재 디렉토리를 포함한 모든 서브 디렉토리로 확장한다. find ./ | grep *.pdf