Skip to content

CLI

Contents

CLI

CLICommand Line Interface 의 줄임말로써 말 그대로 터미널 인터페이스만 제공하는 프로그램을 뜻합니다. 반대로 GUI, 즉 Graphic User Interface 에는 우리가 이미 익숙해져 있습니다. 카카오톡, 배틀그라운드, 한컴, 파워포인트, VSCode 같은 게 전부 다 GUI 이기 때문이죠.

여기에서는 다양한 CLI 들을 알아보고 지금까지 배웠던 몇몇 CLI 들은 업그레이드를 해보겠습니다.


CLI 업그레이드하기

참고/출처 : https://wiki.archlinux.org/index.php/Core_utilities#Alternatives

참고/출처 : https://missing.csail.mit.edu/

여러분은 지금까지 리눅스 교재와 이곳의 내용들을 통해서 bash 쉘, git, find, cat, ls, vim, tmux 같은 CLI 툴을 알아보았습니다.

지금부터 이 CLI 툴들을 사용하기 편리하도록 업그레이드 해보겠습니다.

dotfiles

그러기 위해서 먼저 다음의 명령어들을 입력해서 각각의 툴들을 먼저 업그레이드 해야 합니다.

$ sudo apt-get -y -qq install git zsh vim tmux unzip curl wget 
$ ZIPFILE="fd.deb"
$ VERSION=`curl -s https://github.com/sharkdp/fd/releases/latest | cut -d '"' -f 2 | cut -d '/' -f 8`
$ wget -q -O $ZIPFILE -q https://github.com/sharkdp/fd/releases/download/$VERSION/fd_${VERSION:1}_amd64.deb
$ sudo dpkg -i $ZIPFILE
$ DEBFILE="bat.deb"
$ VERSION=`curl -s https://github.com/sharkdp/bat/releases/latest | cut -d '"' -f 2 | cut -d '/' -f 8`
$ wget -q -O $DEBFILE -q https://github.com/sharkdp/bat/releases/download/$VERSION/bat_${VERSION:1}_amd64.deb
$ sudo dpkg -i $DEBFILE
$ DEBFILE="lsd.deb"
$ VERSION=`curl -s https://github.com/Peltoche/lsd/releases/latest | cut -d '"' -f 2 | cut -d '/' -f 8`
$ wget -q -O $DEBFILE -q https://github.com/Peltoche/lsd/releases/download/$VERSION/lsd_${VERSION}_amd64.deb
$ sudo dpkg -i $DEBFILE
$ wget -q "https://github.com/sharkdp/hexyl/releases/download/v0.6.0/hexyl_0.6.0_amd64.deb"
$ sudo dpkg -i hexyl_0.6.0_amd64.deb
$ wget -q -O install_ohmyzsh.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
$ sh install_ohmyzsh.sh --unattended
$ rm install_ohmyzsh.sh
$ git clone -q --recurse-submodules https://github.com/eendroroy/alien-minimal.git ~/.oh-my-zsh/custom/themes/alien-minimal
$ git clone -q https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/plugins/zsh-autosuggestions
$ curl -sfLo ~/.vim/autoload/onedark.vim --create-dirs https://raw.githubusercontent.com/joshdick/onedark.vim/master/autoload/onedark.vim
$ curl -sfLo ~/.vim/colors/onedark.vim --create-dirs https://raw.githubusercontent.com/joshdick/onedark.vim/master/colors/onedark.vim
$ curl -sfLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
$ vim +PlugInstall +qall

하지만 이 명령어들을 다 입력해야 한다니 정말 의욕이 사라지지 않나요? 그래서 제가 이것을 한 방에 설치할 수 있도록 쉘스크립트를 만들어두었습니다.

Speed up!!

이러한 CLI 툴들의 설치와 설정들을 매번 설치하기가 너무 귀찮아서 죽을 수도 있기 때문에 사람들은 dotfiles 라는 이름의 레포지토리에 일관적으로 정리해놓습니다.

