잔나 테마 라이선스가 확인되지 않았습니다. 테마 옵션 페이지로 이동하여 라이선스를 확인하세요. 각 도메인 이름에 대해 단일 라이선스가 필요합니다.

Zsh가 일상적인 사용자 경험 측면에서 Bash보다 우수한 이유는 무엇입니까?

Bash를 Zsh로 대체해야 하는 3가지 이유

Linux나 macOS 개발자나 고급 사용자에게 터미널 작업은 필수적인 부분입니다. 시간이 지남에 따라 많은 사람들이 Bash는 단순함에도 불구하고 더 이상 매끄럽고 빠른 환경을 제공하기에 충분하지 않다는 것을 깨달았습니다. 바로 이러한 이유로 Zsh가 고급 자동 완성, 플러그인 관리, 개선된 터미널 디자인 등 더욱 스마트한 도구를 제공하는 현대적인 대안으로 부상하고 있습니다. 이러한 작은 디테일들이 생산성에 큰 변화를 가져오고 사용자에게 일상 환경을 더욱 효과적으로 제어할 수 있는 기능을 제공합니다. 이 글에서는 Zsh가 전 세계 개발자들이 선호하는 대안이 된 이유를 살펴보겠습니다.

일상적인 사용자 경험에서 Zsh가 Bash보다 우수한 이유는 무엇입니까?

터미널을 자주 사용하신다면 긴 명령어를 입력하는 데서 오는 불편함을 자주 경험하셨을 겁니다. Bash의 탭 자동 완성 기능은 비효율적이고, 파일 경로는 입력하기 번거로우며, 오타는 끊임없이 골칫거리입니다. Zsh가 이러한 문제를 해결하고 터미널 워크플로우를 개선하는 데에는 세 가지 설득력 있는 이유가 있습니다.

수천 가지 문제를 해결하기 위한 포괄적인 애드온 생태계

셸을 기본 상태로 사용하는 것은 번거로운 작업입니다. 진정한 생산성을 위해 필요한 유용하고 편리한 기능이 부족한 경우가 많기 때문입니다. 예를 들어, 긴 명령을 작성하는 것은 오류가 발생할 경우 지루하고 정당화될 수 없습니다. 간단한 셸의 기능을 향상시키고 사용을 크게 간소화하는 기능을 제공할 방법이 필요합니다.

셸에 추가 기능을 제공하려면 다음 방법 중 하나를 사용할 수 있습니다. 셸 구성 파일을 직접 수정하고 사용자 정의 함수를 추가합니다. 예를 들어, 셸 구성 파일에 별칭이나 함수를 삽입하여 해당 함수를 셸 환경에 영구적으로 추가할 수 있습니다.

foo() {
  echo "This is the foo function"
}

이전 예제에서는 "foo"라는 재사용 가능한 함수를 제공하는데, 이 함수는 기본적인 메시지만 출력합니다. 명령으로 사용할 수 있습니다. UI 사용자 지정은 개인화된 도구에 흔하고 필수적이지만, 매우 수동적인 접근 방식이기 때문에 장기적으로는 원하는 것보다 더 많은 노력이 필요할 수 있습니다.

또 다른 (그리고 종종 더 나은) 접근 방식은 플러그인을 사용하는 것입니다. 플러그인은 다른 사람이 작성, 테스트, 게시한 UI 함수들의 패키지일 뿐이므로, 모든 어려운 작업은 자동으로 처리됩니다. 플러그인을 설치하려면 일반적으로 UI 프레임워크를 사용하는데, 이 프레임워크 자체가 UI 함수들로 구성되어 있습니다. UI 프레임워크는 UI 환경을 설정하고, 플러그인 설치 및 활성화를 용이하게 하며, 추가 기능을 제공하는 경우가 많습니다.

Zsh는 플러그인 친화적인 환경을 구축한 최초의 사용자 인터페이스였으며, Oh My Zsh라는 프레임워크를 사용했습니다. 수년 후, Zsh 생태계는 다음을 포함하는 수준으로 성숙해졌습니다. 수천 개의 추가 기능과 기능 그리고 프레임워크. 많은 사람들이 Oh My Zsh를 추천하지만 저는 지닛 1초 미만의 짧은 시간을 넘지 않는 시작 속도에 초점을 맞추기 때문입니다.

