terminal

23 posts
Herdr: AI 코딩 에이전트를 위한 터미널 멀티플렉서

Herdr: AI 코딩 에이전트를 위한 터미널 멀티플렉서

AI 코딩 에이전트 하나를 터미널에서 돌릴 때는 별문제가 없습니다. 그런데 버그 수정은 Codex에 맡기고, 테스트 실패 원인 조사는 Claude Code에 시키고, 옆에서는 개발 서버까지 띄우기 시작하면 상황이 달라져요. 터미널 탭을 돌아다니며 누가 작업 중인지, 누가 권한 승인을 기다리는지 계속 확인해야 합니다. 일은 에이전트들이 하는데 정작 사람은 터미널을 순찰하느라 바쁜 셈이죠. 🤔 Herdr는 이 문제를 풀기 위해 만든 터미널 멀티플렉서(terminal multiplexer)입니다. 화면을 나누고 세션을 유지하는 데서 그

Mosh: 네트워크가 바뀌어도 끊기지 않는 원격 셸

Mosh: 네트워크가 바뀌어도 끊기지 않는 원격 셸

카페에서 서버 작업을 하다가 노트북을 덮고 지하철을 탄 뒤 다시 열었을 때, 터미널이 그대로 멈춰 있는 걸 보신 적 있으신가요? 🤔 몇 초쯤 기다리다가 결국 Ctrl+C를 눌러보고, 그래도 반응이 없어서 창을 닫고 다시 접속합니다. 아까 어느 디렉터리에 있었는지 기억을 더듬어 다시 이동하고요. 와이파이에서 테더링으로 갈아탈 때도, 사무실에서 집으로 이동할 때도 똑같은 일이 반복됩니다. SSH는 TCP 위에서 동작하는데, TCP 연결은 클라이언트의 IP 주소에 묶여 있습니다. IP가 바뀌는 순간 그 연결은 되살릴 방법이 없어요. 서

presenterm으로 마크다운 발표 자료 만들기: 터미널에서 돌아가는 슬라이드

presenterm으로 마크다운 발표 자료 만들기: 터미널에서 돌아가는 슬라이드

개발자 모임이나 사내 세미나에서 발표 자료를 만들 때 늘 똑같은 고민이 들곤 합니다. Keynote나 파워포인트로 만들자니 코드 블록 하나 넣자고 폰트와 들여쓰기를 만지작거리는 게 영 번거롭고, 그렇다고 Google Slides는 코드 신택스 하이라이팅이 부실하죠. 마크다운으로 그냥 글 쓰듯 쓰면 안 될까 싶었던 적이 한두 번이 아닙니다. presenterm은 딱 그 가려운 곳을 긁어주는 도구입니다. 마크다운 파일 하나로 슬라이드를 만들고 터미널에서 바로 띄울 수 있어요. 코드 블록은 bat 기반의 신택스 하이라이팅이 자동으로 들어

claudecode.nvim: Neovim에서 Claude Code 쓰기

claudecode.nvim: Neovim에서 Claude Code 쓰기

Neovim에서 코딩을 하다가 Claude한테 물어보고 싶은 게 생기면 보통 어떻게 하시나요? 대부분은 별도 터미널을 띄워두고 거기에 claude 명령을 입력해서 대화하시죠. 그런데 작업 중인 코드 일부를 통째로 보내고 싶거나, Claude가 제안한 변경 사항을 그대로 파일에 반영하고 싶을 때는 복사 붙여넣기를 반복하느라 흐름이 자꾸 끊깁니다. 😅 claudecode.nvim은 이 끊김을 없애주는 Neovim 플러그인입니다. 에디터 안에서 바로 Claude Code 터미널을 띄우고, 시각 모드로 선택한 코드를 한 번에 전송하고,

cmux: 코딩 에이전트를 위한 터미널

cmux: 코딩 에이전트를 위한 터미널

Claude Code를 터미널에서 돌리다 보면 자연스럽게 여러 세션을 동시에 띄우게 됩니다. 하나는 프론트엔드 리팩토링을 시키고, 다른 하나는 API 테스트를 작성하게 하고, 또 다른 하나는 버그를 추적하게 하는 식이죠. 문제는 이 세션들을 관리하는 게 생각보다 귀찮다는 겁니다. Ghostty에서 분할 창을 여러 개 열어놓으면 어느 에이전트가 질문을 던지고 기다리는 중인지 눈으로 일일이 확인해야 해요. macOS 알림도 어떤 세션에서 온 건지 맥락이 부족하고요. cmux는 이 문제를 해결하려고 만들어진 터미널입니다. Ghostty의