Tip

대표적으로 https://github.com/jessfraz/dotfiles, https://github.com/jessfraz/.vim 같은 레포지토리가 유명한 dotfiles 레포지토리입니다. 이렇게 개인적인 설정과 개인적인 CLI 툴 업그레이드를 만들어주어도, 사람들이 그것을 보고 사용하다가 편리하면 그냥 갖다 쓰기도 합니다.

그럼 이제 다음 명령어를 통하여 저의 dotfiles 를 통해 CLI 들을 업그레이드해보겠습니다. 도커 컨테이너에 접속해서 진행해주세요.

물론 여러분도 툴들을 사용하면서 개인적으로 업그레이드하고 싶은 부분이나 마음에 드는 설정을 dotfiles 레포지토리에 저장해놓을 수 있습니다.

⬇ EXECUTE! ⬇

$ git clone https://github.com/ccss17/dotfiles
$ cd dotfiles
$ ./updatepkg.sh
$ ./install.sh
$ chsh -s /usr/bin/zsh    # 기본 쉘을 bash 에서 zsh 로 바꿉니다. 비밀번호를 물으면 당연히 "a" 를 입력하면 됩니다. 

그런 다음 명령어로 다시 도커 컨테이너에 접속해보세요.

⬇ EXECUTE! ⬇

$ exit
$ docker ps -a 
CONTAINER ID        IMAGE                      COMMAND                  CREATED              STATUS                     PORTS               NAMES
e7bdf01c0acb        ccss17/ubuntu              "/start.sh"              About a minute ago   Exited (0) 2 seconds ago                       hungry_albattani
$ docker start -ai e

그러면 더 이상 bash 가 아닌 zsh 쉘로 로그인 되고 모든 CLI 들과 설정들이 업그레이드된 환경이 자동으로 세팅되어 있습니다.

이제 어떻게 업그레이드 되었는지, 그리고 얼마나 편리해졌는지 하나씩 알아보겠습니다.

alias - 더 빨라진 명령 입력

먼저 몇가지 alias 들을 설정함으로써 명령어를 입력하는 타자 횟수를 절약해봅시다. 설정된 alias 들은 ~/.zsh_aliases 파일에 저장되어 있습니다. 그리고 ~/.zsh_aliases~/.zshrc

source ~/.zsh_aliases

로써 적용됩니다. .zshrcbash 가 실행될 때 .bashrc 를 실행하는 것처럼 zsh 이 실행될 때 실행시키는 명령어들을 모아둔 설정 파일입니다.

  • ~/.zsh_aliases 파일에

    alias clear=c
    

    를 설정해두어서 clear 를 매번 누르지 않고 c 만 눌러도 되게끔 할 수 있습니다. 하지만 개인적으로 다음의 alias 를 훨씬 더 많이 쓰게 되는데

    alias cl='clear;ls'
    

    clear 를 하고 ls 를 실행함으로써 파일 목록을 바로 볼 수 있기 때문이죠. 다음을 실행하여 실제로 확인해보세요.

    ⬇ EXECUTE! ⬇

    $ c
    $ cl
    

    Speed up!!

    이로써 만약 여러분이 살아가는 전체 시간동안 clear 명령어를 1만 번 실행시킨다고 가정한다면 10000 * 5 = 5만 번 키보드를 입력해야 하는 것을 10000 * 1 = 1만 번으로 절약하여 4만 번의 타수를 절약 했습니다.

이러한 alias 들을 자기 입맛대로 설정하여 긴 명령어를 단축해서 누를 수 있습니다. 그렇게 제가 저의 입맛대로 설정한 alias 들의 목록이 다음과 같습니다.

alias command
t tmux
v vim
c clear
cs cd ..
ls lsd --icon never
cl clear;ls
l ls
la ls -a
ll ls -la
lt ls --tree
g git
q exit

