• 글의 개요

    • Bash 스크립트에 Ruby를 결합해 CLI 도구 자동화를 이루는 다양한 트릭을 소개함.
    • 다른 스크립팅 언어도 가능하지만, Ruby의 가독성과 유연성을 강조.
  • 왜 Bash 대신 Ruby인가?

    • Ruby는 명확한 자료형(정수, 부동소수점, 문자열, 배열, 해시 등)을 제공해 코드 가독성을 높임.
    • macOS 사용자에게는 homebrew가 설치되어 있다면 기본으로 딸려오는 Ruby 덕분에 활용도가 높음.
    • CocoaPod, Fastlane 등 빌드/자동화 스크립트에서 Ruby가 유용하게 활용됨.
    • JSON, CSV, YAML 등 다양한 데이터 포맷을 내장 라이브러리로 손쉽게 다룰 수 있음.
  • Ruby One-Liner 스크립트 작성하기

    • 한 줄짜리 스크립트는 ruby -e "<expression>" 형식으로 실행 가능함.
    • 파이프와 리다이렉션을 이용해 다른 CLI 도구의 결과를 받아 처리할 수 있음.
    • -r 옵션으로 필요한 라이브러리를 미리 로드해 기능 확장을 지원함.
  • 다른 CLI 도구와 결합해서 사용해보기

    • AWS CLI, Git, GitHub CLI, jq, curl 등과 Ruby를 결합하면 단일 기능의 강점을 극대화할 수 있음.
    • JSON 데이터 처리 예시:
      • curl로 API 호출 후 Ruby의 JSON 라이브러리로 데이터를 파싱하고 특정 필드(예: title) 출력.
    • YAML 데이터 처리 예시:
      • cat config.yaml으로 파일 읽은 후, Ruby의 YAML 라이브러리로 파싱해 특정 설정 값을 추출.
    • CLI 도구의 결과를 Ruby로 추가 가공해 보다 유연한 자동화 워크플로우를 구축 가능.
  • 정형화되지 않은 데이터 처리 (Git Log 예시)

    • 모든 데이터가 JSON/CSV/YAML처럼 정형화되어 있지 않을 수 있음.
    • Ruby의 정규표현식과 텍스트 처리 기능으로 로그, 시스템 메시지 등을 한 줄씩 읽어 필요한 정보를 추출할 수 있음.
    • Git Log 스크립트 예시:
      • git log --oneline #{file}으로 한 줄짜리 커밋 로그 추출.
      • gum choose --limit 100으로 원하는 로그를 인터랙티브하게 선택.
      • 각 선택된 로그에서 커밋 해시를 추출해 git show로 상세 변경 내역 출력.
      • 최종적으로 선택된 로그를 체크리스트 형태로 재구성하여 출력.
  • 마치며

    • CLI 도구와 Ruby 스크립트를 결합하면 간단한 커맨드 조합으로 강력한 자동화 도구를 만들 수 있음.
    • 복잡한 데이터 처리, 로그 분석, 버전 관리 작업을 효율적으로 자동화해 생산성을 극대화할 수 있음.
    • 작은 시작이 큰 변화를 불러오며, 여러분도 자신만의 사이드 프로젝트를 시작해보길 권장함.
    • 참고로 Perl도 유용하며, Perl One-Liners Guide와 같은 자료가 도움이 될 수 있음.