Starship으로 터미널 프롬프트 꾸미기

Starship으로 터미널 프롬프트 꾸미기

터미널을 열 때마다 보이는 프롬프트가 밋밋하다고 느끼신 적 있으신가요? 기본 프롬프트는 현재 디렉터리 정도만 보여주다 보니 Git 브랜치를 확인하려면 git branch를 치고, Node.js 버전이 궁금하면 node -v를 입력해야 하죠. Starship은 이런 불편을 해결해주는 크로스 쉘 프롬프트입니다. Rust로 만들어져서 빠르고, Bash부터 Zsh, Fish, PowerShell까지 거의 모든 쉘에서 동작합니다. 이 글에서는 Starship을 설치하고 나만의 프롬프트를 설정하는 방법을 알아보겠습니다. Starship이란?

NvChad로 NeoVim을 IDE처럼 꾸미기

NvChad로 NeoVim을 IDE처럼 꾸미기

NeoVim을 설치하고 기본적인 모달 편집에 익숙해졌는데, 막상 매일 쓰려니 뭔가 허전하지 않으셨나요? NeoVim 입문 가이드에서 다뤘듯이 플러그인을 하나씩 추가하면 IDE급 환경을 만들 수 있긴 한데, 그 "하나씩"이 문제입니다. 컬러 스킴 고르고, 상태바 설정하고, LSP 연결하고, 자동 완성 붙이고... 코딩은 안 하고 에디터 설정만 이틀째 하고 있는 자신을 발견하게 되죠. 😅 NvChad는 이 문제를 정면으로 해결합니다. 설치 한 줄이면 예쁜 UI에 빠른 시작 속도, 실용적인 플러그인 구성까지 한 번에 갖춰지거든요. 이

LazyVim: 설정 없이 바로 쓰는 NeoVim

LazyVim: 설정 없이 바로 쓰는 NeoVim

NeoVim을 쓰기로 마음먹고 설정을 시작하면 끝이 안 보입니다. 플러그인 매니저를 고르고, LSP를 연결하고, 자동 완성을 붙이고, 컬러 스킴을 깔고, 상태바를 예쁘게 꾸미고... 코딩은 안 하고 에디터 설정만 사흘째 하고 있는 자신을 발견하게 되죠. 😅 NvChad처럼 미리 짜인 설정 프레임워크를 쓰면 이 문제가 줄어들긴 합니다. 그런데 NvChad는 프레임워크 자체의 구조를 따라야 하는 제약이 있어서 뭔가 바꾸고 싶을 때 NvChad의 동작 방식을 먼저 이해해야 하는 경우가 종종 생깁니다. LazyVim은 이 사이 어딘가를

Zellij: Rust로 만든 차세대 터미널 멀티플렉서

Zellij: Rust로 만든 차세대 터미널 멀티플렉서

터미널에서 개발하다 보면 창이 부족해지는 순간이 오죠. 개발 서버 하나 돌리고, 로그 보면서, 또 다른 창에서 Git 작업하고, 테스트도 돌려야 하고... 결국 터미널 탭이 열 개쯤 열려 있는 자신을 발견하게 됩니다. 😅 이런 문제를 해결하려고 tmux 같은 터미널 멀티플렉서를 써보신 분들도 계실 텐데요. 솔직히 tmux는 진입 장벽이 꽤 높습니다. 키 바인딩을 외워야 하고, 설정 파일도 복잡하고, 처음 켜면 뭘 어떻게 해야 하는지 막막하죠. Zellij는 이런 고민을 깔끔하게 해결해주는 차세대 터미널 멀티플렉서입니다. Rust로

asciinema로 터미널 녹화하기: 텍스트 기반 경량 스크린캐스트

asciinema로 터미널 녹화하기: 텍스트 기반 경량 스크린캐스트

CLI 도구 사용법을 누군가에게 설명할 때 어떻게 하시나요? 스크린샷을 여러 장 찍어서 붙이거나 OBS로 화면을 녹화해서 영상 파일을 만들 수도 있겠죠. 근데 솔직히 터미널 화면 녹화하자고 동영상 편집 프로그램까지 꺼내는 건 좀 과하잖아요. asciinema(아스키네마)는 이 고민을 깔끔하게 풀어줍니다. 터미널에서 일어나는 입출력을 텍스트로 녹화해서 MP4 같은 무거운 동영상 파일 대신 몇 KB짜리 텍스트 파일을 만들어주거든요. 녹화된 내용에서 텍스트를 복사할 수도 있고 웹 페이지에 임베드하거나 GIF로 변환하는 것도 간단합니다.