실제로 위 표의 alias 들이 ~/.zsh_aliases 에 설정되어 있고 도커 컨테이너에서 실행해볼 수 있습니다.

특히 alias ls=lsdlslsd 로 바꾼 것을 알 수 있습니다. 더 이상 ls 자체를 사용하지 않고 ls 를 입력하면 lsd 라는 프로그램이 실행되도록 한 것입니다.

lsd 가 어떤 프로그램이길래 원래 있던 ls 를 버리고 lsd 를 쓰는지는 아래에서 설명합니다.

또한 lsd --icon never--icon never 옵션은 단지 아이콘이 출력되지 않도록 하는 옵션이므로 신경 쓰지 않아도 됩니다.

이렇게 lslsd 로 치환되기 때문에

alias l=lsl 을 입력하면 lsd 로 치환되고

alias ll=ls -lall 을 입력하면 lsd -la 로 바뀝니다.

lslsd

lsd 는 구식인 ls 명령어를 최신식으로 대체한 프로그램입니다. vim 을 연습할 때 사용했던 lolcat 의 디렉토리로 이동해서 다음 명령어로 lslsd 를 비교하며 실행해보세요.

⬇ EXECUTE! ⬇

$ /bin/ls
$ l
$ /bin/ls -al
$ ll

그러면 실행결과가 다음과 같을 겁니다.

이렇게 컬러풀하게 출력결과를 보여줘서 가독성이 훨씬 올려줍니다.

lsd --icon never 에서 --icon never 옵션이 아이콘을 출력하지 않는 옵션이라고 했습니다. 이는 CLI 환경에서 필요한 옵션이기 때문에 만약 macOS 나 리눅스 데스크탑 환경에서 --icon never 옵션을 제거하고 lsd 를 실행하면 다음과 같이 아이콘도 함께 출력되어 가독성이 훨씬 올라가는 것을 알 수 있습니다.

catbat

bat 는 구식인 cat 명령어를 최신식으로 대체한 프로그램입니다. 그럼 catbat 를 비교해봅시다. vimclone 해놨던 lolcat 디렉토리로 가서 실습해주세요.

⬇ EXECUTE! ⬇

$ cat Makefile
$ bat Makefile

cat 이 다음과 같이 밋밋하게 출력되는 반면,

bat 이 다음과 같이 컬러풀하게 출력됩니다.

bat 으로 lolcat.c 같은 C 언어 소스코드도 출력해보세요.

batmore 이나 less 처럼 ey 를 누르면 위아래로 움직일 수 있고 Spacebaru 를 누르면 페이지 단위로 위아래로 이동할 수 있으며 vim 처럼 / 로 특정 문자열을 검색할 수 있고 q 로 종료할 수 있습니다.

⬇ EXECUTE! ⬇

$ bat lolcat.c

xxdhexyl

hexyl 는 구식인 xxd 명령어를 최신식으로 대체한 프로그램입니다. xxd 가 리눅스 교재에서 설명되어있는지 잘 모르겠지만, 어쨌든 파일의 데이터를 헥사값으로 보여주는 프로그램인 것만 알면 됩니다. 그럼 xxdheyyl 를 비교해봅시다.

Info

텍스트 파일보다는 바이너리 파일의 헥사값을 보는 것이 유의미하기 때문에 이미 컴파일이 된 lolcat 을 살펴보겠습니다.

$ xxd lolcat 
$ hexyl lolcat 

하지만 파일 크기가 너무 커서 앞부분을 제대로 보지 못하니 less 로 출력을 디라이렉트해보겠습니다.

⬇ EXECUTE! ⬇

$ xxd lolcat | less
$ hexyl lolcat | less

lessbat 처럼 ey 로 위아래로 움직일 수 있고 Spacebaru 로 페이지 단위로 위아래로 이동할 수 있으며 q 로 종료할 수 있습니다.

xxdhexyl 의 실행결과는 다음과 같습니다.

findfd

