GUI와 CLI는 장단점이 있습니다. GUI 환경은 직관적이고 풍부한 시각적 요소를 제공하지만 그만큼 자원을 많이 사용하게 됩니다. 반대로 CLI 환경은 그래픽 요소를 포함하지 않는 만큼 더 많은 리소스를 작업에 할당할 수 있습니다.
어떤 작업은 GUI를 통해 직관적으로 수행하는 것이 유리하고, 또 어떤 작업은 CLI를 통해 자동화하고 효율적으로 처리하는 것이 더 적합할 수 있죠.
파일 시스템을 GUI로 쉽게 탐색하면서 파일을 찾은 다음, CLI를 사용하여 해당 파일에 대한 특정 작업을 한다던지 GUI와 CLI는 서로 보완적인 측면이 있어서 두 장점을 조화롭게 사용하여 최상의 결과를 얻을 수도 있습니다.
그러나 임베디드 시스템이나 서버 개발 등을 하다보면 자원의 효율적인 사용이 매우 중요하기 때문에 GUI를 사용할 수 없는 제한된 환경에서 작업해야 하는 경우가 종종 있습니다. 그런 경우에도 CLI 환경을 위한 강력한 플러그인들을 사용하여 터미널 환경에 직관적인 시각적 경험을 더할 수 있습니다.
링크
https://github.com/zsh-users/zsh-autosuggestions
Zsh-autosuggestions는 zsh에서 명령어 자동완성을 제공하는 플러그인입니다. 명령어를 몇 자 입력하면 과거에 입력했던 명령어를 기반으로 자동으로 추천해주어, 명령어 입력 시간을 단축시켜 줍니다.
명령어를 몇 자 입력 후 추천하는 명령어가 나오면 키보드
→
키를 누르면 아래와 같이 명령어가 자동으로 입력됩니다.
Ctrl
+→
키를 누르면 단어 단위로 입력할 수도 있습니다.
# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
설치 후에는 홈 디렉토리의 ~/.zshrc
파일에 Plugin을 추가합니다.
plugins=(
...
# your plugin
zsh-autosuggestions
)
링크
https://github.com/zsh-users/zsh-syntax-highlighting
Zsh-syntax-highlighting는 Zsh 셸에서 명령어 구문을 실시간으로 강조해주는 플러그인입니다. 이 플러그인은 명령어를 입력할 때 구문에 맞게 색상을 적용해 가독성을 높여줍니다.
아래 사진처럼 잘못된 명령어를 입력하지 않도록 도와줍니다.
# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
설치 후에는 홈 디렉토리의 ~/.zshrc
파일에 Plugin을 추가합니다.
plugins=(
...
# your plugin
zsh-syntax-highlighting
)
링크
https://github.com/tmux/tmux
Tmux는 터미널 멀티플렉서로, 하나의 터미널 창에서 여러 작업을 동시에 처리할 수 있도록 해줍니다. 윈도우 분할 정도로만 알고 있는 경우가 많지만 가장 중요한 기능은 세션 관리입니다. SSH로 접속하여 tmux 세션을 만들고 작업을 하게 되면 네트워크 연결이 끊어지더라도 생성한 세션은 유지됩니다. 시간이 오래 걸리는 작업도 Tmux 세션 안에서 실행해두면 연결을 종료해도 Tmux 세션이 백그라운드에서 유지되며 작업을 계속합니다. 따라서 다시 SSH로 접속하여 작업했던 Tmux 세션에 연결하기만 하면 이전에 작업하던 상태 그대로 복구할 수 있습니다.
아래 사진처럼 심지어 각기 다른 세션에서 나중에 SSH로 접속하여도 기존 Tmux 세션 화면을 볼수 있으며 같은 Tmux 세션에 연결된 상태에서는 마치 스트리밍을 하듯 사용자의 입력까지 실시간으로 볼 수 있습니다.
링크
https://github.com/tmuxinator/tmuxinator
Tmuxinator는 Tmux 세션 관리에 도움이 되는 여러 기능을 제공합니다. Tmuxinator를 사용하면 YAML 파일을 이용해 템플릿을 사전에 만들어 둘 수 있습니다. 만들어둔 템플릿을 통해 프로젝트 별로 다른 Tmux 작업세션을 자동으로 만들 수 있으며 프로젝트 간 전환이나 다른 작업 환경으로의 빠른 이동이 가능합니다. 이렇듯 세션 레이아웃을 미리 템플릿화 하고 자동으로 세션을 생성하여 반복적인 세션 구성 작업을 최소화할 수 있습니다.
워낙 기능이 많아서 활용 방법은 별도의 글에서 다루기로 하고 이 글에서는 간단한 설치 방법만 소개하겠습니다.
# apt 패키지 관리자로 설치
sudo apt update
sudo apt install -y tmux tmuxinator
설치 후에는 홈 디렉토리의 ~/.zshrc
파일에 Plugin을 추가합니다.
plugins=(
...
# your plugin
tmux
tmuxinator
)
Btop은 터미널에서 사용할 수 있는 간편한 시스템 모니터링 도구입니다. top의 대안으로 사용할 수 있으며 시스템 리소스 사용량을 실시간으로 시각적으로 모니터링하고, 프로세스를 관리할 수 있습니다. 직관적이고 사용하기 편리한 인터페이스를 제공하여 시스템 상태를 신속하게 파악할 수 있습니다. 약간의 설정을 해주면 마우스 클릭과 스크롤같은 입력도 지원하여 마치 GUI 앱을 사용하는 것 같은 사용경험도 느낄 수 있습니다.
# apt 패키지 관리자로 설치
sudo apt update
sudo apt install -y btop
Neofetch는 터미널에서 간단히 시스템 정보를 확인할 수 있는 도구입니다. 간단하게 명령어를 입력하여 운영 체제, 하드웨어 사양, 디스트로 정보 등을 표시할 수 있습니다. Neofetch는 터미널에서 아스키 아트(ascii art)로 만들어진 로고와 함께 시스템정보를 예쁘게 가공해서 제공하여 인기가 높은 도구입니다.
기본적으로 많은 로고들을 제공하여 아래와 같이 원하는 이미지를 선택할 수도 있으며 터미널 환경에따라 이미지파일을 아스키 아트로 출력할수도 있습니다.
위처럼 다양하게 커스텀 할 수 있을 뿐만 아니라 설정에따라 추가적인 정보도 출력할 수 있습니다. 로고의 경우 x11과 같은 환경에서 gui 터미널을 사용하면 ascii art가 아닌 실제 이미지도 출력할 수 있습니다.
# apt 패키지 관리자로 설치
sudo apt update
sudo apt install -y neofetch
위에서 소개한 도구 외에도 CLI를 위한 강력한 도구들이 많이 있습니다. 이러한 도구들에 익숙해즈고 적극적으로 활용한다면 작업 명령을 더 빠르고 효율적으로 관리할 수 있으며 CLI 환경에서도 GUI 못지않은 편리함과 효율성을 경험할 수 있습니다. (혹시 나만 알고 있는 유용한 도구가 있다면 댓글로 알려주세요!같이 좀 씁시다.)