백엔드 개발자를 위한 유용한 터미널 CLI 도구 정리하기
Terminal CLI Tools for Backend Developers
CLI(Command Line Interface)를 능숙하게 활용하면 개발 생산성을 크게 향상시킬 수 있는 것 같습니다. Warp, Homebrew, Oh My Zsh, fzf, zoxide, Powerlevel10k, eza, bat 등 다양한 도구들은 효율적인 작업 환경을 조성하여 개발자들이 더 편리하게 작업할 수 있도록 합니다.
이번 포스팅은 직접 그간 경험해본 다양한 도구들 중에서, 새로운 맥북에 터미널 개발 환경을 구축해야 한다고 했을 때 반드시 설치하는 유용한 CLI 도구들에 대해 정리해 보았습니다. 앞으로도 유용한 도구들을 발견하면 계속해서 업데이트할 예정입니다.
Warp
Warp는 IDE와 같은 사용자 친화적인 인터페이스와 유용한 기능을 제공하는 현대적인 터미널 애플리케이션입니다.
개발자들이 더 효율적으로 작업할 수 있도록 다양한 기능을 제공하며, 그 중 몇 가지를 소개하면 다음과 같습니다:
- 명령어 자동 완성: Warp는 별도의 CLI 도구를 설치할 필요 없이 스마트 명령어 자동 완성 기능을 기본적으로 제공하여 입력하는 동안 명령어와 옵션을 제안합니다. 이는 특히 긴 명령어를 입력할 때 시간을 절약할 수 있습니다.
- 코드 스니펫: 자주 사용하는 코드 조각을 스니펫으로 저장하고 필요할 때 빠르게 삽입할 수 있습니다. 이는 반복적인 작업을 줄이고 생산성을 높이는 데 도움이 됩니다.
- 터미널 세션 공유: 다른 사람과 터미널 세션을 공유할 수 있는 기능을 제공합니다. 이를 통해 원격으로 협업하거나 문제를 디버깅하는 데 유용합니다.
- 세션 복원: 터미널을 닫았다가 다시 열 때 이전 세션을 복원할 수 있습니다.
- 통합 검색: 현재 창에서 텍스트를 검색할 수 있습니다.
- 환경 설정 동기화: 여러 대의 컴퓨터에서 동일한 설정을 사용하기 위해 설정 파일을 클라우드에 동기화할 수 있습니다.
Warp는 무료와 유료 두 가지 라이센스를 제공하는데, 이 둘의 차이는 AI, 클라우드 드라이브, 협업 관련 기능과 엔터프라이즈 수준의 추가 기능 및 지원 여부입니다. 이러한 기능이 필요 없고 터미널의 기본 기능만으로도 만족할 수 있다면, 무료 버전만으로도 충분할 것입니다.
Warp를 설치하는 방법은 매우 간단합니다:
- Warp 공식 웹사이트로 이동합니다.
- 홈페이지에서 Download 버튼을 클릭하여 macOS용 설치 파일을 다운로드합니다.
- 다운로드한
Warp.dmg
파일을 열고 Warp 아이콘을 애플리케이션 폴더로 드래그하여 설치를 완료합니다.
개인적으로, iTerm에서 Warp로 넘어오게 된 계기가 프롬프트 위치 고정 기능이었습니다. 세로 모니터에 터미널을 띄워놓고 사용하는데, 프롬프트 위치를 상단으로 고정해두면 시선을 많이 이동하지 않아도 되어 작업 피로도를 줄여줍니다. 텍스트로 빽빽한 화면에서 커서 위치를 찾거나 습관적으로 clear
명령어를 수행하는 행위를 줄일 수 있었습니다. 또한, 블록 개념을 도입하여 작업을 더 명확하게 구분할 수 있고, 필요한 내용을 쉽게 복사하여 팀에 공유할 수 있습니다.
오랜 역사를 가진 iTerm 앱도 매우 훌륭하지만, 두 앱을 비교해 보면 각각 고유의창 장점이 있으며 특정 상황에서 더 유리한 기능들이 있습니다. iTerm은 여전히 CLI 환경에 익숙한 개발자들에게 많은 이점을 제공한다고 생각하지만, Warp 팀은 피드백에 빠르게 대응하고 지속적인 업데이트로 기능을 계속 추가하고 있어 Warp의 점유율이 점점 높아질 것으로 예상됩니다.
Homebrew
Homebrew는 macOS에서 소프트웨어 패키지를 쉽게 설치하고 관리할 수 있는 패키지 관리 도구입니다. Homebrew는 리눅스 Debian 및 Ubuntu의 패키지 관리 도구인 apt
, CentOS 및 Red Hat의 yum
, Arch Linux의 pacman
과 유사한 역할을 합니다. 이러한 도구들처럼 Homebrew도 macOS에서 소프트웨어를 간편하게 설치하고 관리할 수 있도록 합니다.
개발자들이 더욱 효율적으로 작업할 수 있도록 다양한 기능을 제공합니다:
- 패키지 관리: Homebrew는 macOS에서 소프트웨어 패키지를 간편하게 설치, 업데이트, 삭제할 수 있게 합니다. 이는 개발 환경을 설정하고 유지하는 데 큰 도움이 됩니다.
- 의존성 관리: 설치된 패키지의 의존성을 자동으로 관리해줍니다. 이를 통해 충돌 없이 필요한 모든 라이브러리와 도구를 설치할 수 있습니다.
- 탭과 포뮬러: Homebrew는 공식 저장소 외에도 사용자가 작성한 탭과 포뮬러를 통해 다양한 소프트웨어를 설치할 수 있습니다.
- 확장성: Homebrew Cask를 통해 GUI 애플리케이션도 쉽게 설치할 수 있으며, 개발자뿐만 아니라 일반 사용자에게도 유용합니다.
이 외에도 Homebrew는 설치된 모든 패키지를 최신 상태로 유지하고, 시스템에 설치된 패키지 목록을 쉽게 관리할 수 있는 다양한 기능을 제공합니다. 특히, 패키지 관리와 의존성 관리는 개발 환경을 설정하고 유지하는 데 매우 유용합니다.
Homebrew는 오픈 소스 프로젝트로서 누구나 자유롭게 사용할 수 있으며, 설치하는 방법도 매우 간단합니다:
- 터미널을 열고 다음 명령어를 실행하여 Homebrew를 설치합니다:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 설치가 완료되면, 아래 명령어를 입력하여 Homebrew가 제대로 설치되었는지 확인합니다:
$ brew --version
Homebrew 4.3.12
개인적으로, Homebrew를 사용하면서 macOS에서의 소프트웨어 설치와 관리가 훨씬 간편해졌습니다. 예를 들어, 개발 도구를 설치할 때마다 웹사이트를 찾아다니며 설치 파일을 다운로드하고, 이를 수동으로 관리하는 번거로움을 줄일 수 있었습니다. 또한, Homebrew의 의존성 관리 기능 덕분에 소프트웨어 간의 충돌 문제를 쉽게 해결할 수 있었습니다.
기존의 소프트웨어 설치 방식과 비교해 보면, Homebrew는 훨씬 직관적이고 효율적입니다. 특히, 새로운 패키지를 설치하거나 기존 패키지를 업데이트할 때 brew
명령어 한 줄로 모든 작업을 처리할 수 있는 점이 매우 편리합니다. Homebrew 커뮤니티는 매우 활발하여, 필요한 대부분의 소프트웨어를 Homebrew를 통해 쉽게 찾고 설치할 수 있습니다. 이는 개발 환경을 빠르고 안정적으로 구축하는 데 큰 도움이 됩니다.
Homebrew에 대한 더 자세한 내용은 Homebrew를 통한 macOS 개발 환경 개선하기에서 확인할 수 있습니다.
Oh My Zsh
Oh My Zsh는 Zsh 셸의 플러그인, 테마, 설정을 쉽게 관리할 수 있게 해주는 오픈 소스 프레임워크입니다. Zsh는 Bash보다 더 다양한 기능과 유연성을 제공하는 셸이며, Oh My Zsh는 이를 더욱 편리하게 사용할 수 있도록 도와줍니다. Oh My Zsh를 통해 개발자는 자신의 작업 환경을 쉽게 커스터마이징하고 생산성을 높일 수 있습니다.
- 플러그인 시스템: Oh My Zsh는 수많은 플러그인을 제공하여 다양한 기능을 추가할 수 있습니다. 이 플러그인들은 명령어 자동 완성, 깃 상태 표시, 파일 탐색 등 다양한 작업을 더욱 효율적으로 수행할 수 있게 도와줍니다.
- 테마 시스템: Oh My Zsh는 수백 가지의 테마를 제공하여 터미널의 외관을 쉽게 변경할 수 있습니다. 사용자는 자신의 스타일에 맞는 테마를 선택하여 작업 환경을 더 보기 좋고 유용하게 만들 수 있습니다.
- 커스터마이징: 사용자 정의가 매우 용이하여, Zsh의 설정을 자유롭게 변경할 수 있습니다.
~/.zshrc
파일을 통해 환경 변수를 설정하고, 사용하지 않는 플러그인을 비활성화하는 등 다양한 조정이 가능합니다.
Oh My Zsh를 설치하려면, 터미널에서 다음 명령어를 실행하면 됩니다:
- 대부분의 macOS 및 Linux 배포판에는 Zsh가 기본으로 설치되어 있습니다. 만약, 설치가 되어 있지 않다면, Homebrew를 사용해 설치할 수 있습니다:
# zsh 설치
$ brew install zsh
- 터미널에서 다음 명령어를 실행하여 Oh My Zsh를 설치합니다:
# Oh My Zsh 설치
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
- 설치가 완료되면 Zsh가 기본 셸로 설정되며, 터미널을 다시 열면 Oh My Zsh가 활성화된 상태로 시작됩니다. 만약 Zsh가 기본 셸로 등록되지 않은 경우, 다음 명령어를 사용해 수동으로 설정할 수 있습니다:
# zsh 기본셸 설정
$ chsh -s $(which zsh)
Oh My Zsh는 ~/.zshrc
파일을 통해 설정할 수 있으며, 이 파일은 Zsh가 실행될 때마다 로드되는 설정 파일로, 여기에서 플러그인, 테마, 환경 변수를 설정할 수 있습니다.
$ vim ~/.zshrc
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="agnoster"
...
Oh My Zsh의 테마는 매우 다양한데, ~/.zshrc
파일에서 ZSH_THEME
변수를 수정하여 테마를 변경할 수 있습니다. 기본적으로는 robbyrussell
테마가 설정되어 있습니다.
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"
Oh My Zsh 플러그인은 ~/.zshrc
파일에서 plugins
배열에 추가할 수 있으며, 몇몇 플러그인은 별도의 설치 과정이 필요합니다. 예를 들어, autosuggestions
와 syntax-highlighting
플러그인은 별도의 설치가 필요합니다. 이러한 플러그인을 설치하고 활성화하려면, 다음과 같은 단계를 따르면 됩니다:
- Git을 사용해 플러그인을 설치합니다:
# zsh-autosuggestions 설치
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting 설치
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
~/.zshrc
파일의 plugins 배열에 설치한 플러그인을 추가하여 플러그인을 활성화합니다.
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
autosuggestions
syntax-highlighting
...
)
- 설정이 반영되도록
source ~/.zshrc
명령어를 통해 Zsh를 다시 로드하거나 터미널을 재시작합니다.
$ source ~/.zshrc
Oh My Zsh는 수백 개의 플러그인을 제공하며, 그 중에서도 특히 유용한 몇 가지를 소개합니다:
- git: Git 명령어를 단축어로 사용할 수 있게 해주는 플러그인입니다. 예를 들어,
gst
는git status
,gco
는git checkout
과 같이 사용할 수 있습니다. - z: 자주 사용하는 디렉토리를 기억하여 빠르게 이동할 수 있게 해주는 플러그인입니다. 시간이 지남에 따라
z
명령어가 가장 자주 방문한 디렉토리를 기억하게 되어, 이후에는 경로를 직접 입력하지 않고도z
명령어만으로 해당 디렉토리로 이동할 수 있습니다. - autosuggestions: 이전에 입력한 명령어를 자동으로 제안해주는 플러그인입니다. 이 플러그인은 시간을 절약하고, 반복적인 작업을 줄이는 데 큰 도움이 됩니다.
- syntax-highlighting: 명령어를 입력할 때 구문을 하이라이트하여 잘못된 구문이나 명령어를 미리 확인할 수 있게 해주는 플러그인입니다.
- docker: Docker 관련 명령어를 쉽게 사용할 수 있도록 단축어를 제공하는 플러그인입니다. 이는 Docker를 자주 사용하는 개발자들에게 매우 유용합니다.
- zsh-autosuggestions: 명령어 입력 시, 사용자가 이전에 입력한 명령어를 자동으로 제안해줍니다. 사용자가 입력할 명령어를 미리 예측하여 제안해주므로 작업 속도가 빨라집니다.
- zsh-syntax-highlighting: 명령어 구문을 실시간으로 강조하여, 올바른 구문인지 확인할 수 있습니다. 특히, 복잡한 명령어를 입력할 때 유용합니다.
Warp 터미널 앱을 사용한다면, 이러한 기능들 중 많은 부분이 이미 기본으로 제공됩니다. 그러나 Oh My Zsh를 통해 추가적으로 자신의 필요에 맞게 Zsh를 확장하고 커스터마이징할 수 있습니다.
Oh My Zsh는 Zsh 셸을 유연하게 만들어주는 필수 도구입니다. 수많은 플러그인과 테마를 통해 개발자의 생산성을 크게 향상시킬 수 있으며, 쉬운 설치와 설정 방법 덕분에 누구나 쉽게 사용할 수 있습니다. Zsh를 사용한다면, Oh My Zsh는 그 경험을 한층 더 향상시켜줄 것입니다.
Powerlevel10k
Powerlevel10k는 Zsh 셸을 위한 고성능 프롬프트 테마로, 속도가 빠르고 사용자 정의가 용이한 것이 특징입니다. 이 테마는 대규모 Git 리포지토리 작업 시에도 지연 없이 빠르게 작동하며, 현재 디렉토리, Git 상태, 배터리 잔량, 시간, 날짜, 네트워크 상태 등 다양한 정보를 프롬프트에 표시할 수 있어 작업 흐름이 더욱 원활해집니다.
Powerlevel10k는 터미널을 더욱 깔끔하고 직관적으로 만들어 주어, 개발자의 작업 효율성을 크게 높여줍니다. 저처럼 개발 환경 꾸미기를 좋아하는 개발자라면, 이 테마는 매력적일 것입니다. 사용자 정의가 용이해, 자신의 작업 스타일에 맞춰 다양한 커스터마이징이 가능합니다.
macOS에서 Powerlevel10k를 설치하는 방법은 다음과 같습니다:
- Homebrew를 통해 Powerlevel10k를 설치합니다:
# Powerlevel10k 설치
$ brew install powerlevel10k
- 설치가 완료되면, 다음 명령을 실행하여 Powerlevel10k를 활성화합니다:
# Powerlevel10k 테마 등록
$ echo 'source $(brew --prefix)/share/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
- 그런 다음 터미널을 재시작하거나, 아래 명령어를 실행하여 설정을 적용합니다:
$ source ~/.zshrc
이제 Powerlevel10k가 활성화되면, 터미널을 처음 열 때 초기 설정 마법사가 자동으로 실행됩니다. 이 마법사를 통해 테마의 색상, 아이콘, 정보 표시 방식을 손쉽게 설정할 수 있습니다.
Powerlevel10k의 다양한 아이콘을 올바르게 표시하려면 Nerd Fonts가 적용된 폰트가 필요합니다. Nerd Fonts가 패치된 모노 폰트를 다운로드하거나 기존 폰트에 Nerd Fonts를 적용하는 방법은 모노 폰트에 Nerd Fonts 적용하기에서 확인할 수 있습니다.
Powerlevel10k 테마를 처음 사용하는 경우, 프롬프트 스타일은 Pure 대신 다른 옵션을 선택하는 것이 좋습니다. Pure 스타일은 이름 그대로 '순수한' 테마로, 많은 정보들이 제외된 간소한 설정이 적용됩니다.
만약 초기 설정을 건너뛰었거나 재설정하려는 경우, 아래 명령어를 실행하면 초기 설정 마법사를 다시 시작할 수 있습니다:
# Powerlevel10k 설정 마법사 실행
$ p10k configure
프롬프트의 컬러, Java와 Node를 비롯한 다양한 언어와 도구의 버전 정보, 아이콘 변경 등 추가적인 사용자 정의가 필요하다면, Powerlevel10k의 설정 파일인 .p10k.zsh
를 수정하여 손쉽게 커스터마이징할 수 있습니다.
아래 명령을 통해 Powerlevel10k 설정 파일을 열 수 있으며, macOS는 기본적으로 Xcode로 파일이 열립니다:
# Powerlevel10k 설정 파일
$ open ~/.p10k.zsh
Powerlevel10k를 사용하면 터미널 프롬프트가 더욱 직관적이고 깔끔해져, 작업 효율성이 크게 향상됩니다. 특히 Git 리포지토리 작업 시 여러 정보를 한눈에 확인할 수 있어 매우 유용합니다. 속도와 유연성 측면에서 뛰어난 이 테마는, Zsh를 사용하는 개발자들에게 적극 추천할 만한 도구입니다.
eza
eza는 ls
명령어의 현대적인 대체 도구로, 파일 및 디렉토리 목록을 더 읽기 쉽고 보기 좋게 출력해주는 CLI 파일 목록 도구입니다. eza는 ls
의 모든 기능을 지원하면서도, 컬러 출력, 아이콘 표시, 트리 구조 출력, 더 나은 레이아웃 등 추가적인 기능을 제공합니다. 이 도구는 특히, 많은 파일을 다루는 개발자들에게 유용하며, 다양한 형식의 파일을 한눈에 파악할 수 있도록 도와줍니다.
eza는 기존의 ls
명령어와 비교하여 다음과 같은 기능을 제공합니다:
- 컬러 출력: 파일 유형에 따라 색상을 다르게 표시하여, 파일을 시각적으로 구분하기 쉽게 만듭니다. 이를 통해 폴더, 파일, 링크 등을 한눈에 식별할 수 있습니다.
- 아이콘 표시: Nerd Fonts와 결합하여, 파일과 디렉토리 앞에 작은 아이콘을 표시합니다. 이를 통해 파일 유형을 시각적으로 더 쉽게 구분할 수 있습니다.
- 날짜 출력 형식: 기본적으로 사람이 읽기 쉬운 형식으로 날짜를 출력하며, 시간 정보도 함께 제공하여 파일의 최근 수정 시간을 빠르게 확인할 수 있습니다.
- 파일 크기 출력 형식:
ls
와 달리, eza는 파일 크기를 사람이 읽기 쉬운 형식으로 출력합니다. 예를 들어, 바이트 단위가 아닌 KB, MB, GB 등으로 표시됩니다. - 유연한 정렬 옵션: 다양한 정렬 옵션을 제공하여 파일을 이름, 크기, 수정 시간 등으로 쉽게 정렬할 수 있습니다.
eza는 기존의 ls
명령어를 대체하기 위해 개발된 exa의 향상된 버전입니다. exa는 ls
의 기본 기능을 확장하고 다양한 추가 기능을 제공하여 많은 개발자들에게 사랑받았으나, 유지보수가 중단되었습니다. 이에 따라 eza는 exa를 기반으로 성능과 안정성을 개선하고, 사용자 경험을 향상시키기 위해 다양한 새로운 기능을 추가한 도구입니다. eza는 ls
명령어와 동일한 방식으로 사용할 수 있으며, 대부분의 ls
옵션을 그대로 지원하기 때문에 기존 ls
사용자들도 쉽게 전환할 수 있습니다.
eza는 Homebrew를 통해 설치할 수 있습니다:
# eza 설치
$ brew install eza
설치 후, ls
대신 eza
를 사용하여 파일과 디렉토리를 나열할 수 있습니다. 기본적으로는 eza
명령어를 입력하는 것만으로도 ls
와 유사한 출력을 얻을 수 있지만, 추가적인 옵션을 사용하면 더 유용한 출력을 얻을 수 있습니다.
# 기본적인 파일 목록 출력
$ eza
data Icon\r next-env.d.ts next.config.js node_modules package-lock.json package.json postcss.config.js public README.md src tailwind.config.ts tsconfig.json yarn.lock
# 모든 파일을 자세한 정보와 함께 출력
$ eza -alh
Permissions Size User Date Modified Name
.rw-r--r-- 201 catsriding 7 Oct 2023 next-env.d.ts
.rw-r--r-- 454 catsriding 3 Mar 22:29 next.config.js
drwxr-xr-x - catsriding 7 Aug 10:42 node_modules
.rw-r--r-- 334k catsriding 28 Apr 01:37 package-lock.json
.rw-r--r-- 1.7k catsriding 7 Aug 13:04 package.json
.rw-r--r--@ 82 catsriding 7 Oct 2023 postcss.config.js
drwxr-xr-x@ - catsriding 18 May 01:03 public
.rw-r--r--@ 1.4k catsriding 7 Oct 2023 README.md
drwxr-xr-x@ - catsriding 7 Aug 18:53 src
.rw-r--r-- 624 catsriding 26 Apr 13:08 tailwind.config.ts
.rw-r--r-- 599 catsriding 10 Aug 11:48 tsconfig.json
.rw-r--r-- 191k catsriding 7 Aug 13:04 yarn.lock
...
eza는 다양한 옵션을 지원하며, 몇 가지 유용한 예시는 다음과 같습니다:
# 디렉토리 내의 모든 파일과 폴더를 자세한 정보와 함께 나열
$ eza -alh
# 파일을 수정 시간 순으로 정렬하여 나열
$ eza -alht
# 파일을 크기 순으로 정렬하여 나열
$ eza -alhS
# 아이콘을 포함하여 파일과 폴더를 나열 (Nerd Fonts 필요)
$ eza -alh --icons
기존 ls
명령어를 대체할 수 있도록 eza
를 별칭으로 설정할 수도 있습니다:
# eza 별칭 추가
$ echo "alias ls='eza'" >> ~/.zshrc
# Zsh 셸 변경사항 적용
$ source ~/.zshrc
저는 아래와 같이 추가적으로 자주 사용하는 패턴을 별칭으로 추가하여 사용하고 있습니다:
# ls aliases
alias ls="eza"
alias ll="eza -alhF --icons"
alias lt="eza -alhT --icons"
alias lsa="exa -alh --icons"
alias lst="exa -alhT --icons"
eza에서 제공하는 추가적인 기능과 옵션들에 대한 자세한 설명은 eza로 ls 대체하기에서 확인할 수 있습니다.
Nerd Fonts와 결합하여 사용하면, eza는 파일과 디렉토리 앞에 아이콘을 표시하여 더욱 직관적인 탐색 경험을 제공합니다. 이러한 시각적 요소들은 대규모 프로젝트에서 파일 구조를 파악하는 데 큰 도움이 됩니다:
$ eza -alh --icons
Permissions Size User Date Modified Name
.rw-r--r--@ 6.1k catsriding 18 Nov 2023 .DS_Store
.rw-r--r-- 22 catsriding 23 Oct 2023 .env
.rw-r--r-- 1.7k catsriding 2 Feb 20:21 .eslintrc.json
drwxr-xr-x@ - catsriding 11 Aug 12:18 .git
.rw-r--r-- 334k catsriding 28 Apr 01:37 package-lock.json
.rw-r--r--@ 1.4k catsriding 7 Oct 2023 README.md
.rw-r--r-- 599 catsriding 10 Aug 11:48 tsconfig.json
.rw-r--r-- 624 catsriding 26 Apr 13:08 tailwind.config.ts
.rw-r--r-- 191k catsriding 7 Aug 13:04 yarn.lock
...
eza를 활용하면 터미널에서의 파일 탐색 경험이 한층 개선됩니다. 특히, Git 리포지토리나 복잡한 파일 구조를 다룰 때 그 유용성을 확실히 느낄 수 있습니다.
fzf
fzf는 "fuzzy finder"의 약자로, 터미널에서 사용자가 정확한 검색어를 입력하지 않아도 관련된 항목을 인터랙티브하게 검색하고 명령어 실행, 파일 탐색 등을 빠르게 수행할 수 있게 해주는 CLI 검색 도구입니다. fzf는 단순한 텍스트 매칭뿐만 아니라, 다양한 소스에서 결과를 필터링하고 선택하는 고급 기능을 제공합니다.
개발자들이 더욱 효율적으로 작업할 수 있도록 다양한 기능을 제공합니다:
- 인터랙티브 검색: fzf는 실시간으로 필터링된 결과를 보여주는 인터랙티브 검색 기능을 제공합니다. 이 기능을 통해 파일, 디렉토리, 명령어 이력, Git 브랜치 등에서 원하는 항목을 신속하게 찾을 수 있습니다.
- 유연한 통합: fzf는 셸 스크립트나 다른 명령어와 쉽게 통합할 수 있어, 다양한 작업에 활용할 수 있습니다. 예를 들어,
grep
,find
,awk
와 같은 명령어와 함께 사용할 수 있습니다. - 다양한 입력 소스: fzf는 파일 시스템, 명령어 출력, 프로세스 목록 등 다양한 소스를 입력으로 받아 필터링할 수 있습니다. 사용자가 원하는 거의 모든 텍스트 데이터에서 검색할 수 있습니다.
- 고성능: 대량의 데이터에서도 빠르게 검색할 수 있는 최적화된 성능을 자랑합니다. 이는 특히 대규모 프로젝트나 복잡한 디렉토리 구조에서 유용합니다.
이 외에도 fzf는 텍스트 필터링, 키보드 단축키 설정, 색상 테마 조정 등 다양한 커스터마이징 옵션을 제공하여 개발자의 요구에 맞게 최적화할 수 있습니다.
fzf는 Homebrew를 통해 간편하게 설치가 가능합니다:
# fzf 설치
$ brew install fzf
가장 기본적인 활용 방법은 fzf를 단독으로 실행하여 현재 디렉토리 내의 파일이나 디렉토리를 검색하는 것입니다. 터미널에 fzf
명령어를 실행하면, 현재 디렉토리 내의 모든 파일과 디렉토리가 표시되며, 여기에 검색어를 입력하면 실시간으로 필터링하여 원하는 파일이나 디렉토리를 선택할 수 있습니다.
# fzf 검색 모드 실행
$ fzf
fzf는 다양한 상황에서 유용하게 활용될 수 있습니다. 몇 가지 대표적인 활용 사례를 소개합니다:
# 디렉토리 검색 후 이동하기
$ cd "$(find . -type d | fzf)"
# 파일 검색 후 편집기로 열기
$ vim $(fzf)
# git 브랜치 전환하기
$ git checkout $(git branch | fzf)
# 현재 실행 중인 프로세스 검색 및 종료하기
$ kill -9 $(ps -ef | fzf | awk '{print $2}')
# 환경 변수 설정하기
$ export $(printenv | fzf)
# 명령어 출력에서 특정 항목 선택하기
$ ls $(fzf)
이처럼 fzf
는 터미널에서 작업을 더욱 효율적으로 수행할 수 있게 도와주는 유용한 도구로, 다양한 커맨드와 조합하여 개발자들이 반복적인 작업을 줄이고 생산성을 높일 수 있습니다.
zoxide
zoxide는 터미널에서 자주 사용하는 디렉토리로 빠르게 이동할 수 있게 도와주는 빠르고 간편한 CLI 디렉토리 이동 도구입니다. zoxide는 기존의 cd
명령어를 대체하는 형태로 동작하며, 사용자가 자주 방문하는 디렉토리를 학습하여 더 빠르고 직관적으로 디렉토리 간 이동을 가능하게 합니다. z
, autojump
와 같은 기존 도구들의 단점을 보완하고 성능을 크게 향상시킨 도구로 주목받고 있습니다.
개발자들이 더 효율적으로 작업할 수 있도록 다양한 기능을 제공합니다:
- 자동 학습: zoxide는 사용자가 자주 이동하는 디렉토리를 자동으로 학습하여, 단축된 명령어만으로도 원하는 디렉토리로 빠르게 이동할 수 있습니다. 예를 들어,
/home/user/projects/my_project
디렉토리를 자주 방문한다면, 단순히z my
라고 입력하는 것만으로도 해당 디렉토리로 이동할 수 있습니다. - 디렉토리 랭킹: zoxide는 디렉토리 방문 빈도와 최신 사용 시간에 따라 디렉토리를 랭킹화하여 가장 적합한 디렉토리를 우선적으로 선택합니다.
- 빠른 검색:
fzf
와 통합하여, 디렉토리 목록에서 실시간으로 검색하고 선택할 수 있습니다. 이는 특히 복잡한 디렉토리 구조를 탐색할 때 유용합니다. - 크로스 플랫폼 지원: zoxide는 macOS, Linux, Windows 등 다양한 플랫폼에서 사용할 수 있으며, 대부분의 셸 (bash, zsh, fish)에서 호환됩니다.
zoxide를 설치하려면, 터미널을 열고 다음 단계를 따릅니다:
- Homebrew를 통해 zoxide를 설치합니다:
# zoxide 설치
$ brew install zoxide
- 설치가 완료되면,
.zshrc
파일에 아래 명령어 추가하여 zoxide가 셸에서 동작하도록 설정합니다:
# zoxide
eval "$(zoxide init zsh)"
- 설정을 반영하기 위해 셸을 다시 시작하거나, 터미널에서 다음 명령어를 입력합니다:
$ source ~/.zshrc
설치가 완료되었다면, zoxide의 기본 명령어 z
를 사용하여 이전에 이동했던 디렉토리로 빠르게 이동할 수 있습니다. zoxide는 방문한 디렉토리를 학습하여 히스토리를 쌓아가므로, 설치 직후에는 히스토리가 없을 수 있습니다. 따라서, z
명령어를 사용하기 전에 cd
명령어를 통한 디렉토리 이동을 통해 히스토리를 쌓아주는 것이 필요합니다.
# cd 디렉토리 이동하기
$ cd ~/workspace/ideas/waves-server
히스토리가 충분히 쌓인 후에는, z
명령어에 디렉토리의 일부분만 입력해도 해당 디렉토리로 즉시 이동할 수 있습니다:
# zoxide 바로가기 활용하기
$ z waves # ~/workspace/ideas/waves-server 디렉토리로 이동
zoxide는 fzf 통합 기능도 지원하여, 디렉토리 이동을 더욱 효율적이고 직관적으로 만듭니다. zi
명령어를 사용하면, zoxide가 학습한 디렉토리 목록이 fzf
를 통해 표시되고, 사용자는 실시간으로 필터링하여 원하는 디렉토리를 선택하고 빠르게 이동할 수 있습니다. fzf
와 결합하면, 이전에 방문한 디렉토리 목록을 실시간으로 검색하고, 원하는 디렉토리를 신속하게 선택할 수 있습니다.
zoxide는 기본적으로 z
, zi
등의 명령어를 제공하는데, 이 명령어들을 cd
명령어로 대체할 수 있습니다. 앞서 .zshrc
파일에 셸 설정을 활성화한 곳에 --cmd cd
인자를 추가합니다.
# zoxide
- $ eval "$(zoxide init zsh)"
+ $ eval "$(zoxide init --cmd cd zsh)"
이렇게 하면 cd
명령어를 사용하여 zoxide의 기능을 통합할 수 있습니다. 기존의 cd
명령어의 기능도 그대로 사용할 수 있어, zoxide의 기능을 더 유연하게 활용할 수 있습니다.
zoxide는 autojump
와 z
와 같은 도구들의 발전된 버전입니다. 기존 도구들처럼 사용자의 디렉토리 이동 패턴을 학습하여 빠르고 효율적으로 디렉토리를 이동할 수 있도록 돕지만, zoxide는 성능과 기능면에서 한층 더 향상된 경험을 제공합니다. 터미널에서 자주 디렉토리를 이동하거나 복잡한 프로젝트를 다루는 사용자에게 특히 유용하며, 터미널 작업을 더욱 부드럽고 신속하게 만들어줍니다.
bat
bat은 cat
명령어의 대체 도구로, 파일 내용을 더 읽기 쉽고 보기 좋게 출력해주는 CLI 파일 뷰어입니다. cat
명령어처럼 파일의 내용을 출력하지만, 코드 구문 강조, 파일 줄 번호 표시, 그리고 다양한 테마 적용 등의 추가 기능을 제공하여, 특히 개발자들이 코드나 로그 파일을 읽을 때 매우 유용합니다.
bat는 cat
명령어와 비교하여 다음과 같은 기능을 제공합니다:
- 구문 강조: bat는 코드 파일의 구문을 자동으로 인식하고 하이라이팅하여, 코드의 가독성을 크게 향상시킵니다. 이는 다양한 프로그래밍 언어를 지원하며, 복잡한 코드를 읽을 때 유용합니다.
- 줄 번호 표시: 기본적으로 파일의 줄 번호를 함께 표시하여, 특정 줄을 참조할 때 편리하게 사용할 수 있습니다.
- 테마 지원: 다양한 테마를 제공하여, 사용자가 선호하는 스타일로 파일 내용을 출력할 수 있습니다. 이는 사용 환경에 따라 눈에 피로를 덜 주는 테마를 선택할 수 있어, 장시간 작업 시 유용합니다.
- 파일 차이 표시: bat는 두 파일 간의 차이점을 시각적으로 비교하여 보여줄 수 있습니다. 이를 통해 파일 간의 변경 사항을 쉽게 파악할 수 있습니다.
bat는 cat
명령어를 대체하기 위해 개발된 도구로, cat
과 동일한 방식으로 사용할 수 있으며, 대부분의 cat
옵션을 그대로 지원합니다. 또한, bat는 추가적인 기능을 제공하여, 개발 환경에서 파일을 더 효율적으로 탐색하고 분석할 수 있도록 돕습니다.
bat를 설치하려면, Homebrew를 사용할 수 있습니다:
# bat 설치
$ brew install bat
설치 후, cat
대신 bat
를 사용하여 파일 내용을 출력할 수 있습니다. 기본적으로는 bat
명령어를 입력하는 것만으로도 구문 강조와 줄 번호가 포함된 출력을 얻을 수 있습니다.
# 기본적인 파일 내용 출력
$ bat [파일명]
bat는 다양한 옵션을 지원하며, 몇 가지 유용한 예시는 다음과 같습니다:
# 특정 테마를 사용하여 파일 내용 출력
$ bat --theme="OneHalfDark" 파일명
# 두 파일 간의 차이점 시각적으로 비교
$ bat --diff [파일1] [파일2]
# 여러 파일을 하나로 묶어 출력
$ bat [파일1] [파일2] [파일3]
bat
명령어에서 사용할 수 있는 옵션은 다음과 같습니다:
--help
또는-h
: 사용법과 옵션을 표시합니다.--version
또는-V
:bat
의 버전을 출력합니다.--color=[auto|never|always]
: 색상 출력 방식을 제어합니다.--style=[full|header|grid|numbers|snip]
: 출력 스타일을 설정합니다.--theme=<THEME>
: 특정 테마를 사용합니다.--list-themes
: 사용 가능한 테마 목록을 표시합니다.--paging=[auto|never|always]
: 페이지 매김 동작을 제어합니다.--line-range=<N:M>
: 지정한 줄 범위만 출력합니다.--tabs=N
: 탭 크기를 설정합니다 (기본값: 4).--highlight-line <N>
: 지정한 줄을 강조 표시합니다.--diff
: 두 파일 간의 차이점을 시각적으로 비교합니다.--plain
: 구문 강조와 줄 번호를 제거합니다.--wrap=[auto|never|character]
: 줄바꿈 방식을 설정합니다.
기존 cat
명령어를 대체할 수 있도록 bat
를 별칭으로 설정할 수도 있습니다:
# bat 별칭 추가
$ echo "alias cat='bat'" >> ~/.zshrc
# Zsh 셸 변경사항 적용
$ source ~/.zshrc
bat를 활용하면 터미널에서 파일 내용을 보다 깔끔하고 직관적으로 탐색할 수 있습니다. 특히, 복잡한 코드나 로그 파일을 분석할 때 그 유용성을 확실히 느낄 수 있습니다.
jq
jq는 JSON 데이터를 터미널에서 손쉽게 처리할 수 있는 CLI 경량 JSON 프로세서입니다. JSON 데이터를 필터링하고 변환하는 작업을 단순하고 효율적으로 수행할 수 있도록 도와줍니다. 백엔드 개발에서는 JSON 형식의 API 응답이나 설정 파일을 자주 다루기 때문에 jq
는 이러한 작업을 빠르고 직관적으로 처리할 수 있는 매우 유용한 도구입니다.
jq
는 단순히 JSON 데이터를 출력하는 것뿐만 아니라, 필터링, 변환, 매핑, 집계 등 다양한 작업을 터미널에서 직접 수행할 수 있도록 도와줍니다. 복잡한 JSON 구조를 빠르게 탐색하고 필요한 데이터를 추출하는 데 필수적인 도구입니다.
- 강력한 필터링 기능:
jq
는 복잡한 JSON 구조에서 특정 필드를 추출하거나 조건에 맞는 데이터를 손쉽게 필터링할 수 있습니다. 예를 들어, REST API 응답에서 특정 조건을 만족하는 데이터를 추출할 때 유용합니다. - 데이터 변환 및 포맷팅: JSON 데이터를 원하는 형식으로 변환하거나, 필요에 따라 특정 값을 수정하고 재구성할 수 있습니다. 이를 통해 API 응답을 필요한 형식으로 바로 가공할 수 있습니다.
- 체이닝 및 파이프라인 처리:
jq
는 여러 연산을 한 번에 체인으로 연결해 사용할 수 있어, 복잡한 JSON 데이터를 한 줄의 명령어로 처리할 수 있습니다. 이는 긴 JSON 데이터에서 중첩된 필드를 추출하거나 여러 단계를 거친 변환 작업에 유용합니다. - 스크립팅 및 자동화:
jq
는 쉘 스크립트와 통합하여 JSON 데이터를 다루는 자동화 작업에 사용할 수 있습니다. 정기적으로 JSON 파일을 처리하거나 API 데이터를 관리해야 하는 경우 매우 유용합니다.
다음은 jq
를 사용한 JSON 데이터 처리의 몇 가지 예시입니다:
# 특정 필드 추출
$ echo '{"name": "Alice", "age": 25, "city": "New York"}' | jq '.name'
"Alice"
# 배열 내에서 조건을 만족하는 데이터 필터링
$ echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' | jq '.[] | select(.age > 25)'
{
"name": "Bob",
"age": 30
}
# JSON 데이터를 다른 형식으로 변환하기
$ echo '{"name": "Alice", "age": 25, "city": "New York"}' | jq '{fullName: .name, location: .city}'
{
"fullName": "Alice",
"location": "New York"
}
# 여러 조건을 결합한 복잡한 처리
$ echo '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]' | jq '.[] | select(.age > 25) | {name, age}'
{
"name": "Bob",
"age": 30
}
{
"name": "Charlie",
"age": 35
}
이처럼 jq
는 JSON 데이터를 쉽게 다루도록 돕는 다양한 기능을 제공합니다. 대규모 JSON 파일에서 특정 필드를 추출하거나, 복잡한 JSON 구조를 변환하는 작업을 빠르고 정확하게 처리할 수 있습니다.
macOS에서 jq
를 설치하는 방법은 다음과 같습니다:
# jq 설치
$ brew install jq
설치 후, JSON 데이터를 간단한 명령어로 처리할 수 있습니다. jq
는 매우 직관적이면서도 풍부한 기능을 제공하여, JSON 데이터와 상호작용하는 개발자들에게 큰 도움이 됩니다. 특히, API 응답 데이터를 빠르게 확인하거나, 자동화 스크립트에서 JSON 데이터를 가공할 때 매우 유용합니다.
lazygit
lazygit은 Git 리포지토리를 관리할 수 있는 터미널 기반의 직관적인 터미널 Git UI 도구입니다. 복잡한 Git 명령어를 입력하지 않고도 Git 작업을 빠르고 쉽게 수행할 수 있는 인터페이스를 제공합니다. lazygit은 특히 여러 Git 브랜치를 관리하거나 복잡한 Git 워크플로우를 사용하는 개발자들에게 매우 유용한 도구입니다.
lazygit은 Git CLI의 다양한 기능들을 시각적으로 제공하여, 개발자들이 Git을 보다 직관적이고 효율적으로 사용할 수 있도록 돕습니다.
- Commit Log 관리: lazygit을 사용하여 Git 로그를 시각적으로 확인하고, 이전 커밋으로 쉽게 이동할 수 있습니다. 각 커밋의 상세 내용을 확인하고, 커밋 간의 변경 사항을 비교할 수 있습니다.
- Branch 관리: 여러 브랜치를 쉽게 전환하거나 새 브랜치를 생성하고, 브랜치 간의 차이를 시각적으로 비교할 수 있습니다. 또한, 브랜치를 Merge하거나 Rebase하는 작업도 간편하게 수행할 수 있습니다.
- Staging/Unstaging 작업: 변경된 파일을 Stage하거나 Unstage하는 작업을 쉽게 수행할 수 있습니다. 특정 파일이나 코드 블록을 선택적으로 Stage할 수도 있습니다.
- Conflict 해결: 병합 출동이 발생했을 때, lazygit을 사용하여 충돌을 시각적으로 확인하고 해결할 수 있습니다. 충돌이 발생한 파일을 선택하고, 병합 전략을 선택하여 문제를 해결할 수 있습니다.
- Push/Pull 작업: 원격 리포지토리와의 상호작용도 간편합니다. lazygit을 통해 원격 리포지토리에 Push하거나, 원격에서 변경 사항을 Pull할 수 있습니다.
- Tag 관리: 리포지토리에 Tag를 쉽게 추가하거나 삭제할 수 있습니다. 또한, 특정 Tag를 기반으로 체크아웃하거나, Tag 간의 차이를 비교할 수 있습니다.
macOS에서 lazygit
을 설치하는 방법은 매우 간단합니다. Homebrew를 사용하여 다음 명령어로 설치할 수 있습니다:
# lazygit 설치
$ brew install lazygit
설치가 완료되면, 다음 명령어로 lazygit을 실행할 수 있습니다:
# lazygit 실행
$ lazygit
lazygit
명령어를 실행한 후에는, Git 리포지토리 내의 다양한 작업을 시각적인 인터페이스로 쉽게 관리할 수 있습니다.
lazygit에서 사용 가능한 주요 단축키는 다음과 같습니다:
q
: lazygit 종료↑/↓
: 항목 이동←/→
: 패널 간 이동a
: 새로운 브랜치 생성c
: 새로운 커밋 생성C
: 커밋 수정r
: 브랜치 리베이스m
: 브랜치 병합f
: 원격에서 변경 사항 가져오기 (pull)F
: 현재 브랜치에 강제 푸시s
: 현재 선택된 파일 스테이징S
: 모든 변경 사항 스테이징u
: 스테이징 취소 (unstage)U
: 모든 파일 스테이징 취소d
: 파일 삭제R
: 리포지토리 새로 고침p
: 원격으로 변경 사항 푸시h
: 커밋 히스토리 보기x
: 선택된 항목 실행 취소space
: 파일 선택enter
: 선택한 항목에 대한 세부 정보 보기
이 단축키들을 활용하면 lazygit에서 Git 작업을 더욱 효율적으로 수행할 수 있습니다.
다음과 같이 lazygit
별칭을 추가하면 사용이 더 간편해집니다. 이제 lazygit
대신 lzg
명령어를 입력하여 더 빠르게 도구를 실행할 수 있습니다:
# lazygit 별칭 추가
$ echo "alias lzg='lazygit'" >> ~/.zshrc
# Zsh 변경사항 적용
$ source ~/.zshrc
이렇게 설정한 후에는 lzg
명령어로 lazygit
를 실행할 수 있습니다.
lazygit은 Git을 더욱 직관적이고 효율적으로 관리할 수 있는 도구로, 복잡한 Git 명령어 없이도 다양한 Git 작업을 손쉽게 수행할 수 있습니다. 터미널 기반의 인터페이스를 선호하는 개발자들에게 특히 유용하며, Git 워크플로우를 간소화하는 데 큰 도움이 됩니다.
lazydocker
lazydocker는 Docker 컨테이너, 볼륨, 네트워크, 그리고 이미지와 같은 다양한 Docker 리소스를 간단하고 직관적으로 관리할 수 있도록 도와주는 터미널 Docker UI 도구입니다. lazydocker는 Docker와 Docker Compose 작업을 손쉽게 할 수 있도록 도와주는 시각적 인터페이스를 제공하여, 복잡한 명령어 없이도 직관적으로 Docker 환경을 제어할 수 있습니다.
lazydocker는 특히 Docker 명령어에 익숙하지 않은 사용자나 여러 Docker 컨테이너를 동시에 관리해야 하는 상황에서 매우 유용합니다. 복잡한 Docker 명령어를 외울 필요 없이 터미널 내에서 시각적으로 Docker 환경을 모니터링하고 관리할 수 있습니다.
- 컨테이너 관리: lazydocker를 통해 실행 중인 모든 Docker 컨테이너를 모니터링하고, 선택한 컨테이너를 시작, 중지, 재시작할 수 있습니다. 또한, 로그를 확인하거나 터미널에서 직접 명령어를 실행할 수도 있습니다.
- 이미지 관리: 현재 로컬에 있는 Docker 이미지를 확인하고, 필요에 따라 이미지를 삭제하거나 새로운 이미지를 빌드할 수 있습니다.
- 네트워크 및 볼륨 관리: Docker 네트워크와 볼륨 상태를 확인하고, 쉽게 삭제할 수 있습니다. 이를 통해 시스템 자원을 더 효율적으로 관리할 수 있습니다.
- Docker Compose 통합: lazydocker는 Docker Compose와 통합되어, 복잡한 서비스 설정을 간단히 관리할 수 있습니다. 여러 서비스가 정의된 Compose 파일을 로드하고, 각 서비스를 관리할 수 있습니다.
- 리소스 모니터링: 각 컨테이너의 CPU, 메모리 사용량을 실시간으로 모니터링할 수 있어 성능 문제를 쉽게 파악할 수 있습니다.
macOS에서 lazydocker
를 설치하는 방법은 매우 간단합니다. Homebrew를 사용하여 다음 명령어로 설치할 수 있습니다:
# lazydocker 설치
$ brew install lazydocker
설치가 완료되면, 다음 명령어로 lazydocker를 실행할 수 있습니다:
# lazydocker 실행
$ lazydocker
lazydocker
명령어 실행 후, Docker의 다양한 리소스를 직관적인 인터페이스로 관리할 수 있습니다. 선택한 리소스에 대한 세부 정보를 확인하고, 명령어를 실행하거나 로그를 확인하는 등의 작업을 쉽게 수행할 수 있습니다.
lazydocker 메뉴에서 사용 가능한 단축키는 다음과 같습니다:
?
: 메뉴 보기d
: 컨테이너 제거e
: 중지된 컨테이너 표시/숨기기p
: 일시 정지s
: 중지r
: 재시작a
: 컨테이너에 연결m
: 로그 보기E
: 셸 실행c
: 미리 정의된 사용자 명령 실행b
: 여러 명령어 보기w
: 브라우저에서 열기 (첫 번째 포트가 http인 경우)enter
: 메인 패널로 포커스[
: 이전 탭으로 이동]
: 다음 탭으로 이동/
: 목록 필터링+
: 화면 모드 변경 (일반/반/전체 화면)_
: 이전 화면 모드
이 단축키를 통해 lazydocker
에서 다양한 작업을 쉽게 수행할 수 있습니다.
다음과 같이 lazydocker
별칭을 추가하면 사용이 더 간편해집니다. 이제 lazydocker
대신 lzd
명령어를 입력하여 더 빠르게 도구를 실행할 수 있습니다:
# lazydocker 별칭 추가
$ echo "alias lzd='lazydocker'" >> ~/.zshrc
# Zsh 변경사항 적용
$ source ~/.zshrc
이렇게 설정한 후에는 lzd
명령어로 lazydocker
를 실행할 수 있습니다.
lazydocker는 Docker와 Docker Compose를 직관적으로 관리할 수 있는 도구로, 복잡한 명령어 없이도 손쉽게 컨테이너, 이미지, 네트워크, 볼륨을 제어할 수 있습니다. 개발 환경에서 Docker를 많이 사용한다면, 이 도구를 통해 관리 작업을 훨씬 더 효율적으로 수행할 수 있을 것입니다.
helix
Helix는 터미널 기반의 현대적인 텍스트 에디터로, Vim 사용자에게 친숙한 키바인딩을 제공하면서도 다양한 기능을 통해 코드 편집을 더욱 효율적으로 만들어 줍니다. Helix는 Vim의 강력한 키바인딩을 유지하면서도, 마우스 기반의 인터페이스와 직관적인 명령 체계를 통해 Vim을 사용하지 않는 사용자에게도 쉽게 익숙해질 수 있는 환경을 제공합니다. Rust로 작성된 이 에디터는 성능이 뛰어나며, 언어 서버 프로토콜(LSP)을 지원하여 다양한 프로그래밍 언어에서 코드 자동 완성, 오류 검사, 정의로 이동 등의 기능을 제공합니다.
macOS에서 Helix를 설치하는 방법은 Homebrew를 사용하여 간편하게 설치할 수 있습니다:
# helix 설치
$ brew install helix
설치를 완료한 다음, Helix에서 작업을 시작하려면 hx
명령어를 사용합니다. 예를 들어, 다음과 같이 명령어를 사용하여 main.rs
파일을 열고 편집 작업을 바로 시작할 수 있습니다:
$ hx main.rs
파일을 연 후 Helix는 주로 세 가지 모드로 작동합니다:
- 일반 모드: 주로 텍스트 탐색과 편집을 위해 사용됩니다.
h
,j
,k
,l
: 커서 이동 (왼쪽, 아래, 위, 오른쪽)d
: 삭제y
: 복사 (Yank)p
: 붙여넣기u
: 실행 취소 (Undo)Ctrl + r
: 다시 실행 (Redo):
: 명령 모드로 전환gg
: 파일의 처음으로 이동G
: 파일의 끝으로 이동w
: 다음 단어로 이동b
: 이전 단어로 이동
- 삽입 모드: 텍스트 입력을 위해 사용됩니다.
i
: 현재 커서 위치에 삽입a
: 현재 커서 위치 뒤에 삽입o
: 현재 줄 아래에 새 줄 삽입Esc
: 일반 모드로 전환
- 비주얼 모드: 텍스트 블록을 선택하고 조작하는 데 사용됩니다.
v
: 비주얼 모드로 전환하여 텍스트 선택V
: 비주얼 라인 모드로 전환 (전체 줄 선택)Ctrl + v
: 비주얼 블록 모드로 전환 (다중 행 선택)y
: 선택한 텍스트 복사d
: 선택한 텍스트 삭제
Helix의 키바인딩은 기본적으로 Vim과 유사하지만, ~/.config/helix/config.toml
파일을 수정하여 사용자 정의가 가능합니다. 예를 들어, Ctrl + s
로 파일을 저장하도록 설정하려면 다음과 같이 수정할 수 있습니다:
[keys.normal]
"ctrl-s" = ":w"
이렇게 설정하면 Ctrl + s
를 눌렀을 때 파일을 저장할 수 있습니다. Helix는 기본 제공되는 키바인딩 외에도 사용자가 자신의 작업 스타일에 맞게 자유롭게 설정할 수 있어 매우 유연합니다.
Helix의 또 다른 강점은 커맨드 모드를 통해 다양한 작업을 수행할 수 있다는 점입니다. 이 모드에서는 :
을 입력한 후 명령어를 입력하기 시작하면, 입력하는 동안 관련된 명령어들이 실시간으로 화면에 표시되어 사용자가 쉽게 원하는 명령어를 선택할 수 있습니다. 이를 통해 파일을 열거나 저장하고, 설정을 변경하는 등의 작업을 손쉽게 처리할 수 있습니다. 자주 사용되는 커맨드는 다음과 같습니다:
:open <filename>
: 새로운 파일을 열거나, 이미 열린 파일로 전환합니다.:write
또는:w
: 현재 편집 중인 파일을 저장합니다. 기본적으로 파일을 덮어쓰며, 다른 이름으로 저장하려면 새로운 파일명을 함께 입력합니다.:quit
또는:q
: 현재 열려 있는 파일을 닫고 Helix를 종료합니다. 저장하지 않고 종료하려면:quit!
또는:q!
를 사용합니다.:wq
: 파일을 저장하고 Helix를 종료합니다. 이 명령어는:write
와:quit
를 동시에 실행합니다.:find <pattern>
: 파일 내에서 특정 텍스트를 검색합니다.:split
: 현재 창을 수평으로 분할하여 두 개의 파일을 동시에 볼 수 있습니다.:vsplit
: 현재 창을 수직으로 분할하여 두 개의 파일을 동시에 볼 수 있습니다.:bnext
: 다음 버퍼로 전환합니다. 여러 파일을 열고 작업할 때 유용합니다.
테마는 텍스트 에디터에서 빼놓을 수 없는 요소입니다. 🎨 Helix는 다양한 테마를 지원하여, 사용자 취향에 맞게 외관을 커스터마이즈할 수 있습니다. 테마를 변경하려면 config.toml
파일에서 설정을 수정하면 됩니다. 예를 들어, onedark
테마를 적용하려면 다음과 같이 설정 파일을 작성할 수 있습니다:
theme = "onedark"
[editor]
line-number = "absolute"
mouse = false
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
이 설정을 통해 Helix의 외관과 동작 방식을 사용자 선호에 맞게 조정할 수 있습니다. 기본 제공되는 테마 외에 커스텀 테마를 추가하려면, Helix 공식 문서를 참고하여 테마 파일을 작성한 후, ~/.config/helix/themes
디렉토리에 저장하면 됩니다. 그런 다음, config.toml
파일에서 새로 추가한 테마의 이름을 지정해 적용할 수 있습니다. 예를 들어, 새로운 테마 파일을 ~/.config/helix/themes/catsriding.toml
에 저장한 후, 이 테마를 사용하려면 config.toml
에 다음과 같이 설정합니다:
theme = "catsriding"
Helix는 이와 같이 다양한 기능을 제공합니다. 저처럼 터미널에서 바로 작업할 일이 간헐적으로 생길 때마다 Vim 키바인딩을 다시 찾아보고 있다면, 사용을 한 번 고려해보면 좋을 것 같습니다. ⌨️
ngrok
ngrok은 로컬 서버를 외부에서 접근할 수 있도록 안전한 공개 URL을 생성해주는 도구입니다. 이 도구는 특히 로컬에서 개발 중인 애플리케이션을 테스트하거나, 외부 API가 HTTPS 기반으로만 동작할 때 유용합니다. 로컬에서 HTTPS 환경을 구성하는 대신 ngrok을 사용해 간편하게 HTTPS를 지원하는 공개 URL을 생성할 수 있어, 네트워크 설정을 복잡하게 변경하지 않고도 외부와 쉽게 연결할 수 있게 합니다.
ngrok은 다음과 같은 주요 기능을 제공합니다:
- 로컬 서버 노출: 로컬에서 실행 중인 웹 서버에 대해 ngrok이 자동으로 안전한 공개 URL을 생성해 줍니다. 이를 통해 외부 사용자나 팀원들과 빠르게 작업 결과물을 공유할 수 있습니다.
- HTTPS 지원: ngrok은 생성된 URL에 대해 기본적으로 HTTPS를 지원하여, 보안이 필요한 환경에서도 안전하게 사용 가능합니다.
- Webhook 테스트: ngrok을 사용하면 로컬 서버에서 쉽게 Webhook을 테스트할 수 있습니다. 외부 서비스에서 Webhook을 전송하면, ngrok이 이를 로컬 서버로 전달해주기 때문에 실시간으로 결과를 확인할 수 있습니다.
- 트래픽 모니터링: ngrok은 트래픽을 모니터링하고 분석할 수 있는 대시보드를 제공해, 전송된 요청의 세부 정보를 실시간으로 확인할 수 있습니다.
- TCP와 UDP 지원: HTTP뿐만 아니라 TCP 및 UDP 프로토콜을 지원하여 다양한 종류의 네트워크 서비스와 통합할 수 있습니다.
ngrok은 Homebrew를 통해 간단하게 설치할 수 있습니다:
$ brew install ngrok/ngrok/ngrok
설치가 완료되면, ngrok을 실행해 로컬 서버를 외부와 연결하는 방법은 다음과 같습니다:
- 로컬 서버가 실행 중인 포트를 지정하여 ngrok을 실행합니다:
$ ngrok http 3000
- 명령어를 실행하면 ngrok이 로컬 서버에 대한 공개 URL을 생성합니다. 이 URL을 외부에서 접속할 수 있으며, 웹 페이지에서 실시간 트래픽을 모니터링할 수 있습니다.
ngrok (Ctrl+C to quit)
Session Status online
Account inconshreveable (Plan: Free)
Version 3.0.0
Region United States (us)
Latency 78ms
Web Interface http://127.0.0.1:4040
Forwarding https://84c5df474.ngrok-free.dev -> http://localhost:3000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
- Forwarding에 표시된
https://84c5df474.ngrok-free.dev
와 같은 생성된 URL을 브라우저나 외부 서비스에 입력하면 로컬 서버에 접근할 수 있습니다. 또한, ngrok 대시보드를 통해 모든 트래픽이 실시간으로 기록되므로, 요청을 모니터링하고 디버깅할 수 있습니다.
ngrok은 간편하면서도 뛰어난 기능을 제공하여, 개발자들이 로컬 환경에서 작업할 때 빠르게 외부와 연결할 수 있게 합니다. 또한, 네트워크 구성이나 방화벽 설정 없이도 로컬 애플리케이션을 쉽게 테스트할 수 있어 많은 개발자들이 필수 도구로 사용하고 있습니다.
httpie
duf
procs
gping
speedtest-cli
dog
awscli
ncdu
- macOS
- Linux
- Toolbox