fd 는 구식인 find 명령어를 최신식으로 대체한 프로그램입니다. find 를 리눅스 교재에서 어느정도 연습하셨을 거라고 생각합니다. fdfind 보다 5배 정도 빠르고 좀 더 유저들이 사용하기 편하도록 인터페이스가 대폭 개선된 모던한 프로그램입니다.

fdfind 와 상세하게 비교하기보다 다음의 사용예를 가볍게 한번 살펴보는 것으로 마무리하겠습니다.

이미지 출처 : https://github.com/sharkdp/fd

fd 의 상세한 설명을 알고 싶다면 공식 레포지토리 https://github.com/sharkdp/fd 를 참고해주세요.

tophtopgotop, bpytop

top 명령어는 시스템의 리소스 상태(RAM, CPU 등) 을 출력해주는 좋은 프로그램입니다. 기존의 top 은 다음과 같이 약간은 밋밋하게 시스템의 상태를 출력해주었습니다.

하지만 htop 은 다음과 같이 색깔도 칠하고 메모리와 CPU 상태를 핸드폰 배터리 바처럼 보여줍니다.

gotop 은 다음과 같이 완벽한 그래프로 시스템의 상태를 직관적으로 출력해줍니다.

도커 컨테이너에도 gotop 이 이미 설치되어 있으니 시험삼아 실행해보세요.

⬇ EXECUTE! ⬇

$ gotop

심플한 gotop 과 달리 bpytop 은 다음과 같이 화려한듯한 UI 를 보여줍니다.

bpytop

⬇ EXECUTE! ⬇

$ bpytop

시스템 상태를 출력해줄 수 있는 유틸리티는 개인적인 선호에 따라 좋고 나쁨이 결정되므로 확실히 어떤 게 좋다라고 말할 수 없습니다. 따라서 그냥 개인적으로 더 나은 것 같은 CLI 를 사용하면 됩니다.

mantldr

man 은 명령어의 사용법을 출력하는 매우 좋은 프로그램입니다. 하지만 man 의 한 가지 단점은 그 사용법이 너무 방대하고 장황하다는 것입니다. 그래서 프로그램의 핵심 사용법을 쉽고 빠르게 알고 싶은 사용자들은 그 방대한 사용법에서 자신이 원하는 핵심 사용법을 이리저리 찾고 있어야만 했습니다.

하지만 tldrman 처럼 방대한 사용법을 보여주는 것이 아니라 매우 간단한 핵심 사용법만을 알려줍니다. tldr 은 사용자들의 주도로 만들어져서 개발자들이 경험적으로 "이게 가장 핵심적인 사용법이다!" 라는 사용법만 간단하게 출력합니다.

  • 실습

    tar 명령어는 파일과 디렉토리를 압축할 수 있는 좋은 명령어입니다. 그러나 여러가지 옵션이 약간 복잡해서 기억하기 힘들 때가 있습니다. 그럴 때는 다음 명령어를 통해 tar 의 사용법을 확인해야 합니다.

    ⬇ EXECUTE! ⬇

    $ man tar
    

    그러면 다음과 같이 tar모든 사용법 이 출력됩니다.

    이런... 하지만 man 으로 tar 를 보니 설명이 매우 방대하고 매우 연역적으로, 그러니까 약간은 추상적으로 설명되어 있습니다. 그렇다면 다음 명령어를 실행하여 tldrtar 의 사용법을 보겠습니다.

    ⬇ EXECUTE! ⬇

    $ tldr tar
    

    그러면 다음과 같이 개발자들이 자주 사용하는 tar 의 핵심 기능들이 약간 귀납적으로, 즉 상당히 구체적으로 설명된 사용법이 출력됩니다.

pythonbpython

이번에는 파이썬 인터프리터 python 에 코드 하이라이팅과 자동완성 기능 등의 편리한 기능이 추가된 bpython 입니다.

기존의 파이썬 인터프리터는 다음과 같이 실행됬었습니다.

