elsa in mac

유용한 terminal CLI 도구들 (2025.07) #1 본문

Terminal(CLI,TUI)

유용한 terminal CLI 도구들 (2025.07) #1

elsa in mac 2025. 7. 15. 22:50

2025.07월 
Terminal 에서 사용할 수 있는 유용한 CLI Tool를 소개합니다.  포스트 제목에 #1 이 붙었다는 것은 소개할 것들이 좀 더 남았다는 것이니, 7월 말에 또 보자구요. 

 

타자연습 - smassh

첫 번째 CLI 도구는 Terminal에서 타자 연습을 할 수 있는 smassh 입니다. 

PYthon으로 작성된 도구로 terminal 기반이지만, mouse를 지원하고 군더더기 없이 깔끔하고 예쁜 화면을 보여 줍니다. 

smassh 실행 화면

설치는

# 설치 
pip install smassh

# 실행 
smassh

종료는 ctrl-c ..

 

 

원하는 도시의 날씨를 확인하자 - yr

현시각 날씨 정보를 표시

yr는 특별한 설정 없이 설치 후 곧바로 사용할 수 있는 날씨확인 CLI도구입니다. 
go언어로 적성되었기에 go로 빌드해서 사용하면 됩니다. 설치는 다음과 같습니다. macOS의 경우에는 brew로 빌드 없이 사용할 수 있습니다. 

# macOS
brew tap timharek/top
brew install yr


# linux 
go install git.sr.ht/~timharek/yr/cmd/yr@latest

옵션으로는 now(현재 날씨), forecast(1시간 단위 10일간의 예상), today(현재 시각부터 1시간 단위), tomorrow(1시간 단위 내일 날씨) 등을 사용할 수 있습니다. 

오늘의 날씨

 

 

S/W 프로젝트 Code Counter - scc

다음으로 소개할 CLI 도구는 S/W 개발에 도움이 될 만한 도구입니다. 프로그램을 작성하다 보면, 프로젝트의 구성파일이 어떤 언어로 구성되어 있고, 각 언어별 코드 라인수가 궁금할 때가 있습니다. 그리고, 대략 개발비용을 추산해야 할 경우도 있죠. 전통적으로는 cloc 나, tokei 같은 CLI 도구들을 많이 사용하는데, 이번에 소개해 드릴 scc는 보다 직관적이고 사용이 간단하며 종합적으로 확인할 수 있는 도구입니다. 

scc 실행 예

위의 스샷만 봐도 직관적으로 무엇인지 딱 알 수 있습니다. 지금 개발하고 있는 프로젝트의 소스코드를 대상으로 돌려 본 건데, 개발비 가치가 60만 불, 개발 소요기간은 11개월, 개발인원은 4.7명 정도에 해당한다고 (ㅋㅋㅋ.오...). 그렇군요.. 실제로는 1인 개발이고, 2달 정도인데, 말이죠..   일단 응답 속도가 매우 빠릅니다. 위의 스샷을 보면 알겠지만, 거의 100개가 넘는 파일을 분석하는데 명령을 내리자 거의 즉각적으로 결과가 나오네요. 

설치 방법 및 다양한 옵션과 usecase를  github에 가면 홈페이지에서 확인하실 수 있습니다. 굉장히 전문적인 지식 베이스로 만들어진 CLI 도구입니다. 

 

 

자주쓰는 명령어를 alias로 쉽게 말들자 - alman

다음 소개할 CLI도구는 alias를 쉽게 만들고 관리할 수 있는 alman(Intelligent Alias Manager)이라는 도구로 linux 및 macOS를 지원합니다. 

terminal에서 명령어들을 사용하게 되면, history에 누적이 되게 되는데, alman은 history 혹은 사용자가 내린 명령라인을 추적, 통계를 통해 자주 사용하게 되는 명령라인을 sorting 합니다. 그리고, 사용자가 자주 사용하는 명령라인을 alias로 쉽게 만들 수 있도록 도와줍니다. 

설치 방법은 Relase에서 다운로드하거나, cargo로 직접 빌드하여 사용할 수 있습니다.  빌드 방법은 다음과 같습니다. 

# git clone 
https://github.com/vaibhav-mattoo/alman.git

# cd 
cd alman 

# build 
cargo build --release 

# binalry..
cd target/release

다운로드 받은 혹은 빌드한 binary를 path directory로 복사한 후, shell configuration을 해 줘야 합니다. 

# Bash 사용자 , ~/.bashrc 파일에 추가 
eval "$(alman init bash)"

# reload configuration 
source ~/.bashrc 



# Zsh 사용자 , ~/.zshrc 파일에 추가
eval "$(alman init zsh)"

# reload configuration 
source ~/.zshrc 



# Fish 사용자, ~/.config/fish/config.fish 파일에 추가 
alman init fish | source

# reload configuration 
source ~/.config/fish/config.fish

처음 alman이 실행되게 되면 우선적으로 history의 정보를 참조하여초기화를 진행한 후, 이후부터는 사용자가 terminal에서 사용하는 명령라인을 인식하고 통계에 활용하게 됩니다. 

보통 alias를 사용하는 이유는 복잡하고 긴 줄의 명령라인을 외우기에 어렵고 시간이 지나면 사용법을 몰라 다시 확인하는 번거로움이 있다 보니, 자주 사용하지 않더라도 중요한 명령라인의 경우 alias로 정의해 놓는 경우가 있습니다.  그러려면 일반적으로는 사용하는 shell의 설정파일을 에디터로 열고, alias를 직접 추가하거나 수정한 후, 다시 reload를 해야 하지요. 

