์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ชจ๋˜ ์ปค๋งจ๋“œ๋ผ์ธ(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(๐Ÿฆ‡)

bat ์€ cat ์„ ๋Œ€์ฒดํ•˜๋Š” ๋ช…๋ น์–ด


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(๐Ÿ’ฝ)

duf ๋Š” df ๋ณด๋‹ค ๋” ๋‚˜์€ ๋Œ€์ฒด์ œ.


๊ฒ€์ƒ‰

tree(๐ŸŒฒ) → broot

tree ๋ช…๋ น์„ ๋Œ€์ฒดํ•˜๋Š” broot ์ €์žฅ์†Œ

find → fd(๐Ÿ”)

fd ๋Š” ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด find ๋ช…๋ น ๋Œ€์ฒด์ œ

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 ๋Œ€์ฒด์ œ

๊ฐ™์ด ๋ณด๊ธฐ

Ref