하지만 bpython 을 사용하면 다음과 같이 코드 하이라이팅, 자동 완성, 함수 추천 기능, 자동 인덴트 등의 기능을 사용할 수 있습니다.

희미한 글씨로 자동 완성 추천 기능이 발동되면 방향키 를 눌러서 자동완성을 시켜보세요.

fzf

fzf 는 다음과 같은 범용 fuzzy finder 입니다.

이미지 출처 : https://github.com/junegunn/fzf

다음 명령어로 fzf 를 실행하고 .c 를 입력해서 C 언어 소스 파일 찾아보세요.

⬇ EXECUTE! ⬇

$ fzf

너무 편해요! 더 많은 기능과 설명은 공식 레포지토리를 참고하세요.

bashzsh - 더 빨라진 쉘

zsh 은 수많은 플러그인과 테마가 지원되는 쉘입니다. 이제 bash 쉘을 그만 쓰고 zsh 을 사용해보겠습니다.

zsh 의 기능이 하도 많아서 zsh 를 사용하는 저도 기능의 반의 반도 알지 못하지만 다시는 bash 를 쓸 수 없는 몸이 되버렸습니다. zsh 이 너무 편하기 때문이죠.

2019년에 출시된 macOS Catalina 에서도 bash 를 버리고 zsh 을 기본쉘로 채택했다니까 맥유저들은 zsh 기능을 알면 더욱 좋겠네요.

zsh 말고도 fish 쉘도 많이 쓰입니다.

zshoh-my-zsh 을 설치해야만 그 진가를 발휘하는데, 여러분의 도커 컨테이너에는 dotfiles 을 설치 할 때 zshoh-my-zsh 이 다 설치되어 있으니까 걱정하지 마세요.

Info

설치법도 다 알아보아야 하지만, 5 일이라는 매우 제한적인 시간 때문에 부득이하게 설치법은 전부 다 생략했습니다. 설치법이 궁금하다면 Google 에 검색해서 공식 레포지토리들을 방문해보면 됩니다.

테마

zsh 은 정말 수많은 테마를 갖고 있습니다.

Tip

https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes 에 들어가서 마음에 드는 테마가 있는지 볼 수 있어요.

현재 도커 컨테이너에 설치되어 있는 zsh 테마는 다음과 같은 alien-minimal 입니다.

zsh 테마는 단순히 bash 쉘 프롬프트보다 더 멋있기 때문에 사용해야 하는 것도 있지만 수많은 기능들도 제공하기 때문에 사용해야 합니다. 그 수많은 기능 중 다음 두 가지 기능만 알아보겠습니다.

  • git 브랜치를 프롬프트에 보여준다.

    • 위와 같이 프롬프트 우측에 masterdev 로 바뀌고 다시 master로 바뀌었습니다.

    • 이렇게 git 으로 레포지토리를 관리하다가 실험적인 기능을 테스트해야 해서 새로운 branchdev 를 만들고 이주했을 때, zsh 의 프롬프트가 우측에 현재 상주하고 있는 branch 정보를 알려줍니다.

    • 그래서 매번 git branch 를 입력하여 현재 상주하고 있는 branch 가 어떤 건지 확인할 필요가 없습니다.

  • 프로그램의 리턴값이 정상값 0 이 아닐경우 프롬프트에 보여준다.

    • 위와 같이 ls 명령어를 입력하면 정상 종료 코드 0 가 반환되지만 존재하지 않는 명령어 lss 가 입력되면 비정상 종료 코드 127 이 반환됩니다.

    • zsh 프롬프트는 그러한 비정상 종료 코드를 보여주고 프로그램이 비정상적으로 종료되었을 때 프롬프트 색깔을 다른 색깔로 바꿔줍니다.

tab-completion 기능

