유닉스/리눅스 명령어를 대체하는 모던 커맨드라인(Modern Unix/Linux Command line)
개요
Unix/Linux 는 CLI(command line interface)는 익숙해지기 어렵지만 잘 활용하면 생산성이 높아지고 pipe 를 활용하여 여러 유틸리티를 연결하면 반복 작업 단축, 자동화도 가능해집니다.
여러 장점이 있지만 전통적인 유닉스/리눅스 명령어들은 작성된지 40년이 넘는 경우가 많아서 현재 컴퓨팅 환경과 맞지 않고 배우고 익히는데 시간이 너무 많이 걸리는 문제가 있습니다.
이런 문제를 해결하기 위해서 새로운 명령어들이 많이 작성되고 사용되어지고 있지만 대부분의 경우 배포판에 기본 포함되지 않은 경우가 많고 자료들도 예전 명령어를 위주로 되어 있어서 특별히 신경쓰지 않으면 접근이 어렵습니다.
마침 github의 "modern unix" 라는 저장소에 이런 명령어를 정리해 놓았길래 이를 참고해서 예전 명령어를 대체하는 새로운 명령어를 소개해 봅니다.
저장소를 보니 저도 모르는 명령어가 많이 있고 rust 로 작성한 경우가 많다는 공통점이 있습니다.
새로운 명령어는 직관적이고 속도도 빠르고 꼭 필요한 기능만 제공해서 익히기 쉬운 등 여러가지 장점이 있지만 배포판에 기본 포함되지 않는다면 널리 확산되기는 어려울 듯 합니다.
저도 앞으로 되도록이면 ls 대신 exa 를 find 대신 fd 를 사용하는 등 새로운 명령어를 쓰도록 노력할 예정이지만 제가 관리 가능한 서버가 아니라면 새로운 명령 사용이 불가능하므로 기존에 사용했던 명령어들도 버릴수는 없을 것 같습니다.
하지만 자주 쓰지 않는데 사용이 복잡한 명령어(예: sed 나 awk 로 패턴 처리등) 등은 사용때마다 매뉴얼을 찾아보게 되므로 이런 건 새로운 명령어를 적극적으로 사용할 예정입니다.
패키지 분류는 제가 임의로 했습니다.
패키지를 일괄 설치하려면 rust 와 golang 개발 도구를 설치하고 다음 스크립트를 실행하면 됩니다.
wget https://raw.githubusercontent.com/lesstif/modern-linux-command-installer/main/modern-command-install.sh bash modern-command-install.sh
OSX 에서는 brew 로 설치하는게 편리합니다.
echo "bat exa delta dust duf broot mcfly jq bottom procs gping httpie tldr" > modern-unix-cmd.txt brew install $(cat modern-unix-cmd.txt)
Core utils
GNU core utils 패키지에 있는 명령어들을 대체하는 커맨드입니다.
cat → bat(🦇)
ls → exa
exa 는 사용이 쉽고 더 나은 정보를 제공하는 ls 대체 명령어.
ls → lsd
lsd 는 ls 를 대체하는 커맨드로 위에 있는 exa 를 더 추천합니다.
more/less/diff → delta
delta 커맨드 는 pager 인 more/less 커맨드 와 파일간 차이점을 표시하는 diff 를 대체하는 명령어입니다.
du → dust(💽)
dust(du + rust) 는 du(disk usage) 명령어 대체
du → duf(💽)
검색
tree(🌲) → broot
find → fd(🔍)
ack → ag
ack-grep 을 대체할 수 있는 빠른 코드 검색 도구 ag(silver searcher) 참고
grep → ripgrep
grep 을 대체할 수 있는 빠른 문자열 검색기 - ripgrep 참고
fzf
A general purpose command-line fuzzy finder.
text processing
history → mcfly
readline 의 history 명령어를 대체하는 mcfly 명령어
cut, awk → choose
cut 명령과 awk 명령어 대체하는 choose 저장소
sed → jq
json 데이타를 sed 로 처리하지 말고 jq 명령어 사용
sed → sd
sd는 찾기/바꾸기시 sed 대신 사용할 수 있는 직관적인 명령어
Process & System
bottom
bottom은 process 나 system 모니터링 도구
glances
glances은 top/htop 의 대체제
gtop
gtop은 터미널용 시스템 모니터링 도구
time → hyperfine
hyperfine은 커맨드라인에서 명령어의 성능을 측정할 수 있는 도구.
ps→ procs
procs은 프로세스 상태를 보는 /wiki/spaces/LPT/pages/887554398 명령어의 대체제
Network
ping→ gping
gping은 상대 호스트가 살아있는지 ICMP 패킷을 보낼수 있는 명령어로 graph 제공
dig → dog(🐕)
dog 는 사용하기 쉬운 dig 대체제
curl → httpie
httpie 는 curl처럼 커맨드에서 HTTP 요청을 수행할 수 있는 명령어
curl → curlie
curlie 는 httpie 는 좋지만 curl 에 없는 기능때문에 꺼려지는 사용자를 위한 curl wrppaer로 httpie 와 유사한 사용법 제공
xh
xh 는 성능에 집중한 HTTP 요청을 보내는 도구로 httpie 와 좋은 디자인을 참고
그외
cheat
cheat는 대화형으로 cheat sheet 를 만들수 있는 명령어
tldr
tldr은 man 의 보완재로 명령어들의 주요 사용법을 간략하게 제공
cd ->zoxide
zoxide 는 cd 대체제