본문으로 건너뛰기
1
r/jeffnews HN 약 8분

살면서 몰랐던 셸 트릭 모음 — 터미널에서 Backspace 꾹 누르기 이제 그만

devops

요약

대부분의 개발자가 ls, cd, grep 이후로 터미널 학습을 멈추는데, 셸에는 1989년부터 존재하던 생산성 트릭들이 가득함. POSIX 범용 단축키부터 Bash/Zsh 전용 기능까지, 하루 하나씩 익히면 터미널 생활이 완전히 달라짐.

기사 전체 정리

터미널, 살고 있으면서 가구 배치는 안 하고 있었던 거임

  • 옆에서 시니어 엔지니어가 줄 맨 앞의 오타 하나 고치겠다고 Backspace를 6초간 꾹 누르고 있는 광경… 다들 한 번쯤 봤을 거임. 우리는 ls, cd, grep 배우고 나서 터미널 학습을 멈춰버림. 사실 셸 개발자들이 이미 1989년에 다 해결해놓은 걸 모르고 사는 거임
  • 이 글은 "비밀 트릭"이 아니라 아무도 안 가르쳐줘서 모르고 있던 것들 모음임. POSIX 어디서든 먹히는 것과 Bash/Zsh 전용으로 나눠서 정리해둠

어디서든 먹히는 POSIX 기본기

  • CTRL + W: /var/log/nginx/ 치다가 apache2로 바꿔야 할 때, Backspace 꾹 누르는 건 숟가락으로 땅파기임. CTRL + W 한 방이면 커서 앞 단어가 통째로 날아감
  • CTRL + U / CTRL + K: 80자짜리 rsync 명령어를 다 쳤는데 목적지 디렉토리 존재 여부를 먼저 확인해야 할 때. CTRL + U로 라인 전체를 잘라내고(kill), 확인 끝나면 CTRL + Y로 그대로 다시 붙여넣기(yank). 명령어를 머릿속에 기억할 필요 없음
  • CTRL + A / CTRL + E: 라인 맨 앞(A)과 맨 끝(E)으로 순간이동. Home/End 키는 홈 로우에서 너무 멀리 있음
  • ALT + B / ALT + F: 단어 단위로 앞뒤 이동. 화살표 키의 쿨한 형 같은 존재 (맥 유저는 터미널에서 Option을 Meta로 설정해야 함)

터미널 깨졌을 때

  • 바이너리 파일을 실수로 cat 해버려서 터미널이 상형문자를 토하기 시작했을 때 — 창 닫지 말고 눈 감고 reset 입력 후 Enter. 글자 안 보여도 됨, 터미널이 알아서 자가 치유함
  • CTRL + L: clear 치기 귀찮을 때, 명령어 입력 중에도 화면을 깨끗하게 밀어버림. 치던 명령어는 그대로 맨 위에 살아있음

디렉토리 핑퐁

  • cd -: TV 채널 돌리기. /usr/local/etc/postfix에서 /var/log 갔다가 다시 돌아올 때 긴 경로 재입력 없이 cd - 한 방이면 됨
  • pushd / popd: cd -가 토글 스위치라면 pushd는 스택임. 디렉토리 3~4개 왔다갔다 해야 할 때 pushd로 쌓아두고 popd로 꺼내면 됨

소소하지만 강력한 것들

  • > file.txt: 파일 내용만 비우고 싶을 때. rm + touch 조합과 달리 파일 퍼미션, 소유자가 그대로 유지되고, 이미 파일을 열고 있는 프로세스도 안 끊김. echo "" > file.txt는 개행문자가 남으니 주의
  • $_: 직전 명령어의 마지막 인자를 가져옴. mkdir -p /some/long/path 하고 바로 cd $_하면 끝. 임시 변수 선언 필요 없음

⚠️주의

> 셸 스크립트 상단에 set -u를 안 넣으면 오타 한 방에 rm -rf /usr/local/${MY_TYPO_VAR}/*rm -rf /usr/local/*로 확장되는 참사가 벌어질 수 있음. set -euo pipefail 조합을 쓰되, -e가 조건문/파이프라인에서 기대와 다르게 동작하는 엣지 케이스가 있으니 맹신은 금물

Bash & Zsh 전용 편의 기능

  • CTRL + R: 지난 화요일에 썼던 awk 명령어 찾겠다고 위 화살표 40번 누르지 말 것. CTRL + R 누르고 키워드 몇 글자만 치면 히스토리에서 바로 검색됨. 한 번 더 누르면 이전 매칭으로 계속 넘어감
  • !! (뱅뱅): systemctl restart nginx 쳤더니 Permission denied 나왔을 때의 그 굴욕감. sudo !! 한 줄이면 "아까 그거 다시 하는데 이번엔 권한 있음" 이 됨
  • CTRL + X → CTRL + E: 원라이너가 점점 괴물이 돼가고 있을 때, 이 콤보를 누르면 현재 입력 중인 명령어가 $EDITOR(Vim이든 Nano든)로 열림. 편집하고 저장하면 바로 실행됨. fc 명령어는 직전 명령어를 에디터에서 여는 포터블 버전
  • ESC + . (또는 ALT + .): 직전 명령어의 마지막 인자를 커서 위치에 바로 삽입. 반복 누르면 히스토리를 더 거슬러 올라감. !$도 비슷하지만 Enter 칠 때 확장되므로 미리 확인이 안 됨

중괄호 확장 마법

  • cp pf.conf{,.bak}cp pf.conf pf.conf.bak으로 확장됨. 백업 한 줄 완성
  • mv filename.{txt,md} → 확장자 변경이 이렇게 우아할 수 있음
  • mkdir -p project/{src,tests,docs} → 디렉토리 3개 동시 생성

프로세스 대체와 글롭

  • 프로세스 대체 <(command): 명령어 출력을 파일처럼 취급. diff <(sort file1) <(sort file2) 하면 임시 파일 만들 필요 없이 정렬된 두 파일을 바로 비교 가능
  • ** (Globstar): Bash에서 shopt -s globstar 켜면 (Zsh는 기본), ls **/*.js로 모든 하위 디렉토리의 JS 파일을 재귀 탐색. find 없이도 됨