어떤 프레임워크를 선택하든, 다양한 Zsh 플러그인을 선택할 수 있으며, 모두 누군가 이전에 겪었던 문제를 해결해 줍니다. 플러그인을 조사하는 데 시간을 투자하면 장기적으로 상당한 효율성 향상으로 이어질 수 있으므로 가치 있는 투자입니다. 저는 유튜브를 스크롤하는 대신 플러그인을 자주 탐색하며, 미루는 시간을 생산성 향상으로 대체합니다.

뛰어난 완성도를 갖춘 스마트한 명령 지원

앞서 언급했듯이, 긴 명령을 입력했는데 명령줄 오류가 발생하는 것은 시간도 많이 걸리고 짜증나는 일입니다. 우리의 서투른 인간 행동을 억제하기 위한 안전장치가 필요한데, 바로 그것이 명령줄 완성 기능이 하는 일입니다. 명령을 입력하고 Tab 키를 누르면 명령줄 인터페이스에 사용 가능한 모든 옵션이 표시됩니다.

Zsh가 Bash보다 일상적인 사용자 경험 측면에서 우수한 이유는 무엇입니까?

Bash는 셸 완성 기능을 제공하지만, 선택 과정이 번거로워서 한 옵션을 완료하는 데 Tab 키를 10~15번 눌러야 하는 경우가 많습니다. Zsh 완성 기능이 기본적으로 더 뛰어나지만, 플러그인과 프레임워크를 사용하면 기능이 크게 향상됩니다.

Zsh가 Bash보다 일상적인 사용자 경험 측면에서 우수한 이유는 무엇입니까? 터미널 창에는 ls 명령에 대한 z-shell 완성 옵션 목록이 표시되고, 옵션은 수직으로 표시되며 fzf 명령으로 보완됩니다. Zsh가 Bash보다 일상적인 사용자 경험 측면에서 우수한 이유는 무엇입니까?

이전 이미지는 향상된 Zsh 완성 프로세스를 보여줍니다. fzf 도구를 활용한 추가 기능이 있습니다. Fzf는 대략적인 검색을 사용하여 선택 범위를 즉시 좁힐 수 있는 필수 도구입니다. 완료 작업과 함께 사용하면 입력 내용이 완벽할 필요는 없습니다. fzf는 올바른 옵션을 찾는 데 도움을 줍니다. 수십 개의 명령을 빠르게 연속해서 입력해야 하거나 완벽한 철자를 확인할 시간이 부족할 때 유용합니다.

명령어 생성은 예술이 아닌 순전히 실용적인 과정이므로, 셸 기능은 최대한 효율적으로 만드는 데 중점을 두어야 합니다. Zsh는 뛰어난 명령어 완성 지원으로 이 작업을 훌륭하게 수행합니다. Zsh의 완성 시스템이 Zsh만큼 좋지 않았다면 셸을 오래 사용할 수 없었을 것입니다.

Zsh 명령줄 편집기를 사용한 스마트 명령줄 편집

명령줄은 단순히 명령을 입력하는 용도가 아니라, 편집도 가능한 경우가 많습니다. Zsh와 Bash는 모두 강력한 명령줄 편집기를 제공하며, 이를 통해 명령 텍스트를 입력하기 전에 고급 조작 기능을 제공합니다.

Bash는 다양한 소프트웨어 프로젝트에서 사용되는 범용 명령줄 편집기인 GNU Readline을 사용합니다. 이 편집기를 사용하면 Emacs 또는 Vi 키 바인딩을 사용하여 명령줄을 편집할 수 있어 텍스트 편집기를 사용하는 것과 유사한 편집 과정을 경험할 수 있습니다. Readline은 구성 가능하지만 사용자 정의 C 코드를 작성하지 않고는 확장할 수 없습니다. Zsh(ZLE) 명령줄 편집기는 셸 스크립트를 통해 확장할 수 있다는 점에서 다른 접근 방식을 취합니다. ZLE의 확장성은 구문 강조, 사용자 정의 요소, Emacs 및 Vi 스타일 키 바인딩 지원과 같은 강력하고 커뮤니티 중심적인 기능을 제공합니다.