NeoVim: Vim 사용자를 위한 현대적 에디터

NeoVim: Vim 사용자를 위한 현대적 에디터

개발하다 보면 한 번쯤 마우스에서 손을 떼고 싶은 순간이 옵니다. 코드를 쓰다가 파일을 열려고 마우스로 사이드바를 클릭하고, 다시 키보드로 돌아와서 코드를 치고, 또 마우스로 터미널을 클릭하고... 이 왔다 갔다 하는 시간이 쌓이면 생각보다 꽤 거슬리거든요. NeoVim은 바로 이 불편함을 없애주는 텍스트 에디터입니다. 키보드에서 손을 뗄 필요 없이 파일 편집, 검색, 탐색을 전부 할 수 있죠. "그냥 Vim 아닌가?" 싶으실 수 있는데, NeoVim은 Vim을 뿌리로 두되 현대 개발 환경에 맞게 새로 설계된 에디터예요. 이 글에서

Vim 완벽 가이드: 키보드만으로 코딩하기

Vim 완벽 가이드: 키보드만으로 코딩하기

VS Code나 IntelliJ를 잘 쓰고 있었는데, 어느 날 서버에 SSH로 접속해서 파일을 수정할 일이 생겼습니다. vim config.yaml을 입력했더니 화면이 바뀌면서 커서가 깜빡이고 있어요. 키보드를 누르는데 글자가 입력이 안 됩니다. 아니, 입력되는 것 같기도 한데 이상한 동작을 하고 있어요. 끄고 싶은데 Ctrl+C도 안 먹히고, Ctrl+W를 눌렀더니 창이 닫히는 대신 뭔가 다른 일이 벌어집니다. 이 상황, 개발자라면 한 번쯤 겪어보셨을 거예요. 😅 "Vim 종료하는 법"은 Stack Overflow에서 200만

Ghostty: GPU 가속 터미널 에뮬레이터

Ghostty: GPU 가속 터미널 에뮬레이터

소프트웨어 개발을 하다 보면 터미널 앱을 꽤 오래 고민하게 됩니다. 운영체제 기본 터미널부터 iTerm2, Kitty, Hyper, Warp까지 이것저것 써봤는데요. 요즘 개발자 커뮤니티에서 Ghostty라는 터미널에 대한 칭찬이 끊이질 않길래 한번 설치해봤더니, 완전히 취향저격이었습니다. Hyper나 Warp처럼 화려한 UI나 부가 기능이 잔뜩 달려 있지는 않아요. 대신 터미널 본연의 기능에 충실하면서 깔끔하고 직관적인 인터페이스를 갖추고 있어서, 쓸수록 만족감이 올라가는 유형의 도구입니다. 왜 또 새로운 터미널인가요? 기존 터미

tmux: 터미널 멀티플렉서의 정석

tmux: 터미널 멀티플렉서의 정석

SSH로 원격 서버에 접속해서 배포 스크립트를 돌리고 있는데 갑자기 인터넷이 끊겼습니다. 다시 접속해보니 실행하던 프로세스가 사라져 있어요. 처음부터 다시 해야 합니다. 😅 이런 경험, 서버 작업을 해보신 분이라면 한 번쯤 겪어보셨을 거예요. 아니면 터미널 탭을 10개쯤 열어놓고 "아까 그 로그 보던 탭이 어디였지?" 하고 헤매본 적도 있으실 테고요. tmux는 이 두 가지 문제를 한 번에 해결해주는 터미널 멀티플렉서입니다. 1987년 GNU Screen에서 시작된 터미널 멀티플렉서의 계보를 잇는 도구로, 2007년에 처음 등장한

쉘에서 명령어 자동 완성 제대로 활용하기

쉘에서 명령어 자동 완성 제대로 활용하기

터미널에서 작업하다 보면 길고 복잡한 명령어를 반복해서 입력하게 됩니다. docker compose --file docker-compose.production.yml up --detach 같은 명령어를 한 글자씩 정확히 치는 건 너무 비효율적이죠. 그래서 우리에게는 Tab 키가 있습니다. Tab 키로 명령어 이름과 파일 경로를 완성하는 건 누구나 알고 있죠. 그런데 쉘의 자동 완성은 그게 끝이 아닙니다. 서브 명령어, 옵션 플래그, 환경 변수, 심지어 Git 브랜치 이름까지 Tab 한 번으로 완성할 수 있는데요. 이 글에서는 Bas

