개발자의 퇴근을 앞당기는 터미널 복사/붙여넣기 꿀팁 (pbcopy, xclip)
개발을 하다 보면 터미널에 출력된 긴 로그나 설정 파일 내용을 복사해야 할 때가 많습니다.
마우스로 드래그해서 스크롤을 올리고 Cmd+C를 누르는 건 비효율적일 뿐만 아니라, tmux1나 vim2을 쓰고 있다면 라인 넘버까지 같이 복사되어 불편합니다.
마우스 없이 키보드만으로 터미널 출력을 시스템 클립보드에 꽂아넣는 방법 을 정리합니다.
1. pbcopy란?
macOS에 기본 내장된 커맨드라인 도구입니다.
P asteb oard Copy 의 약자로, 표준 입력(stdin)으로 들어온 데이터를 시스템 클립보드에 저장합니다.
반대로 클립보드 내용을 출력하는 pbpaste도 있습니다.
2. 타 운영체제별 명령어 소개
운영체제마다 명령어 이름은 다르지만 같은 역할의 명령어가 존재합니다.
| 운영체제 | 명령어 | 사용 예시 | 비고 |
|---|---|---|---|
| macOS | pbcopy | `cat file | pbcopy` |
| Windows (CMD/WSL) | clip | `type file | clip` |
| Windows (PowerShell) | Set-Clipboard | `cat file | Set-Clipboard` |
| 리눅스 (X11) | xclip | `cat file | xclip -sel clip` |
주의 : Windows CMD에서는 파이프(
|)가 제한적으로 작동하며,2>&1리다이렉션이나tee4 같은 고급 기능이 제대로 작동하지 않을 수 있습니다. Windows에서는 PowerShell이나 WSL을 사용하는 것을 권장합니다.
3. 기본 사용법 (Piping)
파이프(|)를 이용해 명령어의 실행 결과를 바로 넘겨줍니다.
# 파일 내용 복사 (SSH 키 복사할 때 유용)
cat ~/.ssh/id_rsa.pub | pbcopy
# 현재 경로 복사
pwd | pbcopy
# Git<sup><a id="fnref-3" href="#fn-3" class="footnote-link">3</a></sup> 커밋 해시 복사
git rev-parse HEAD | pbcopy
4. “에러 로그”까지 복사하려면? (2>&1)
pnpm build나 npm start 같은 명령어를 실행하다 에러가 났을 때, 그냥 파이프를 태우면 성공 메시지만 복사되고 빨간색 에러 메시지는 복사가 안 됩니다.
이는 POSIX 표준에서 표준 출력(1) 과 표준 에러(2) 를 구분하기 때문입니다. 에러까지 합쳐서 보내려면 2>&1이 필요합니다.
# 에러 로그까지 포함해서 클립보드로 전송
pnpm build 2>&1 | pbcopy
5. 화면에도 보고, 복사도 하고 싶다면? (tee)
파이프를 쓰면 결과가 화면에 안 나오고 클립보드로만 들어가서 답답할 때가 있습니다. 이때 tee4 명령어와 프로세스 치환(Process Substitution) 문법인 >(...)를 사용합니다.
# 화면 출력 + 클립보드 복사 동시 수행
pnpm build 2>&1 | tee >(pbcopy)
(주의: tee pbcopy라고 쓰면 pbcopy라는 이름의 파일이 생성되니 주의하세요!)
이제 터미널에서 마우스 없이도 빠르게 클립보드에 복사할 수 있습니다.