하이퍼모던 터미널 도구 상자

May 10 2023
2023년에 표준을 설정하는 터미널, 셸 및 명령줄 도구. 모든 개발자는 터미널을 사용합니다. 어떤 사람들에게는 전체 작업 흐름이 터미널입니다 이 게시물에서는 2023년에 표준을 설정하는 터미널, 셸 및 명령줄 도구인 Hypermodern Terminal Toolbox를 소개합니다 터미널 에뮬레이터로서의 Kitty Kitty는 터미널 에뮬레이터입니다. 그놈 터미널의 대안입니다 , Alacritty 또는 Windows 터미널.

2023년에 표준을 설정하는 터미널, 셸 및 명령줄 도구.

안정적인 확산으로 생성됩니다. 프롬프트: '컴퓨터 터미널 화면:0.3, 터미널 화면에 인쇄하는 셸 프로그램:0.3, 남자 빌아웃 스타일, 활기차고 밝음'. 시드: 42.

모든 개발자는 터미널을 사용합니다. 일부에게는 전체 워크플로우가 터미널입니다

이 게시물에서는 2023년에 표준을 설정하는 터미널, 셸 및 명령줄 도구인 Hypermodern Terminal Toolbox를 소개합니다

터미널 에뮬레이터로서의 키티

Kitty 는 터미널 에뮬레이터입니다 — GNOME 터미널, Alacritty 또는 Windows 터미널의 대안입니다.

`$ kitty +kitten theme`을 실행하여 액세스할 수 있는 기본 제공 키티 테마 브라우저.

터미널 에뮬레이터는 터미널을 실행하는 프로그램입니다. 다양한 운영 체제(OS)는 OS의 일부 또는 설치 가능한 타사 프로그램으로 다양한 터미널 에뮬레이터를 제공합니다.

Kitty는 GPU 가속 타사 터미널 에뮬레이터입니다. Kitty는 빠르고 사용자 정의가 가능하며 오픈 소스입니다.

구성은 텍스트 파일을 사용하여 수행됩니다 kitty.conf.

# $XDG_CONFIG_HOME/kitty/kitty.conf

font_family      Operator Mono Book
font_size 14.0
scrollback_lines 2000

팁 — 에서 Kitty 설정을 변경할 때 kitty.confKitty 프로그램을 완전히 다시 시작해야 합니다.

쉘로서의 Zsh 및 Prezto

Zsh 는 C로 작성된 쉘로 Bash 또는 Fish의 대안입니다.

쉘은 터미널 내부에서 실행되는 운영 체제 텍스트 인터페이스입니다. 셸 명령은 파일 생성 및 프로그램 실행과 같은 작업을 수행합니다.

Zsh는 Bash보다 더 많은 기능과 사용자 지정 가능성을 제공하는 오픈 소스 셸입니다.

Zsh는 다음 파일을 사용하여 구성됩니다 .zshrc.

# ~/.zshrc

HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"

Prezto의 기능에는 구문 강조 표시 및 명령 탭 완성이 포함됩니다. 탭 완성은 새로운 명령줄 도구를 대화식으로 탐색하는 데 유용합니다.

Prezto는 다음 파일을 사용하여 구성됩니다 .zpreztorc.

# ~/.zpreztorc

zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'git' \
  'syntax-highlighting' \
  'history-substring-search' \
  'autosuggestions' \
  'prompt'

텍스트 편집기로서의 Neovim

Neovim 은 Lua로 작성된 텍스트 편집기 로 Vim, Nano 또는 Emacs의 대안입니다.

Neovim은 Vim의 인기 있는 후속 제품입니다. Vimscript로 작성된 Vim 플러그인의 전체 생태계는 Lua로 작성된 Neovim 플러그인의 번잡한 생태계 위에 있는 Neovim에서 작동합니다.

잘 구성된 Neovim에는 자동 완성을 위한 언어 서버(VS Code에서 사용 가능한 동일한 언어 서버), Treesitter로 구문 강조 표시, 다양한 유형의 목록을 검색하기 위한 Telescope가 있습니다.

Neovim의 구성은 다음 파일로 시작하여 Lua에서 수행됩니다 init.lua.

-- $XDG_CONFIG_HOME/nvim/init.lua

--  set size of a tab to be 4
--  vim command line `:set tabstop=2`
--  vimscript `set tabstop=2`
vim.opt.set.tabstop = 2

