Bulldogjob
Bulldogjob

Narzędzia wiersza poleceń, które ułatwią Ci życie

Mało co tak przyspiesza pracę programisty (nie mówiąc już o devopsach czy adminach!), jak umiejętne korzystanie z terminala i właściwych narzędzi.
20.04.20225 min
Narzędzia wiersza poleceń, które ułatwią Ci życie

Zdobycie biegłości w zakresie narzędzi wiersza poleceń pozwala skupić się na wykonywaniu właściwego zadania. Dlatego pokażemy dziś kilka programów, które pozwalają oszczędzać RAM gdziekolwiek jesteś, a kilka z nich pozwala skutecznie zastąpić aplikacje okienkowe przy zupełnym zachowaniu czytelności.

I żeby było jasne - dziś mówimy o programach unixowych (wszelakie Linuxy, OS X, BSD).

htop

Bardziej czytelna alternatywa dla top. Pokazuje bieżące obciążenie systemu przez poszczególne procesy. UI pozwala na sortowanie po wszystkich widocznych kolumnach, szukanie, filtrowanie, czy wyświetlanie drzewa procesów. W razie gdy któryś z procesów zachowuje się źle, można wysłać do niego odpowiedni sygnał.

Tak wygląda htop

HTTPie

Alternatywa curla, czyli klient HTTP z dużymi możliwościami. Oferuje nieco prostszą składnię i wsparcie dla niemal wszystkiego, co się da. Pozwala np. na ściąganie plików a la wget, kolorowanie outputu, upload plików, formatowanie odpowiedzi w JSON-ie.

Komenda:

http -v PUT httpbin.org/put API-Key:foo hello=world


To odpowiednik curla:

curl -i -X PUT -H Content-Type:application/json -H API-Key:foo -d ‘{“hello”:”world”}’ httpbin.org/put


Dla niektórych przesada, dla innych najlepszy zestaw wartości domyślnych na świecie. Warto spróbować.

tmux

Osoby, które używają go na co dzień, nie wyobrażają sobie bez niego życia.

To multiplekser terminali, zaprojektowany jako alternatywa dla programu screen. W ramach jednej sesji (niekoniecznie związanej z konkretną ,,fizyczną” konsolą) pozwala uruchomić wiele wirtualnych terminali. Zapewnia mechanizm rozmieszczania ich, przełączania między nimi i kopiowania z wieloma buforami.

Narzędzie jest nieocenione, gdy pracuje się na zdalnym serwerze. Pozwala na odłączenie sesji, wylogowanie się z serwera i powrócenie do niej później, w kolejnym logowaniu ssh - dzięki architekturze klient-serwer. W środowisku lokalnym umożliwia lepsze wykorzystanie pojedynczego okna terminala - nie trzeba odpalać jego wielu sesji.

tig

Program jest interfejsem tekstowym dla gita. Spotkaliśmy się z wieloma programistami, którzy używają do obsługi gita tylko programów z GUI. Z drugiej strony są tacy, którzy w ogóle nie stosują dodatkowych narzędzi - w końcu codzienna praca z gitem to parę komend na krzyż.

Tig jest pośrodku. W estetyczny sposób pokazuje drzewo commitów, wprowadzone zmiany, zawartość stasha, blame’a, itd. Pozwala też na wybiórcze akceptowanie zmian. Dobry kompromis.

Tak wygląda tig

Pandoc

Program, który sprawnie konwertuje formaty tekstowe. Najczęstszym scenariuszem będzie pewnie wygenerowanie HTML z Markdowna - ale Pandoc potrafi znacznie więcej. LaTeX, HTML, PDF, Word, ODT, ePub to tylko niektóre z formatów, z którymi sobie radzi.

Podlinkowany diagram obrazuje oferowane przez Pandoc przejścia między formatami. Jest tego duuużo.

jq

Procesor JSON-a. Zdecydowanie jego najbardziej trywialnym zastosowaniem będzie formatowanie. Można zrobić je w poniższy sposób:

cat unformatted.json | jq


Ale jq to procesor, stąd też pozwala na manipulowanie JSON-em. Przykładowo, można wyciągnać n-ty element, albo odfiltrować obiekty, które nie spełniają zadanego warunku - i to wszystko w terminalu.

