/
GNU coreutils 를 rust 로 재구현한 uutils coreutils

GNU coreutils 를 rust 로 재구현한 uutils coreutils

개요

GNU coreutils 은 기본 GNU 명령어 세트를 묶은 패키지로 cat, basename, tr, ln 같은 시스템 기본 명령어를 제공합니다.

RHEL이나 CentOS 에서는 rpm -ql 명령어로 제공하는 파일의 목록을 확인할 수 있습니다.

 Click here to expand...
$ rpm -ql coreutils | grep bin

/usr/bin/[
/usr/bin/arch
/usr/bin/b2sum
/usr/bin/base32
/usr/bin/base64
/usr/bin/basename
/usr/bin/cat
/usr/bin/chcon
/usr/bin/chgrp
/usr/bin/chmod
/usr/bin/chown
/usr/bin/cksum
/usr/bin/comm
/usr/bin/cp
/usr/bin/csplit
/usr/bin/cut
/usr/bin/date
/usr/bin/dd
/usr/bin/df
/usr/bin/dir
/usr/bin/dircolors
/usr/bin/dirname
/usr/bin/du
/usr/bin/echo
/usr/bin/env
/usr/bin/expand
/usr/bin/expr
/usr/bin/factor
/usr/bin/false
/usr/bin/fmt
/usr/bin/fold
/usr/bin/groups
/usr/bin/head
/usr/bin/hostid
/usr/bin/id
/usr/bin/install
/usr/bin/join
/usr/bin/link
/usr/bin/ln
/usr/bin/logname
/usr/bin/ls
/usr/bin/md5sum
/usr/bin/mkdir
/usr/bin/mkfifo
/usr/bin/mknod
/usr/bin/mktemp
/usr/bin/mv
/usr/bin/nice
/usr/bin/nl
/usr/bin/nohup
/usr/bin/nproc
/usr/bin/numfmt
/usr/bin/od
/usr/bin/paste
/usr/bin/pathchk
/usr/bin/pinky
/usr/bin/pr
/usr/bin/printenv
/usr/bin/printf
/usr/bin/ptx
/usr/bin/pwd
/usr/bin/readlink
/usr/bin/realpath
/usr/bin/rm
/usr/bin/rmdir
/usr/bin/runcon
/usr/bin/seq
/usr/bin/sha1sum
/usr/bin/sha224sum
/usr/bin/sha256sum
/usr/bin/sha384sum
/usr/bin/sha512sum
/usr/bin/shred
/usr/bin/shuf
/usr/bin/sleep
/usr/bin/sort
/usr/bin/split
/usr/bin/stat
/usr/bin/stdbuf
/usr/bin/stty
/usr/bin/sum
/usr/bin/sync
/usr/bin/tac
/usr/bin/tail
/usr/bin/tee
/usr/bin/test
/usr/bin/timeout
/usr/bin/touch
/usr/bin/tr
/usr/bin/true
/usr/bin/truncate
/usr/bin/tsort
/usr/bin/tty
/usr/bin/uname
/usr/bin/unexpand
/usr/bin/uniq
/usr/bin/unlink
/usr/bin/users
/usr/bin/vdir
/usr/bin/wc
/usr/bin/who
/usr/bin/whoami
/usr/bin/yes
/usr/sbin/chroot

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


같이 보기

Ref

Related content

리눅스 설치와 관리
리눅스 설치와 관리
More like this
알파인 리눅스(Alpine Linux)
알파인 리눅스(Alpine Linux)
More like this
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
More like this
리눅스 스토리지 디바이스 정보를 출력하는 lsblk 명령어 사용법
리눅스 스토리지 디바이스 정보를 출력하는 lsblk 명령어 사용법
More like this
CoreOS Container Linux 서비스 종료
CoreOS Container Linux 서비스 종료
More like this
mbed TLS(구 polarssl) 빌드하기
mbed TLS(구 polarssl) 빌드하기
More like this