Polecenie cat odwala kawał naprawdę dobrej roboty. Ale kto powiedział, że tego, co jest robione dobrze nie można zrobić lepiej?
W systemie, w którym wszystko jest plikiem, przeglądanie zawartości plików to konieczność, a nie opcja. Czy będzie to konfiguracja, czy dokumenty, czy kod programu – raz na jakiś czas chcemy zobaczyć ich treść na ekranie.
W systemie, w którym wszystko jest plikiem, przeglądanie zawartości plików to konieczność, a nie opcja. Czy będzie to konfiguracja, czy dokumenty, czy kod programu – raz na jakiś czas chcemy zobaczyć ich treść na ekranie.
Program cat, będący częścią basha (znajduje się w pakiecie coreutils) daje sobie radę doskonale. Kilka opcji takich jak -n (numerowanie linii) -s (usunięcie nadmiarowych pustych linii czy -b (numerowanie wyłącznie niepustych linii) czyni z niego bardzo przydatne narzędzie. Jednakże to, co można zrobić dobrze z reguły daje się zrobić jeszcze lepiej. Najwyraźniej z tego założenia wyszedł twórca programu bat, który został przez niego określony jako “cat na skrzydłach”, czego wyrazem jest ikona programu – więcej informacji można znaleźć na stronie projektu (https://github.com/sharkdp/bat).
Instalacja
Program znajduje się w repozytoriach wielu dystrybucji i można go zainstalować za pomocą menedżerów paczek każdej z nich:
Ubuntu, Alpine, Arch, Fedora, Funtoo, Gentoo, Void, Termux, openSUSE, a także FreeBSD, OpenBSD.
Jest dostępny również dla macOS przez Homebrew (Homebrew jest dostępny również w Linuksie i tą drogą też można zainstalować program) oraz przez MacPorts.
Nawet Windows doczekał się swojej wersji (trzeba tylko doinstalować kilka rzeczy).
Jednak obecne w repozytoriach paczki nie zawsze są najnowsze, dlatego najlepiej sięgnąć do strony z wydaniami (https://github.com/sharkdp/bat/releases) i ściągnąć najnowszą paczkę. Znajdują się tam pakiety linuksowe, instalator windowsowy oraz paczki dla Mac. Dla Ubuntu pakiet bat-musl.deb zawiera wszystkie zależności i ten właśnie jest najwłaściwszy. Dla innych dystrybucji znajdziemy tam archiwa *.zip i *.gz.
Jeśli jednak zdecydujemy się na instalację z domyślnego repozytorium naszej dystrybucji to trzeba wziąć pod uwagę, że nazwa “bat” jest… już zajęta. Zarezerwowano ją dla programu w pakiecie bacula (system tworzenia backupów). Dlatego też przeglądarka plików zostanie zainstalowana pod nazwą “batcat”.
Eleganckim rozwiązaniem jest dopisanie w pliku .bashrc definicji aliasu:
alias bat='batcat'
Co oferuje bat
Ktoś mógłby zapytać – a po co w ogóle instalować ten program? W czym on jest lepszy od zwykłego cat’a?
Kolorowanie składni
Po pierwsze – kolorowanie składni. To się przyda nie tylko programistom – znacznie łatwiej czyta się pliki konfiguracyjne kiedy są oznaczone kolorami.
Lista rozpoznawanych typów plików jest imponująca i obejmuje ponad 150 rodzajów. Pełną listę można obejrzeć po wpisaniu polecenia:
bat –list-languages
Tematy kolorystyczne
Po drugie – kolory można dopasować do własnych upodobań dzięki tematom kolorystycznym. W podstawowej wersji jest ich 24, można dodawać własne. Lista tematów jest dostępna dzięki poleceniu:
bat –list-themes
Dodatkowe schematy można pobrać choćby ze strony https://colorsublime.github.io/ – jest ich tam bardzo dużo i dla każdego znajdzie się jakiś odpowiedni zestaw.
Ściągnięte z internetu tematy należy umieścić w katalogu ~/.config/bat/themes/
Kolejną miłą rzeczą w tym programie jest format wyjścia – zawartość pliku jest ujęta w tabelę, której pierwszą kolumną są numery linii, które dodawane są domyślnie – odwrotnie niż w pierwowzorze. Na górze wyświetlana jest nazwa pliku oraz jego rozmiar.
Białe znaki
Program potrafi wyświetlić znaki niedrukowalne – wszelkiego rodzaju spacje, tabulatory itp. Niestety, traktuje jako “białe” wszystko, co nie mieści się w standardowym zestawie znaków, co oznacza, że polskie znaki diakrytyczne również trafiają na to sito.
Stronicowanie
Wyjście programu bat jest stronicowane tzn. nie jest wyświetlany cały plik, a tylko tyle, ile mieści się na ekranie, a resztę można przewinąć. Ma to tę zaletę, że działa wyszukiwanie (klawisz /) Cat wymaga dodatkowego przekierowania do tzw. pagera, najczęściej programu less. W bacie mamy tę funkcję od razu, choć można ją wyłączyć za pomocą przełącznika –paging=never (lub krócej -P). Można również skorzystać z innego programu stronicującego np. more: –pager “more”.
Przewijanie myszą
Przewijanie podglądu pliku za pomocą klawiszy jest niewygodne. Na szczęście domyślny pager less ma możliwość wykorzystania kółka myszy. Wystarczy w pliku .bashrc dopisać linię:
export LESS=’–mouse –wheel-lines=3′
I już można przewijać tekst kółkiem myszy. Rzecz jasna zmiana w pliku .bashrc wymaga ponownego otworzenia konsoli.
Zakres linii
Jeśli mamy do czynienia z dużym plikiem, a jest mniej więcej znane miejsce, którego szukamy to można przekonać program bat do wyświetlenia tylko interesującego nas kawałka pliku:
-r, –line-range A:B
Gdzie “A” i B” to numery linii. Można użyć następujących opcji:
A:B – od linii numer A do linii numer B
:B – od początku do linii numer B
A: – od linii numer A do końca
A:+10 – linia numer A i 10 następnych
B:-10 – linia numer B i 10 poprzednich
A – wyłącznie linia numer A
Oznaczenia git
Bat potrafi również współpracować z innymi programami – np. z gitem. Jeśli zostanie wykryte repozytorium git to na podglądzie pliku zobaczymy oznaczenia linii, które zostały zmienione od ostatniego commitu.
Plik konfiguracyjny
To nie jest komplet parametrów, z jakimi można wywołać program bat. Wszystkie są bardzo dokładnie opisane – wystarczy wpisać bat –help.
Wobec takiego bogactwa aż prosi się o możliwość jakiejś stałej konfiguracji, zapisania najbardziej nam pasujących wartości i parametrów.
Program po zainstalowaniu działa na domyślnych wartościach i nie korzysta z pliku konfiguracyjnego. Można jednak taki plik sobie sprokurować, wydając polecenie:
bat –generate-config-file
Zostanie wypisana ścieżka do wygenerowanego pliku. Zawiera on kilka przykładowych ustawień. Jak ustawić inne – opis znajduje się w tekście helpa (trzeba przyznać, że od tej strony również program jest bardzo dobrze dopracowany.)
Jeśli program bat ma jakieś słabe strony to z pewnością jest to marketing. Na jego ślad trafiłem przypadkiem, przeglądając… zrzuty ekranowe w jakimś artykule. A przecież w środowisku linuksowym, w którym aż przelewa się od różnorakich plików konfiguracyjnych, systemowych itp. wygodne ich przeglądanie jest nie do przecenienia. Na moim dysku ten nietoperz znalazł sobie wygodne gniazdko i z pewnością zagości tu na dłużej. Mam nadzieję, że przyda się również wielu użytkownikom naszego ulubionego systemu.