항상 자주 사용하는 내가 만든 스크립트들

5 hours ago 1

  • 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 생성

결론

이 글에 소개된 스크립트들은 필자가 실제로 자주 활용하는 도구임
직접 만든 단축 명령 스크립트는 업무 효율화, 실수 방지, 생산성 향상에 매우 효과적임
독자 역시 자신만의 자동화 스크립트를 만들어 활용하는 것을 추천함

Read Entire Article