개발자라면 셸(Shell)과의 친숙함이 매우 중요합니다. 다양한 스크립트를 작성하거나 시스템을 관리하는 데 있어 효율적인 도구가 필요하기 때문입니다. 최근 GitHub에서 주목받고 있는 프로젝트인 Rubish는 이러한 필요를 충족시키기 위해 탄생했습니다. Rubish는 순수 루비로 작성된 유닉스 셸로, 기존 Bash 스크립트를 수정 없이 사용할 수 있는 호환성과 루비의 강력한 기능을 결합하여 새로운 차원의 셸 사용 경험을 제공합니다.

Rubish의 주요 특징

1. Bash와 완벽 호환

Rubish는 기존 Bash의 모든 기능을 지원합니다. 기존에 작성한 Bash 스크립트를 Rubish에서 그대로 실행할 수 있으며, 만약 작동하지 않는 스크립트가 있다면 그것은 버그로 간주되고, 즉시 보고할 수 있습니다. 이는 사용자에게 큰 장점으로 작용합니다.

2. 루비와의 깊은 통합

Rubish는 단순히 루비로 구현된 셸이 아닙니다. 루비의 기능을 깊이 통합하여, 사용자는 셸 명령과 루비 코드를 자연스럽게 혼합할 수 있습니다. 블록, 이터레이터, 라이브러리와 같은 루비의 강력한 기능을 셸 스크립트에서도 사용할 수 있습니다.

3. Ruby 조건문과 메소드 호출 스타일

Rubish에서는 루비 표현식을 조건문 안에서 직접 사용할 수 있습니다. 예를 들어, 루비를 이용한 조건문을 작성할 수 있는데, 이는 기존의 셸 스크립트와는 또 다른 차별성을 제공합니다.

COUNT=5
if { count.to_i > 3 }
  echo 'count is greater than 3'
end

또한, 전통적인 UNIX 스타일의 명령어 호출 외에도 루비 메소드 호출 스타일을 사용할 수 있어 명령어 표현이 더욱 유연해집니다.

ls -la  # UNIX 스타일
ls('-la')  # 루비 메소드 호출 스타일

4. 파이프라인과 메소드 체이닝

Rubish는 메소드 체이닝을 지원하여, 명령어를 마치 루비 메소드처럼 연속적으로 호출할 수 있습니다. 이를 통해 더욱 가독성 높은 코드를 작성할 수 있습니다.

ls().sort.uniq

설치 방법

Rubish를 설치하는 방법은 두 가지가 있습니다: Homebrew를 이용하거나 소스에서 직접 빌드하는 방법입니다.

Homebrew를 통한 설치 (macOS)

brew tap amatsuda/rubish
brew install --HEAD rubish

소스에서 직접 설치

git clone https://github.com/amatsuda/rubish.git
cd rubish
bundle install
bundle exec exe/rubish

기본 사용법

Rubish를 설치한 후, 간단하게 아래 명령어로 인터랙티브 셸을 시작할 수 있습니다.

rubish

단일 명령어를 실행하고 싶다면 다음과 같이 사용할 수 있습니다.

rubish -c 'echo hello'

스크립트를 실행할 수도 있습니다.

rubish script.sh

로그인 셸로 설정하기

Rubish를 기본 로그인 셸로 설정할 수 있습니다. 다음 명령어를 실행해보세요:

echo "$(which rubish)" | sudo tee -a /etc/shells
chsh -s "$(which rubish)"

실무에서의 활용 시나리오

Rubish는 다양한 개발 환경에서 유용하게 사용될 수 있습니다. 예를 들어, 데이터 처리 작업을 할 때 루비의 강력한 라이브러리와 함께 사용할 수 있습니다. 파일을 읽고, 데이터를 필터링하고, 최종적으로 결과를 출력하는 스크립트를 만들어 보세요.

cat(file.txt).grep('error').each { |line| puts line }

이렇게 하면 오류 메시지만 필터링하여 쉽게 관리할 수 있습니다. 기존의 Bash 스크립트를 Rubish로 대체하여, 코드의 가독성과 유지 보수성을 높이는 데 기여할 수 있을 것입니다.

비슷한 도구들과의 비교

Rubish는 기존의 Bash와 Zsh와 같은 셸과 비교할 수 있습니다. Bash는 안정성과 호환성에서 뛰어나지만, 루비와의 통합이 부족합니다. 반면, Rubish는 루비의 기능을 활용하여 스크립트를 더 강력하게 만들 수 있는 장점이 있습니다. Zsh 역시 기능이 풍부하지만, Rubish와 같은 루비의 통합은 제공하지 않습니다.

마무리

Rubish는 기존의 셸 환경에 새로운 차원을 더할 수 있는 흥미로운 프로젝트입니다. 루비를 사랑하는 개발자라면 Rubish의 매력에 빠질 수밖에 없을 것입니다. 개발자 여러분께서도 Rubish를 설치하고, 그 강력한 기능들을 직접 경험해 보기를 권장합니다.

GitHub에서 Rubish를 확인하고, 직접 사용해 보세요: Rubish GitHub