--  run vimscript in lua
vim.cmd([[set tabstop=2]])

--  set variable
--  vimscript `let g:zoom#statustext = 'Z'`
vim.g['zoom#statustext'] = 'Z'

팁 — 번잡한 Neovim 생태계를 다루는 주간 뉴스레터를 보려면 This Week in Neovim을 구독하세요.

다중 터미널용 Tmux

Tmux 는 C로 작성된 터미널 멀티플렉서 로서 Screen의 대안이거나 여러 창에서 터미널을 실행합니다.

터미널 멀티플렉서를 사용하면 단일 창 내에서 여러 터미널 세션을 관리할 수 있습니다.

Tmux는 사용자 지정 가능한 키 바인딩을 통해 영구 세션, 창 및 창 관리를 제공합니다.

Tmux는 개념 계층을 사용하여 여러 터미널을 관리합니다.

  • 창은 창 내의 직사각형 영역입니다. 각 창에는 별도의 터미널 세션이 표시됩니다.
  • 창은 하나 이상의 창을 포함하는 전체 화면 컨테이너입니다.
  • 세션은 하나 이상의 창 모음입니다.

다음을 사용하여 새 Tmux 세션을 시작할 수 있습니다 tmux new.

#  create a session named `work`
$ tmux new -s work

다음을 사용하여 실행 중인 Tmux 세션에 다시 연결할 수 있습니다 tmux attach.

#  reattach to last session
$ tmux attach

#  reattach the session named `work`
$ tmux attach -t work

  • Ctrl-b c: 새 창을 만듭니다.
  • Ctrl-b n: 다음 창으로 전환합니다.
  • Ctrl-b p: 이전 창으로 전환합니다.

# ~/.tmux.conf

set -g default-terminal "screen-256color"
setw -g mode-keys vi
set -g status-left "#[fg=green,bold]Session: #S #[fg=white,bold]| #[fg=yellow,bold]Window: #W"
set-option -g prefix C-a

예쁜 프롬프트를 위한 우주선

Starship 은 Rust로 작성된 셸 프롬프트 로 Powerlevel10k 또는 Pure의 대안입니다.

프롬프트는 현재 디렉터리 또는 Git 분기와 같은 컨텍스트를 제공하는 명령줄의 사용자 지정 가능한 부분입니다.

Starship은 빠르고 사용자 정의 가능한 프롬프트를 제공합니다. 구성은 다음 파일을 사용하여 수행됩니다 starship.toml.

# $XDG_CONFIG_HOME/starship.toml

[username]
disabled = true

[hostname]
disabled = true

[git_status]
ahead = "↑"
behind = "↓"

[directory]
truncation_length = 2

텍스트 검색을 위한 Ripgrep

Ripgrep 은 Rust로 작성된 텍스트 파일 검색기입니다 — grep 또는 find의 대안입니다.

Ripgrep의 주요 기능은 속도입니다. 다른 도구보다 빠릅니다.

Ripgrep의 기본 용도는 디렉토리에서 패턴을 검색하는 것입니다.

$ rg 'pattern' ~/project

alias g='rg -l --hidden --smart-case --line-buffered'

$ g 'some-pattern' some/directory

퍼지 검색을 위한 fzf

fzf 는 Go로 작성된 퍼지 파인더 로 결정론적 검색의 대안입니다.

fzf를 사용하면 불완전한 정보에 대해 정규식 패턴을 일치시키는 퍼지 검색 알고리즘을 사용하여 검색할 수 있습니다. 이렇게 하면 맞춤법이 틀린 경우에도 입력하는 동안 검색 결과가 표시됩니다.

fzf는 명령줄 프로그램으로 실행할 수 있습니다.

$ fzf

#  fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>

fzf는 find, grep 또는 Ripgrep과 같은 다양한 검색 백엔드와 함께 사용할 수 있습니다.

FZF_DEFAULT_COMMAND팁 — 환경 변수를 설정하여 Ripgrep을 fzf 백엔드로 사용하십시오 export FZF_DEFAULT_COMMAND='rg --files --hidden'.

파일 나열을 위한 Exa

Exa 는 Rust로 작성된 파일 목록 프로그램 으로 ls와 tree의 대안입니다.

파일 목록 프로그램은 파일 및 디렉토리 목록을 보여줍니다. Exa는 아이콘, Git 통합 및 다양한 정렬 옵션과 같은 기능을 제공합니다.