제 생각에 ZLE를 진정으로 차별화하는 요소는 바로 요소입니다. 요소는 일반적으로 키보드 단축키를 통해 활성화되는 셸 함수입니다. 요소는 명령줄 접근 기능을 제공하며, 명령을 수락하기 전에 셸 명령을 실행할 수 있도록 합니다. 이는 워크플로우를 간소화할 수 있는 엄청난 가능성을 열어줍니다.

제가 가장 좋아하는 두 가지 도구는 Git(소스 코드 추적기)을 변경하고 파일을 선택하는 것을 더 쉽게 해줍니다.

Git 도구

저는 소스 코드 변경 사항을 추적하고 검토하기 위해 Git을 많이 사용합니다. 첫 번째 도구는 커밋 명령을 간소화해 줍니다. Git에서 커밋 작업을 수행하는 것은 반복적인 작업이며, 설명 메시지를 포함하여 매번 전체 명령을 작성하는 것은 지루합니다.

git commit --all --message "make lots of bugs"

"git commit -all -message"를 수십 번 입력하다 보니 반복하는 게 너무 지루해지기 시작했습니다. 그래서 다음 도구를 사용하고 있습니다.

git_commit_with_message() {
  local msg=$BUFFER
  BUFFER="git commit --all --message \"${msg}\""
  zle accept-line
}
zle -N git_commit_with_message
bindkey "\e^M" git_commit_with_message

Zsh가 일상적인 사용자 경험 측면에서 Bash보다 우수한 이유는 무엇입니까?

Zsh가 Bash보다 일상적인 사용 경험 측면에서 우수한 이유는 무엇입니까?

이전 셸 함수를 .zshrc 파일에 넣고 다시 로드합니다. 그런 다음 설명 메시지를 입력하고 Alt+Enter를 눌러 Git 커밋을 수행할 수 있습니다. 그러면 도구가 `git commit -all -message` 명령으로 해당 메시지를 래핑합니다. 이렇게 하면 장기적으로 많은 에너지를 절약할 수 있습니다.

경로 선택 도구

두 번째 도구는 파일 시스템 경로를 직접 입력하는 대신 파일 관리자를 사용하여 선택합니다. 긴 파일 경로를 입력하는 것은, 특히 복잡한 폴더 구조를 탐색할 때 매우 번거롭습니다.

yazi_pick_path() {
  local file=$(yazi --chooser-file=>(cat))

  [[ -z "$file" ]] && zle redisplay && return

  LBUFFER+="\"$file\""
  zle redisplay
}

zle -N yazi_pick_path
bindkey '\ey' yazi_pick_path

이제 명령을 입력할 때 경로가 필요할 때 Alt+Y를 누르면 Yazi 파일 관리자 창이 터미널에 열립니다. 파일이나 폴더를 선택하고 Enter 키를 누르면 Yazi가 따옴표 사이에 경로를 명령줄에 자동으로 삽입해 줍니다.

강력한 ZLE 시스템

이러한 도구를 사용하면 명령 입력에서 번거로운 요소를 제거할 수 있습니다. ZSH는 강력한 시스템이며, 셸 스크립팅에 대한 약간의 지식만 있으면 복잡한 명령 작성을 크게 간소화할 수 있습니다. 이는 ZSH를 진정한 확장성을 제공하는 기능 중 하나입니다.

Bash에는 유용한 애드온을 제공하는 인기 프레임워크(Bash-it과 Oh My Bash)가 있지만, Zsh 생태계만큼 훌륭하다고는 생각하지 않습니다. 게다가 Zsh는 훨씬 더 진보된 줄 완성 및 편집 시스템도 제공합니다. 이 세 가지 강력한 시스템 덕분에 다른 사람들의 작업을 활용하고 Bash에서는 어려웠던 방식으로 제 환경을 맞춤 설정할 수 있습니다.

Bash에서 Zsh로의 전환은 단순한 외형적 변화가 아니라, 더욱 스마트하고 체계적인 작업 환경을 향한 한 걸음입니다. 고급 도구와 광범위한 사용자 정의 옵션을 갖춘 Zsh는 터미널 작업을 더욱 빠르고 즐겁게 만들어 줍니다. Bash는 여전히 효율적인 성능을 제공하지만, Zsh는 기본적인 기능 그 이상을 제공합니다. 사용자에게 맞춰 조정되는 환경을 제공하여 사용자가 입력하는 모든 명령에 소요되는 시간을 절약해 줍니다.

맨 위로 이동 버튼