Zakochałem się kiedyś w ZSH i pracując codziennie na konsoli/CLI, warto sobie tę pracę usprawnić. Efekty mogą być niezauważalne na pierwszy rzut oka, ale potem wracając do standardowego basha, dopiero widzimy, jak te zmiany nam usprawniają pracę w konsoli.

ZSH – CLI w wersji PRO.
Każdy terminal powinien być wygodny w użytkowaniu, pozwolić na szybkie uzyskanie odpowiednich informacji, być wygodne i przyspieszać nasze poruszanie się po systemie.
Jednakże zacznijmy od początku. Ja nie wyobrażam sobie pracy bez skorzystania z ZSH (alternatywa dla bash’a) oraz z framework’a oh-my-zsh. ZSH łatwo zainstalować, bo jest praktycznie w każdym standardowym repozytorium, więc instalacja jest całkiem standardowa. Na początek instalujemy powłokę z repozytorium. Zależnie od systemu:
yum install zsh # CentOS/RHEL apt install zsh # Debian/Ubuntu dnf install zsh # Fedora pacman -S zsh # Arch/Manjaro
Instalacja jest bardzo prosta, więc nie ma sensu się rozpisywać. Kolejnym etapem jest zainstalowanie Oh-My-ZSH. Dla mnie jest to framework, który zmienił moje postrzeganie konsoli ze smutnego klepania komend, do praktycznej pracy.
Instalacja tym razem jest podobnie utrudniona – aż jedna linijka kodu:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
ZSH – Pluginy
ZSH wraz z Oh-My-ZSH jest podstawą, a jak wiadomo – podstawowe rozwiązania nie są idealne, jednak społeczność się nie poddała i przygotowała fenomenalną ilość pluginów! Do instalacji pluginów zalecam skorzystać z antigen, który to jest menadżerem pluginów do ZSH. Dzięki niemu łatwo zainstalujemy i zaktualizujemy wszelkie pluginy i themes.
Osobiście uruchamiam pluginy, dodając je w pliku: .zshrc
Moja lista pluginów, które korzystam:
source ~/.local/antigen.zsh antigen use oh-my-zsh antigen bundle pip antigen bundle git antigen bundle pipenv antigen bundle pyenv antigen theme https://github.com/caiogondim/bullet-train-oh-my-zsh-theme bullet-train antigen bundle go antigen bundle auto-color-ls antigen bundle mafredri/zsh-async antigen bundle desyncr/auto-ls antigen bundle Tarrasch/zsh-autoenv antigen bundle unixorn/autoupdate-antigen.zshplugin #antigen bundle rummik/zsh-ing antigen bundle joepvd/grep2awk antigen bundle sroze/docker-compose-zsh-plugin antigen bundle webyneter/docker-aliases.git antigen bundle rutchkiwi/copyzshell antigen apply
Zaś pozostałe pluginy i możliwości ZSH oraz Oh-my-zsh znajdziecie na stronie Awesome ZSH.
Alternatywne aplikacje w CLI
Każdy z nas zna aplikacje, będące podstawą CLI, czyli takie jak grep, cat, czy awk. Użytkowanie ich jest formą must-have w obsłudze systemów operacyjnych na poziomie profesjonalnym poprzez konsolę, tak samo jak wiele innych narzędzi. Jednak czasem ich użytkowanie można ułatwić.
bat > cat
Na początek może użytkowanie cat’a. Aplikacja wyświetla zawartość pliku, jednak brakuje tam wielu funkcjonalności.

Jak widać na obu obrazkach, bat jest nieco ładniejszy i wygodniejszy. Instrukcja instalacji jest na stronie repozytorium: https://github.com/sharkdp/bat
htop > top
Jak sprawdzić wygodnie listę procesów i zajęte zasoby? top’em! Wpisujemy top i jest ładna lista procesów. Jednak można to usprawnić i wykorzystać htop!

htop już jest łatwiejszy do zainstalowania niż bat, gdyż praktycznie każde std::repo posiada htop w swoich zasobach
yum install htop # CentOS/RHEL apt install htop # Debian/Ubuntu brew install htop # macOS Homebrew pacman -S htop # Arch/Manjaro
ncdu > du
Nienawidzę liczenia zajętości katalogów. Jest to nudne, smutne i niestety czasem trzeba. Jednak łatwiejsza i wygodniejsza, a nawet szybsza forma liczenia zajętości katalogów to aplikacja ncdu.

Instalacja ponownie z repozytorium, więc nie będę już podawać linijek CLI
cht.sh > man
Dokumentacja komend jest przydatna, tak samo jako flaga –help w komendach przez CLI. Jednak man się długo czyta, a –help jest zwykle zbyt ubogi. Więc przychodzi na pomoc cht.sh! Ten projekt ułatwia nam przypomnienie sobie komend, przykładowo:

Warto sobie utworzyć skrypt ~/bin/cht
i tam dodać następującą linijkę:
#!/bin/bash curl cht.sh/$1
I wtedy wystarczy wpisać cht curl
i dostaniemy informację, taka jak na obrazku powyżej.
Podsumowanie
Jest jeszcze wiele innych narzędzi i z czasem tę listę rozbuduję, o ile oczywiście będzie pozytywny odzew. Sama lista jest stosunkowo krótka, jednakże celowo ominąłem kilka narzędzi, typu fd, diff-so-fancy, czy fzf. FD pominąłem dlatego, że nie widzę sensu z tego korzystać często, więc warto poznać find. diff-so-fancy jest dobre do pracy z git’em, jednak ja z tego nigdy nie korzystałem jakoś specjalnie, pozostałem przy standardowym diff. Tak samo fzf wymaga dużo konfiguracji, a jednak większość komend i tak pamiętam lub grepuję .zsh_history 😀
Jeśli macie jakieś swoje typy, dajcie znać w komentarzu, a także zobacz 10 przydatnych komend w Dockerze!