쉘 리다이렉션(Redirection) 사용법

쉘 리다이렉션(Redirection) 사용법

쉘 프로그래밍을 처음 하시는 분들이 스크립트를 읽으시다가 2>&1 같은 알 수 없는 문법을 보고 당황하시는 경우가 있습니다. 이것을 보통 리다이렉션(Redirection)이라고 하는데요. 어떤 명령의 입력이나 출력을 다른 곳으로 변경하기 위해서 사용됩니다. 이번 포스팅에서는 쉘 리다이렉션의 기본 사용법을 알아보고 다양한 예제를 통해 어떻게 실제 쉘 프로그래밍에 활용할 수 있는지 배워보겠습니다. 표준 스트림 쉘의 리다이렉션을 이해하려면 우선 macOS와 같은 유닉스 계열 운영체제의 세 가지 표준 스트림(Standard Stream)을

리눅스 파이프(|) 사용법: 명령어를 이어 붙여 쓰는 법

리눅스 파이프(|) 사용법: 명령어를 이어 붙여 쓰는 법

쉘을 처음 쓰시다 보면 누군가의 블로그나 README에서 이런 명령어를 자주 보게 됩니다. 가운데 들어 있는 | 기호가 도대체 무슨 역할을 하는지 처음에는 감이 잘 잡히지 않으실 텐데요. 이 기호를 파이프(pipe) 또는 파이프라인(pipeline)이라고 부릅니다. 이름 그대로 한 명령어의 출력을 다음 명령어의 입력으로 흘려보내는 관이라고 생각하시면 됩니다. 이번 포스팅에서는 리눅스 파이프의 기본 개념부터 실제로 자주 쓰는 조합 패턴까지 차근차근 살펴보겠습니다. 앞으로 파이프가 들어간 명령어를 보실 때 마음이 한결 편해지실 거예요.

Nerd Font: 터미널 아이콘을 위한 개발자 폰트

Nerd Font: 터미널 아이콘을 위한 개발자 폰트

터미널 도구를 설치하다 보면 "Nerd Font를 설치하세요"라는 안내를 한 번쯤 보셨을 거예요. Starship을 깔 때도 그렇고, NeoVim 플러그인이나 Ghostty 같은 터미널을 꾸밀 때도 빠지지 않고 등장하죠. 그런데 막상 "Nerd Font가 뭔데?" 하고 물으면 선뜻 설명하기가 애매합니다. 폰트인 건지 아이콘 라이브러리인 건지 헷갈리는 분들을 위해 이 글을 준비했어요. Nerd Font가 뭔가요? Nerd Font는 기존 프로그래밍 폰트에 개발 관련 아이콘을 덧붙여주는 오픈소스 프로젝트입니다. "폰트 패치(patch)

Oh My Zsh로 터미널 생산성 높이기

Oh My Zsh로 터미널 생산성 높이기

터미널에서 작업하다 보면 반복적으로 입력하는 명령어가 참 많습니다. git status를 하루에 몇 번이나 치는지, cd ../../../ 같은 긴 경로 이동을 얼마나 자주 하는지 세어 보면 놀라울 정도인데요. 이런 반복 작업을 줄여주는 도구가 바로 Oh My Zsh입니다. Oh My Zsh는 Zsh 쉘의 설정을 관리해주는 오픈 소스 프레임워크입니다. 300개가 넘는 플러그인과 150개 이상의 테마를 제공하고, 커뮤니티가 활발하게 관리하고 있어서 전 세계 개발자가 가장 많이 쓰는 Zsh 프레임워크이기도 합니다. 이 글에서는 Oh M

ps 쉘 커맨드 사용법

ps 쉘 커맨드 사용법

ps는 맥이나 리눅스 터미널에서 현재 실행 중인 프로세스를 확인하기 위해서 사용되는 쉘 커맨드입니다. 이번 포스팅에서는 많이 사용되는 옵션 위주로 ps 커맨드를 어떻게 사용하는지 알아보겠습니다. 무옵션 옵션없이 ps 커맨드를 실행하면 현재 사용자의 세션에서 실행 중인 프로세스를 출력해줍니다. 첫번째 칼럼에서 프로세스의 식별자인 프로세스 아이디를 확인할 수 있으며 마지막 칼럼에서 실행 중인 커맨드를 확인할 수 있습니다. -e 옵션 -e (everything) 옵션을 사용하면 현재 사용자 뿐만 아니라 다른 사용자들이 실행하고 있는 모든

Discord