터미널에서 데이터를 표로 보고 필터링하는 새로운 셸
디렉터리 목록을 표로 확인하고, CPU 사용량이 높은 프로세스만 골라내는 장면을 떠올려 보세요. Nushell은 파일과 데이터를 단순한 텍스트가 아닌 구조화된 정보로 다루는 셸입니다. 덕분에 복잡한 작업을 여러 단계로 나누어 조합할 수 있고, 기존 셸에서 텍스트를 파싱해야 했던 과정을 더 직관적으로 처리할 수 있습니다.
구조화된 데이터 파이프라인
Nushell은 Unix 셸의 파이프라인 개념을 확장하여 구조화된 데이터를 처리합니다. 명령어는 데이터를 생성하거나, 필터링하거나, 최종 출력을 소비하는 세 가지 역할 중 하나를 수행합니다. 예를 들어 ls 명령은 디렉터리 내용을 행과 열로 이루어진 테이블로 반환하며, where 명령은 이 테이블에서 특정 조건에 맞는 행만 추려냅니다. 이러한 값들은 파이프 기호(|)를 통해 다음 명령으로 전달되며, 최종적으로 table 명령이 결과를 화면에 표시합니다. 이 방식은 동일한 명령어를 다양한 조합으로 재사용할 수 있게 하여 워크플로우를 유연하게 만듭니다.
파일과 URL의 구조화 로딩
Nushell은 파일이나 URL의 내용을 원시 텍스트로 읽을 수도 있지만, 포맷을 인식하면 구조화된 데이터로 로드합니다. .toml 파일의 경우 open 명령을 사용하면 내부의 키와 값이 테이블 형태로 표시되어 특정 필드를 쉽게 탐색할 수 있습니다. 이는 기존 셸에서 grep이나 sed 같은 도구를 사용해 텍스트를 파싱해야 했던 과정을 단순화합니다.
플러그인 생태계와 확장성
Nushell은 내장 명령과 동일한 구조화된 데이터 모델을 따르는 플러그인을 지원합니다. 플러그인은 nu_plugin_* 네이밍 컨벤션을 따르는 바이너리이며, JSON-RPC 프로토콜을 통해 셸과 통신합니다. 필터 역할을 하는 플러그인은 데이터를 하나씩 스트리밍하여 처리하고, 싱크 역할을 하는 플러그인은 최종 데이터 벡터를 받아 자유롭게 출력합니다. awesome-nu 저장소에는 다양한 플러그인이 목록으로 정리되어 있어 추가 기능을 쉽게 찾아볼 수 있습니다.
설치와 플랫폼 지원
Nushell은 Windows, macOS, Linux를 1급 지원하며 크로스 플랫폼 동작을 보장합니다. GitHub Action에서 사용하려면 setup-nu 액션을 참고하면 됩니다.
성숙도와 사용 전 확인 사항
이 프로젝트는 최소 기능 제품(MVP) 수준의 품질에 도달했으며, 많은 사용자가 일상적인 드라이버로 활용하고 있습니다. 그러나 일부 명령어는 여전히 불안정할 수 있으며, Nushell의 디자인은 성숙함에 따라 변경될 수 있습니다. MIT 라이선스로 제공되며, zoxide, starship, oh-my-posh 등 여러 도구와 공식적으로 지원되는 관계가 있습니다. 기존 셸 스크립트를 그대로 이식하기보다는 구조화된 데이터 처리 방식을 이해하고 적용하는 것이 중요하며, 특정 명령어의 안정성을 확인한 후 도입하는 것이 좋습니다.