이 기능은 명령어의 부분만 입력하고 Tab 을 눌렀을 때 zsh 이 알아서 명령어를 추천해주는 기능입니다.

  • 다음과 같이 cd 만 누르고 Tab 을 누르면 명령어를 추천을 해주고, cd 를 선택하고 다시 Tab 을 누르니까 이동할 레포지토리를 추천해줍니다. 우리가 해야 할 일은 단지 Enter 를 누르는 것 뿐이죠.

    render1589349092346

  • 다음과 같이 특정 디렉토리만 입력하고 나서 Tab 을 누르면 하위 디렉토리를 추천해줍니다.

    render1589349132365

auto-completion 기능

이 기능은 사용자가 길고 복잡한 경로를 이동해야 할때 그것을 특정할 수 있는 문자만 입력하고 Tab 을 누르면 자동으로 완성해주는 zsh 의 기능입니다.

  • /usr/lib/gcc/x86_64-linux-gnu/9.3.0 의 경로로 이동해야 하는 경우라고 가정하겠습니다.

    $ cd /usr/lib/gcc/x86_64-linux-gnu/9.3.0
    

    Speed up!!

    하지만 이건 너무 길어서 짜증나서 견딜 수가 없습니다.

    그러니까 다음 명령어만 입력하고 Tab 을 누릅니다.

    $ cd /u/l/g/x/9
    

    그러면 다음과 같이 zsh 이 경로를 지가 알아서 완성시켜 줍니다.

z 명령어

z 명령어는 사용자가 자주 이동하는 디렉토리 경로의 통계를 내어서 사용자가 이동하는 경로를 특정할 수 있는 짧은 경로만 입력해도 이동할 수 있게끔 해주는 너무너무 편리zsh 플러그인입니다.

z 명령어를 사용하기 위해서는 반드시 한 번 이상은 그 경로로 이동한 적이 있어야 합니다. 왜냐하면 z 이 사용자가 이동한 경로를 분석하고 통계를 낼 기회를 줘야하기 때문이죠.

Speed up!!

경로 입력 타수의 최소화!

  • 방금 전에 /usr/lib/gcc/x86_64-linux-gnu/9.3.0 라는 경로로 이동했었으니까 이 경로를 아마도 9 이 특정할 수 있을 것 같으니까 다음 명령어를 실행해봅니다.

    $ z 9
    

    실행 결과는 다음과 같습니다.

    render1589349777003

  • 또 우리는 lolcat 디렉토리를 왔다갔다 거렸습니다. 아마도 lol 로 이 디렉토리 경로를 특정할 수 있을 것 같네요. 그러면 다음 명령어를 입력해보세요.

    ⬇ EXECUTE! ⬇

    $ z lol
    

auto-suggestions 기능

이 기능은 가장 최근에 실행한 명령어를 기억하여 사용자가 그 명령어와 비슷한 타자를 친다면 자동으로 완성된 명령어를 추천해주는 zsh 플러그인입니다.

Speed up!!

이 기능은 긴 명령어를 반복해야 할 때 너무 편합 니다. 명령어 입력 타수의 최소화!

사용법도 매우 간단합니다. 명령어를 입력하다 보면 auto-suggestions 이 희미한 글씨로 완성된 명령어를 추천하는데 그것을 실행하길 원했다면 를 눌러서 명령어를 완성시키면 됩니다.

만약 auto-suggestions 이 추천한 명령어 전부를 원하지 않고 부분적인 것만 원한다면 Ctrl+ 를 누르면 됩니다.

  • GBC 과정을 만드느라 저는 도커 컨테이너를 여러번 종료했다가 재시작했어야만 했는데 그럴때마다 docker start -ai b 명령어를 반복적으로 입력했어야 했습니다.

    하지만 다음과 같이 auto-suggestions 이 반복되는 명령어를 추천해주기 때문에 매번 입력할 필요 없이 d 만 누르고 를 누르면 됩니다.

    docker start -ai b 을 일일이 다 입력해야 하는 것과 비교해봅니다.

    render1589350187427

    q 명령어는 alias 파트에서 alias q=exit 라고 정의된 것을 확인했었습니다.

Funny CLI