Exa에는 몇 가지 기본 보기가 있습니다.

#  list as a grid
$ exa -G
bp-historical-data  cities  data-science-south-data  predict-newspapers  README.md  titanic

#  list each item on one line
$ exa -1
bp-historical-data
cities
data-science-south-data
predict-newspapers
README.md
titanic

#  list as a table - same as `ls -l`
$ exa -l
drwxr-xr-x   - adam 26 Apr 20:20 bp-historical-data
drwxr-xr-x   - adam 14 Feb 16:42 cities
drwxr-xr-x   - adam 26 Apr 20:25 data-science-south-data
drwxr-xr-x   - adam 28 Apr 14:52 predict-newspapers
.rw-r--r-- 124 adam 29 Apr 15:20 README.md
drwxr-xr-x   - adam 26 Apr 17:31 titanic

$ exa --tree --level=2
├── bp-historical-data
│  ├── __pycache__
│  ├── dashboard.py
│  ├── data
│  ├── notebooks
│  ├── README.md
│  └── requirements.txt
├── README.md
└── titanic
   ├── data
   ├── requirements.txt
   ├── titanic.ipynb
   ├── titanic.md
   └── titanic.py

내 Exa 별칭은 다음과 같습니다.

alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a' 
alias tree = 'exa --tree'

파일 보기용 박쥐

Bat 는 Rust로 작성된 파일 뷰어 로 cat의 대안입니다.

파일 뷰어는 파일의 내용을 표시하는 프로그램입니다.

Bat는 구문 강조, Git 통합 및 자동 파일 페이징과 같은 기능을 제공합니다.

Bat는 프로그램이 텍스트 파일을 가리키도록 하여 사용됩니다.

$ bat path/to/file

텍스트 교체가 안타깝다

Sad 는 Rust로 작성된 스트림 편집기입니다 — sed 또는 awk의 대안입니다.

스트림 편집기는 텍스트 스트림 또는 텍스트 파일에서 검색 및 바꾸기 작업을 수행합니다.

Sad(Space Age seD)는 제안된 교체를 적용하기 전에 표시하므로 커밋하기 전에 수행할 교체를 확인하고 선택할 수 있습니다.

Sad는 명령줄 프로그램으로 사용됩니다.

$ sad '<pattern>' '<replacement>'

$ cat README.md
# Data Science South Projects

