GNU coreutils 를 rust 로 재구현한 uutils coreutils
개요
GNU coreutils 은 기본 GNU 명령어 세트를 묶은 패키지로 cat, basename, tr, ln 같은 시스템 기본 명령어를 제공합니다.
RHEL이나 CentOS 에서는 rpm -ql 명령어로 제공하는 파일의 목록을 확인할 수 있습니다.
coreutils 은 유용하기때문에 Windows 나 OSX 에서도 사용하기를 원하는 경우가 많았고 OSX 는 FreeBSD 와 비슷하므로 사용하는데 큰 문제가 없습니다.
Windows는 구조가 너무 달라서 porting 하는 GNUwin32 같은 프로젝트가 존재했지만 몇 개 프로그램만 이식되었고 사용이 제한적인 문제가 있었습니다.
uutils coreutils은 Rust 언어로 GNU coreutils 을 재구현한 오픈소스로 다양한 OS 에서 사용할 수 있으며 rust 로 작성해 C 언어에 비해 안정성을 높였습니다.
uutils coreutils은 Busybox 처럼 하나의 프로그램으로 빌드되므로 작은 디바이스나 임베딩 장비에서도 사용하기 좋을 듯 합니다.
설치
Rust 의 빌드 툴인 cargo 를 먼저 설치해야 합니다.
github 저장소를 복제합니다.
$ git clone https://github.com/uutils/coreutils $ cd coreutils
buidl 명령어로 플랫폼에 맞는 바이너리를 빌드합니다.
$ cargo build --release
또는 직접 플랫폼을 지정해 줄 수도 있습니다.
$ cargo build --release --features windows $ cargo build --release --features macos $ cargo build --release --features unix
성공적으로 빌드가 끝나면 다음 명령어로 설치해 줍니다. 바이너리는 $HOME/.cargo/bin 에 설치되므로 PATH 환경 변수에 이 경로를 추가하면 됩니다.
$ cargo install --path .
사용
Busybox 처럼 단일 app 으로 나오므로 coreutils 명령어 뒤에 실행할 command 를 지정하면 됩니다.
$ coreutils ls
옵션없이 사용하면 지원하는 명령어를 출력합니다.
$ coreutils coreutils 0.0.8 (multi-call binary) Usage: coreutils [function [arguments...]] Currently defined functions: [, base32, base64, basename, basenc, cat, cksum, comm, cp, csplit, cut, date, dd, df, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, hashsum, head, join, link, ln, ls, md5sum, mkdir, mktemp, more, mv, nl, numfmt, od, paste, pr, printenv,
다음은 cat README.md 와 동일한 역할을 수행합니다.
$ coreutils cat README.md
같이 보기
- linux cat 명령어 사용법
- 리눅스 basename, dirname 으로 경로와 파일 이름 추출하기
- linux tr 명령어 사용법
- 파일과 디렉터리 링크를 만드는 ln 명령어 사용법
- Rust toolchain 을 관리하는 Rustup 사용법