alman을 사용하면 매우 직관적으로 alias를 관리할 수 있습니다.  
아래는 예 인데요, 필자의 경우에는 ghostty를 직접 빌드해서 사용을 하게 되며, ghostty를 빌드하기 위해서는 꽤나 길고 복잡한 명령라인을 사용해야 합니다. 

# ghostty build command 
 ../zig build -p ~/.local -Doptimize=ReleaseFast -Dgtk-wayland=true -Dgtk-x11=false  -Dcpu=apple_m1 -Dtarget=native -Dstrip=true
 
 # alman을 이용해서 alias 추가 
 # gb 로 alias
 alman add -c "../zig build -p ~/.local -Doptimize=ReleaseFast -Dgtk-wayland=true -Dgtk-x11=false  -Dcpu=apple_m1 -Dtarget=native -Dstrip=true" gb
 
 # alias 확인 
 alman list 
 
 # 해당 alias 삭제 
 alman remove gb

아래는 위의 예에 대한 실제 스삿입니다. 

추가, 삭제, 수정한 후에는 shell confoiguration을 reload 해 줘야 합니다. 그럼 즉시 해당 alias를 바로 사용할 수 있습니다. 

그 밖에 다양한 옵션과 use case들은 해당 github에서 확인하시면 됩니다. 

alias를 지정할 때 고민되는 한 가지가 alias 이름을 정하는 것인데, alman에는 사용자가 추가한 alias에 대해 alias 이름을 추천 제안하는 기능이 있습니다. 

alman을 실행하고, c(change alias)를 한 후, list에서 변경하고자 하는 alias를 선택하면 위의 스샷처럼 alias suggestion 항목이 나타나게 됩니다. 

alias 목록 편집은 alman tui 로 실행한 후, 아래 스샷 처럼, l(소문자 L)키를 누른 후 편집하면 됩니다. 

alman tui로 실행한 모습

alman의 alias 저장 파일은 alman --help를 하면, 위치를 확인할 수 있습니다. 

alias를 관리하기 위해 shell profile 을 수정할 필요없이 alias를 별도로 관리할 수 있다는 점이 장점으로, 필자처럼 alias를 많이 사용하는 사용자에게는 매우 유용한 도구가 아닐 수 없습니다. 

 

 

압축파일 관리를 쉽게 - ouch

다음 CLI 도구는 압축파일을 쉽게 관리할 수 있는 ouch 입니다. 압축파일 종류는 정말 굉장히 많지요.

예를 들어 어디서 압축파일을 받았는데, 확장자가 .sz 입니다. (이게 뭐여 ??) 혹은 확장자가 .tar.xz.gz  뭐 이런 거.. 당황스럽지요.. (이거 뭘로 압축을 풀어야 하는 거야?) 

대부분 각 확장자에 따른 압축관리 도구들이 존재합니다.  그런데, 이 각각의 압축파일을 해제하기 위해 일일이 다 익혀야 하고, 옵션도 알아야 하기에 꽤나 번거롭습니다. 가끔 사용하는데 기억하기도 어렵지요.. 그래서 정말 간단하게 사용할 수 있는 압축파일 관리 도구가 절실한데 ouch가 바로 그럼 CLI 도구입니다. 

ouch를 사용하면 어떤 압축파일이던 간단하게 해제하고. 또 원하는 형식으로 압축할 수 있습니다. 

압축파일 화장자는, .tar, .tar.gz, .7z, .gz, .xz, .lzma, .bz, .bz2, .bz3, .lz4, .sz, .zst, .rar, .br 을 지원합니다. 

사용법은 너무나 단순합니다. 확장자가 뭐든 관계없이 압축을 해제하고 싶으면, decompress, 압축을 하고 싶으면 compress 를 사용하면 됩니다. 

예를 들어, test.tar.gz 을 압축 해제 한다면, ouch decompress test.tar.gz 하면 됩니다. 

test 라는 폴더가 있을 때, 이 폴더를 압축파일로 만들고 싶다면 compress를 하면 됩니다. ouch compress test test-folder.zip 

그냥 압축파일의 확장자를 지정만 해주면 해당 type으로 압축을 합니다.  이보다 더 쉽고 편리한 것이 있을까...

압축을 해제하지 않고, 내용만 확인하고 싶다면 list 옵션을 사용합니다. ouch list test.tar.gz , tree형태로 확인하고 싶다면, 끝에 --tree 만 붙여 주면 됩니다. ouch list test.zip --tree

단지, shared library를 사용하는 압축 형식이 있기 때문에 실행을 했을 때 오류가 발생한다면 오류에 해당하는 runtime dependencies를 설치해 주면 됩니다. liblzma, libbz2, libbz3, libz 정도로 본인이 사용하는 Linux 배포판의 표준 package manager로 install 주면 되겠죠.. 처음부터 할 필요는 없고 특정 압축파일을 해제할 때 오류가 나타난다면 그때 대응하시면 됩니다. 

Linux, macOS(apple silicon, intel), Windows 모두 지원하며,  Rust로 작성되어 있으니, 필요하면 소스코드를 다운로드 받은 후, cargo build --release 로 빌드하시면 됩니다. 

공유하기 링크
Comments