Example projects for the courses at [Data Science South](https://www.datasciencesouth.com/).

$ exa -1 | sad "courses" "modules"      

$ cat README.md
# Data Science South Projects

Example projects for the modules at [Data Science South](https://www.datasciencesouth.com/).

JSON 작업을 위한 jq

jq 는 C로 작성된 JSON 프로세서입니다 . 이는 fx, jp의 대안이거나 Python과 같은 언어로 JSON을 처리하는 것입니다.

jq를 사용하면 API 응답, 구성 파일 및 데이터 저장소 작업에 유용한 JSON 데이터를 필터링, 변환 및 조작할 수 있습니다.

jq의 핵심 아이디어는 입력 JSON에 적용되는 필터입니다.

$ jq 'filter_expression' input.json

  • .key- 키 값 추출,
  • .[]- 배열에서 모든 값을 추출합니다.
  • .[2]- 배열에서 세 번째 값을 추출합니다.

#  extract the `name` key
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.name'
"Alice"

#  extract the second element from the `data` list
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.data[1]'
12

내비게이션용 zoxide

zoxide 는 Rust로 작성된 터미널 탐색 유틸리티 로 cd, pushd 및 popd의 대안입니다.

zoxide는 방문 기록에서 디렉토리로 이동합니다. 얼마나 자주 그리고 최근에 방문했는지에 따라 각 디렉토리에 점수를 할당합니다.

zoxide는 명령줄 프로그램으로 사용됩니다.

#  move to a folder that best matches `code`
$ z code

Git 기록 보기를 위한 Tig

Tig 는 C로 작성된 Git 기록 뷰어입니다 . Git CLI 또는 Lazygit을 사용하는 대신 사용할 수 있습니다.

Tig는 Git 커밋 기록을 탐색할 수 있는 탐색 가능한 색상 코드 인터페이스를 제공합니다. 커밋을 검색하고 커밋 그래프를 보고 다른 시점의 파일을 표시할 수 있습니다.

Tig는 명령줄 프로그램으로 실행됩니다.

$ tig

환경 변수 관리를 위한 direnv

direnv는 셸 환경 변수를 로드 및 언로드합니다 . Go로 작성되었으며$ source .env.

direnv는 서로 다른 프로젝트 디렉토리 사이를 이동할 때 환경 변수를 자동으로 로드 및 언로드합니다.

direnv를 사용하면 환경 변수를 수동으로 로드하지 않고 한 프로젝트의 환경 변수가 다른 프로젝트에 설정되는 것을 방지할 수 있습니다.

direnv는 .envrc파일을 사용하여 쉘 스크립트로 실행되는 프로젝트에 특정한 변수를 보유합니다.

# .envrc

export PROJECT_NAME="alpha"

$ direnv allow .

일반적인 방법은 선택적으로 secret 또는 private 를 로드하는 것입니다 .envrc.

source_env_if_exists .envrc.secret

팁 — direnv exec <path> <command>탐색하지 않고 특정 디렉토리에 대해 로드된 환경으로 명령을 실행하는 데 사용합니다.

도커용 레이지도커

Lazydocker는 Go로 작성된 Docker 컨테이너 및 이미지를 관리하며 Docker Desktop 또는 Docker CLI의 대안입니다.

Lazydocker를 사용하면 터미널 UI를 통해 컨테이너와 이미지를 쉽게 보고, 시작하고, 중지하고, 제거할 수 있습니다. 또한 컨테이너 상태, 로그 및 리소스 사용량에 대한 실시간 개요를 제공할 수도 있습니다.

Lazydocker는 명령줄 프로그램으로 사용됩니다.

$ lazydocker

마크다운 미리보기를 위한 Markserv

Markserv는 Node.js로 작성된 브라우저에서 Markdown 파일을 렌더링하며 Grip 또는 Markdown Preview의 대안입니다.

Markserv는 실시간으로 Markdown을 HTML로 렌더링하여 변경 사항을 자동으로 반영합니다.

Markserv는 GitHub의 Markdown을 지원합니다. 즉, Github와 동일한 코드 블록 및 테이블 형식을 지정합니다. Markserv는 Github에 푸시하지 않고 파일을 미리보기에 적합합니다 README.md.

포트 8010에서 Markserv 서버를 시작하려면:

$ markserv -p 8010

로컬 서버 공유를 위한 Ngrok

ngrok는 로컬 서버에 대한 터널을 생성합니다. Go로 작성되었으며 Serveo, LocalTunnel 또는 PageKite의 대안입니다.

ngrok는 NAT 또는 방화벽 뒤에 있는 로컬 서버를 인터넷에 노출합니다. 이는 팀과 개발 서버를 공유하는 데 유용합니다.

다음을 실행하여 포트 8000에 대한 터널을 시작할 수 있습니다.

$ ngrok http 8000

요약

하이퍼 모던 터미널 도구 상자는 다음과 같습니다.

  • GPU 가속, 고도로 사용자 정의 가능한 터미널용 Kitty ,
  • 셸용 Zsh 및 Zsh 구성용 Prezto ,
  • 텍스트 편집기로서의 Neovim ,
  • 여러 터미널을 관리하기 위한 Tmux ,
  • 예쁜 프롬프트를 위한 스타쉽 ,
  • 텍스트 파일 검색을 위한 Ripgrep ,
  • 퍼지 검색을 위한 fzf ,
  • 파일 나열을 위한 Exa ,
  • 파일 보기용 박쥐 ,
  • 텍스트 파일에서 찾기 및 바꾸기가 안타깝습니다 .
  • JSON 작업을 위한 jq ,
  • 탐색을 위한 zoxide ,
  • Git 기록을 보기 위한 Tig ,
  • 환경 변수 관리를 위한 direnv ,
  • 도커용 레이 지도커,
  • Markdown 미리보기를 위한 Markserv ,
  • 로컬 서버를 인터넷에 노출하기 위한 ngrok .

한 번에 하나의 도구를 꾸준히 배워 터미널 마스터가 되세요

원래 https://www.datasciencesouth.com 에 게시되었습니다 .

레벨업 코딩

우리 커뮤니티의 일원이 되어 주셔서 감사합니다! 가기 전에:

  • 이야기에 박수치고 작가 팔로우
  • 레벨업 코딩 출판물 에서 더 많은 콘텐츠 보기
  • 무료 코딩 면접 과정 ⇒ 과정 보기
  • 팔로우: 트위터 | 링크드인 | 뉴스 레터