Opcji jest o wiele więcej, ale w zasadzie pytanie brzmi: czy aż tak często manipulujesz JSON-ami, żeby poznawać wszystkie możliwości?

fselect

To połączenie find i ls. Nie byłoby w tym nic dziwnego, gdyby nie fakt, że do wyszukiwania używa składni inspirowanej SQL, która ułatwia filtrowanie po różnych parametrach plików. Co ciekawe, przeszukuje również archiwa i może wyszukać obraz po rozmiarze.

Potrafi zrzucać wynik do CSV czy JSON-a.

Spójrzcie na przykładowe wywołanie:

fselect name from /tmp where (name = '*.tmp' and size = 0) or (name = '*.cfg' and size gt 1000000)

pbcopy / pbpaste / yank

pbcopy i pbpaste to programy dostępne na OS X. Pierwszy z nich kopiuje do schowka cokolwiek, co się do niego przekaże, a drugi zwraca zawartość schowka. Na Linuxie można osiągnąć taki sam efekt, używając xclip. Dzięki odpowiedzi na Stacku SuperUser, wiemy jak to zrobić:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'


yank pozwala na skopiowanie w wierszu poleceń części przekazanego tekstu - pojedynczego wyrazu, zakresu, czy linii.

ack / Ag / ripgrep

Alternatywy grepa - bardzo przydatne w codziennej pracy. Pozwalają wyszukać zadaną frazę w plikach we wskazanym katalogu. Oczywiście można też używać wyrażeń regularnych. To sprawia, że wyszukiwanie czegokolwiek w projekcie z poziomu terminala to bułka z masłem. Dla przykładu, podstawowa komenda ag wygląda tak:

ag mytext


Oznacza to rekursywne przeszukiwanie katalogów w poszukiwaniu plików oraz linii, w których wystąpił ciąg znaków “mytext”.

Szczególnie polecamy Ag (znany też pod nazwą silver searcher) i Ripgrep ze względu na szybkość wyszukiwania. To bardzo ważna cecha, szczególnie gdy będziemy chcieli użyć ich w połączeniu z innymi programami, albo przeszukać naprawdę duży obszar dysku.

SL

Bardzo przydatny program. Oducza mylenia się przy wpisywaniu komendy ls. Jego nazwa wzięła się od Steam Locomotive.

Tak naprawdę to żart - nie instalujcie tego. Chyba, że lubicie ciuchcie. Zamiast tego proponujemy dodać do powłoki alias sl="ls".

mycli / pgcli

Klienty baz danych.

mycli obsługuje MySQL, MariaDB i Perconę, a pgcli PostgreSQL. Dodają do standardowego klienta funkcję autouzupełniania. Można skonfigurować sposób stronicowania, czy zapisywać swoje ulubione zapytania, by łatwo je odtworzyć. Wiele funkcji da się dostosowywać na poziomie pliku konfiguracyjnego, który znajduje się w katalogu domowym.

7-zip

Menedżer archiwów, który łączy w sobie kilka różnych metod kompresji. Wiadomo, że czasem trzeba ściągnąć jakąś paczkę i ją rozpakować. Dlatego masz pewnie u siebie tar, zip, unzip, gzip, gunzip, bzip, bunzip. No i jeszcze oczywiście musisz zapamiętać te cholerne parametry do tara.

Jak to było? Jaką kombinację z, x, c, v, f musisz wpisać, żeby zadziałało? 7-zip jest na tyle ,,sprytny”, że sam wnioskuje z jakim archiwum ma do czynienia. Z drugiej strony - na tyle ,,głupi”, że nie pozwoli na rozpakowanie tar.gz w jednym kroku.

Chyba trzeba się nauczyć tych literek do tara :/

rsync

Rozwiązuje problem przenoszenia plików między hostami. Tak, można to zrobić przez scp, ale dzięki opcji kompresji plików, a także  pomijaniu plików - które już są w lokalizacji docelowej - robi to znacznie szybciej. To bardzo przydatna cecha, gdy przenosimy duże zbiory danych lub nie mamy dostępu do szybkiej sieci. Adminom rsync oferuje jeszcze więcej - np. może działać demon, który będzie służyć synchronizacji plików.


Mamy nadzieję, że któreś z narzędzi Wam się przyda!

<p>Loading...</p>