이제 여기까지 달려온 여러분들을 위해 머리를 좀 식히자는 의미에서 퍼니 CLI, 즉 실용성이 없이 순전히 재미를 목적으로 만들어진 CLI 들을 알아보겠습니다.

이 부분은 실용성이 전혀 없기 때문에 직접 실습하셔도 되고 안하셔도 됩니다. 또 시간이 아깝다면 Funny CLI 부분을 넘겨도 됩니다. 즉, 아예 안봐도 됩니다.

Info

Funny CLI 들 또한 이미 도커 컨테이너에 설치되어 있기 때문에 설치법은 모두 생략합니다. 각각의 공식 레포지토리에 들어가면 설치법을 알 수 있습니다.

그러면 이제 도커 컨테이너에 접속해서 진행해주세요.

asciiquarium

asciiquarium 은 아스키 코드로 만들어진 아쿠아리움을 뜻합니다.

이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ asciiquarium

다음과 같은 아스키로 이루어진 아쿠아리움이 나옵니다.

render1588863585888

q 로 종료할 수 있어요.

nyancat

nyancatCLI 로 고양이가 뛰어다니는 것을 보여주는 미친 프로그램입니다.

이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ nyancat

다음과 같은 미친 고양이가 뛰어놉니다.

render1588863923651

Ctrl+c 로 종료할 수 있어요.

sl

slCLI 로 기차를 보여주는 프로그램입니다.

이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ /usr/games/sl

다음과 같이 기차가 지나갑니다.

render1588864227794

ChristBASHTree

ChristBASHTreeCLI 로 크리스마스 트리를 보여주는 프로그램입니다.

이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ ChristBASHTree

다음과 같이 크리스마스 트리가 나타납니다.

render1588865712684

unimatrix

unimatrixCLI 로 매트릭스를 보여주는 프로그램입니다.

이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ unimatrix -c red

다음과 같이 붉은 매트릭스 나타납니다.

7tIs8Ca4Xm

lolcat

lolcat 은 우리가 이미 vim 을 연습할 때 설치하고 테스트 해봤던 프로그램입니다. 따라서 설치법과 실행법은 생략하고 다음의 실행결과만 가볍게 살펴보고 넘어가겠습니다.

render1589351764615

pipe.sh

pipe.shCLI 로 파이프를 보여주는 프로그램입니다.

다음 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ pipes.sh

이렇게 파이프가 나타납니다.

render1588866558609

YuleLog

YuleLogCLI 로 따뜻한 장작을 보여주는 프로그램입니다.

다음 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ YuleLog

따뜻한 장작이 나타납니다.

render1588865888181

nonogram

마지막으로 nonogram 는 네모로직 수학퍼즐을 지알아서 풀어서 CLI 로 결과를 출력해주는 제가 만든 프로그램입니다. 설치법은 다음과 같습니다.

⬇ EXECUTE! ⬇

$ g cl https://github.com/ccss17/nonogram
그런 다음 이 명령어를 실행해보면

⬇ EXECUTE! ⬇

$ cd nonogram
$ python3 main.py test/55.txt
$ python3 main.py test/1010.txt
$ python3 main.py test/1515.txt
$ python3 main.py test/2020.txt
$ python3 main.py test/2525.txt
$ python3 main.py test/3030.txt

다음과 같이 프로그램이 각각의 샘플 네모로직 수학퍼즐이 지알아서 풀고 출력합니다.

소스코드와 더 자세한 설명을 원한다면 https://github.com/ccss17/nonogram 를 참고해주세요.

1cbY6BnXq5

가령 15x15 네모로직 수학퍼즐의 샘플의 구조를 특정하고 있는 test/1515.txt 파일은

출처 : http://nemonemologic.com/play_logic.php?quid=10170&page=0&size=15

의 데이터를 담고 있는데 이것을 자동으로 풀기 위하여 python3 main.py test/1515.txt 를 입력하면 되는 것입니다.