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
ZSH jest najlepsze!

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.

bat cat
Czasami bat będzie przyjemniejszy 🙂

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
Porównanie htop i top

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.

ncdu
ncdu sporo ułatwia szukanie co nam tyle zajmuje 🙂

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:

cht.sh
Nie oszukuj się, nie pamiętasz wykorzystania każdej komendy…

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!

Dołącz do newslettera, by być na bieżąco!

Jeśli chcesz być na bieżąco z blogiem, otrzymywać świetne porady dot. programowania i administracji serwerami, opinie w temacie gier - dołącz do newslettera!

Raz na jakiś czas wyślę Ci informację nt. bloga, a także będę wysyłać ekskluzywne materiały techniczne!

Nie czekaj i dołącz!

Dołączając do newslettera, akceptujesz naszą politykę prywatności!