💡

> SSH로 붙어서 DB 임포트 돌리고 있는데 tmux 안에서 안 돌렸을 때: CTRL + Z (일시정지) → bg (백그라운드 전환) → disown (셸에서 완전 분리). 이러면 SSH 끊겨도 프로세스가 살아남음. 노트북 덮고 커피 마시러 가도 됨

  • |& + tee: command |& tee file.log로 stdout과 stderr를 동시에 화면에 보면서 로그 파일에도 저장. |만 쓰면 stderr가 파이프를 건너뛰고 화면에만 뿌려지는데, |&2>&1 |의 축약형이라 둘 다 잡아줌

핵심은 "하루에 하나씩"

  • 이걸 한꺼번에 다 외우려고 하지 말 것. 하나 골라서 일주일간 강제로 쓰고, 그다음 하나 추가하는 방식이 저자의 권장 사항임. 터미널은 장애물 코스가 아니라 도구 상자임 — 가구 배치 좀 바꿔놓으면 삶이 달라진다는 이야기

핵심 포인트

  • CTRL+W/U/K/Y 등 Emacs 스타일 라인 편집으로 Backspace 연타 탈출
  • cd -, pushd/popd로 디렉토리 간 빠른 이동
  • set -euo pipefail로 셸 스크립트 안전망 구축 (단, 엣지 케이스 주의)
  • CTRL+R 히스토리 검색, !! sudo 재실행, 중괄호 확장으로 반복 타이핑 제거
  • CTRL+Z → bg → disown 콤보로 tmux 없이도 프로세스 생존 가능

인사이트

시니어 개발자도 의외로 CTRL+W, CTRL+U 같은 기본 라인 편집을 모르는 경우가 많음. 팀 온보딩 문서에 넣어두면 전체 생산성이 올라갈 트릭들.

댓글

댓글

댓글을 불러오는 중...

devops

Wine 11, 드디어 커널 수준에서 Windows 동기화 재설계 — FPS 678% 상승 레전드

Wine 11이 출시됐는데 이거 그냥 버전업이 아님. **NTSYNC**라는 커널 레벨 동기화 드라이버가 탑재되면서 일부 게임 FPS가 최대 678% 폭등했고, **WoW64** 아키텍처도 완성돼서 32비트 앱 실행에 더 이상 삽질 안 해도 됨. Proton이랑 Steam Deck도 혜택 받는 구조라 Linux 게이밍 역사상 손꼽히는 업데이트임.

devops

NixOS 찬양글 - 이게 바로 OS가 나아가야 할 방향 아님?

NixOS 유저가 왜 NixOS에 진심인지 열변을 토하는 글임. 핵심은 NixOS 자체보다 **Nix 패키지 매니저**의 선언적·재현 가능한 철학에 있고, LLM 코딩 에이전트 시대에 특히 더 찰떡이라고 함. Docker보다 낫다는 주장도 ㄹㅇ 공감 포인트.

devops

Qanah — WireGuard 설정 그대로 쓰면서 WebRTC로 NAT 뚫는 P2P VPN

WireGuard 설정 파일을 그대로 사용하면서 UDP 대신 WebRTC 데이터 채널로 IP 패킷을 터널링하는 P2P VPN. CGNAT 뒤에서도 동작하고, WireGuard가 차단된 네트워크에서도 사용 가능.

devops

Nix는 거짓말이다 — 그래픽 드라이버 앞에서 FHS를 다시 도입한 이야기

Nix가 FHS를 배제하고 순수성을 추구하지만, 그래픽 드라이버(libGL.so)는 호스트 하드웨어에 의존하므로 /run/opengl-driver/lib이라는 관행적 경로를 재도입할 수밖에 없었다는 이야기.

devops

Determinate Nix의 미래: Wasm/WASI, 빌드 출처 추적, Flake Schemas

Determinate Systems가 Nix에 Wasm/WASI 지원, provenance(빌드 출처 추적), flake schemas를 추가함. Nix 언어의 표현력 한계를 Rust 등으로 우회하고, store path의 출처를 하드웨어 수준까지 검증 가능하게 만드는 것이 목표.