-
10년 이상 dotfiles를 유지하면서 작성한 다양한 shell 스크립트 중 가장 많이 쓰는 것들을 소개함
-
클립보드·파일 관리·인터넷·텍스트 처리·REPL 런처·날짜/시간·AV·프로세스·퀵 레퍼런스·시스템·그랩백으로 나뉘며, 각 스크립트는 짧은 래퍼 형태와 실전 예시 중심으로 제시
- 대부분의 스크립트는 macOS와 Linux에서 작동하며, 핵심 철학은 “이미 있는 도구의 번거로운 자질구레함을 평탄화”하는 것
-
pbcopy/xclip, python3 -m http.server, yt-dlp, ffmpeg, mpv 등 표준 유틸 통합을 통해 반복 작업을 가속함
- 가장 많이 쓰는 것으로 copy/pasta/pastas/cpwd, mkcd/tempe/trash/mksh, serveit/getsong/getpod/getsubs, scratch/straightquote/markdownquote, timer/boop/tunes 등
내 dotfiles를 유지하며 만든 가장 자주 쓰는 스크립트 소개
- 10년 넘게 개인 dotfiles를 관리하면서 만들어 온 다양한 shell 스크립트 중, 자주 사용하는 스크립트들을 분야별로 정리함
- 각 스크립트는 목적, 사용 빈도, 대표 예시를 함께 제공하여 즉시 적용 가능성을 높임
- 공통 목표는 반복 작업 단축, 플랫폼 간 추상화, 안전성·가독성 향상임
클립보드 관련 스크립트
-
copy와 pasta: 시스템 클립보드 매니저를 감싸는 래퍼로, macOS의 pbcopy나 Linux의 xclip을 기반으로 함
-
copy: 출력을 클립보드로 복사
-
pasta: 클립보드에서 텍스트를 가져와 출력
-
pastas: 클립보드 상태가 변경될 때마다 새로운 내용을 실시간으로 출력하는 툴
- 복사한 모든 링크를 파일로 저장하거나, 복수의 링크를 일괄 다운로드할 때 유용함
-
cpwd: 현재 디렉터리 경로를 클립보드에 복사
파일 관리 스크립트
-
mkcd foo: 디렉터리 생성 및 즉시 이동 (mkdir foo && cd foo 단축)
-
tempe: 임시 디렉터리로 이동 (cd "$(mktemp -d)"), 샌드박스 환경에서 임시작업 시 정리 필요 없음
- 예: 대용량 파일 다운로드 후 활용, 임시 스크립트 실행 등
-
trash: 파일을 휴지통으로 이동(macos/Linux 지원), 단순 rm 대비 실수 방지용
-
mksh: 새로운 shell script 파일을 생성하고, 실행 가능하게 설정하며, 에디터로 즉시 열기
인터넷 관련 스크립트
-
serveit: 로컬 디렉터리에서 정적 파일 서버 구동 (기본 8000번 포트, Python 미설치 시 대체 방식 지원)
-
getsong, getpod: yt-dlp 기반, YouTube/SoundCloud 등에서 고음질 오디오 클립, 팟캐스트 추출
-
getsubs: 지정한 영상에서 공식 혹은 자동 생성 자막을 다운로드
-
wifi off/on/toggle: 시스템 WiFi 제어, 네트워크 문제 해결 시 사용
-
url: URL 문자열을 파싱하여 프로토콜, 호스트명, 경로, 쿼리, 해시 등 분리 및 추출
텍스트 가공 스크립트
-
line 10: 표준 입력에서 특정 줄 출력 (head, tail과 유사)
-
scratch: 임시 텍스트 버퍼를 Vim에서 빠르게 여는 용도, 일회성 필기나 작은 변환 작업에 적합
-
straightquote: 스마트 인용부호를 일반(직선) 인용부호로 변환, 코드 내 인용부호 문제 방지 및 파일 용량 축소
-
markdownquote: 각 줄 앞에 > 붙이기, Markdown 인용문 생성
-
length: 입력 문자열의 길이 반환 (wc -c 대체 가능)
-
jsonformat: JSON 데이터를 예쁘게 출력
-
uppered/lowered: 문자열을 대문자/소문자로 변환
-
nato bar: 입력 문자열을 NATO 알파벳 코드로 변환 (Bravo Alfa Romeo 등)
-
u+ 2025: 유니코드 문자의 이름과 기호 조회
-
snippets foo: 특정 단축 문구를 집에서 불러오기 (예: 화살표→, 템플릿 메시지 등 일주일에 1-2번 사용)
REPL 런처 관련
- Ruby의 irb에서 영감받아 다양한 언어의 REPL을 빠르게 실행:
-
iclj: Clojure
-
ijs: Deno(없으면 Node)
-
iphp: PHP
-
ipy: Python
-
isql: SQLite(Bash에서 메모리 모드)
날짜 및 시간 스크립트
-
hoy: 현재 날짜를 ISO 형식(예시: 2020-04-20)으로 출력, 파일명 등 접두어로 활용
-
timer 10m: 시간 타이머(10분 등), 완료 시 소리와 OS 알림 전송
-
rn: date와 cal을 활용해 현재 시각과 월간 달력을 보기 좋게 출력
오디오, 비디오, 이미지 처리
-
ocr: macOS에서 이미지 파일의 텍스트 추출(확장 예정)
-
boop: 직전 명령 성공/실패에 따라 소리 알림(테스트 실행 뒤 등에서 직관적 활용)
-
sfx: 특정 효과음 파일(.ogg)을 재생, boop, timer와 연계
-
tunes: mpv로 오디오 파일 재생(셔플 지원)
-
pix: mpv로 사진 보기
-
radio: 선호하는 인터넷 라디오 스테이션 퀵 런처
-
speak: stdin에서 읽은 텍스트의 Markdown 제거 후 음성합성(TTS)
-
shrinkvid: ffmpeg로 영상 파일 압축
-
removeexif: JPEG에서 EXIF 데이터 삭제, 향후 다양한 포맷 지원 예정
-
tuivid: 터미널 내에서 영상 시청, 실사용 적으나 독특한 기능
프로세스 관리
-
each: xargs, find ... -exec의 대안, 복잡한 명령어 실행을 쉽게 수행
-
running foo: 지정 키워드로 실행 중 프로세스(PID, 명령 등) 검색 후 읽기 쉬운 형태로 출력
-
murder: kill의 감싸기, 순차적으로 부드러운 시그널부터 강제로 점진 종료. 프로그램 종료 요청 시 실수 방지
-
waitfor $PID: 지정한 PID가 종료될 때까지 대기, 계속 깨어 있는 상태 유지
-
bb my_command: 명령어를 진짜 백그라운드 모드로 실행, 데몬 등의 실행에 적합
-
prettypath: $PATH를 줄바꿈으로 한눈에 보기 쉽게 출력(디버깅 시 유용)
-
tryna my_command/trynafail my_command: 명령어 성공 시까지 반복(run until success), 실패 시까지 반복(run until fail), 네트워크 등 다양한 자동화에 응용
빠른 참조 툴
-
emoji: 키워드로 emoji 검색 및 출력
-
httpstatus: 모든 HTTP 상태코드 목록 출력, 특정 코드 설명 확인
-
alphabet: 영문 알파벳 소문자·대문자 전체 출력(의외로 사용 빈번)
시스템 관리
-
theme 0/theme 1: 시스템 전체 테마(다크/라이트) 변경, Vim, Tmux 등 연계
-
sleepybear: 시스템 슬립 모드 진입(macOS, Linux)
-
ds-destroy: .DS_Store 파일 재귀 삭제, macOS 사용자 폴더 정리 시 유용
기타
-
catbin foo: PATH 내 파일의 소스코드 바로 보기
-
notify: OS 수준 알림 전송, 장시간 작업 완료 시 바로 알림
-
uuid: 버전 4 UUID 생성
결론
이 글에 소개된 스크립트들은 필자가 실제로 자주 활용하는 도구임
직접 만든 단축 명령 스크립트는 업무 효율화, 실수 방지, 생산성 향상에 매우 효과적임
독자 역시 자신만의 자동화 스크립트를 만들어 활용하는 것을 추천함