przystajnik

Terminal pogryzł człowieka: bat

Czym byłoby przeglądanie plików tekstowych w terminalu bez polecenia cat lub less… Ale historia ludzkości zbudowana została w oparciu o sukcesy ewoluujących usprawnień. Stąd dzisiaj rozważania nad praktycznym połączeniem powyższych, czyli polecenie bat.

Bat jak cat ale cały kolorowy

Chyba nikogo nie trzeba przekonywać do praktyczności polecenia cat, które momentalnie wyrzuci nam w terminal zawartość pliku tekstowego oraz polecenia less, które pomoże poćwiczyć składnię vi i jednocześnie zapanuje nad ilością wyświetlanych danych. Projekt bat powstał aby odświeżyć zmurszałe już nieco założenia obydwu poleceń. Zasadniczo bat jest klonem polecenia cat. Jednak podstawową różnicą jest kolorowanie składni i integracja z Git. Na tym nie kończą się atrakcje, ale o tym poniżej.

Na pierwszym etapie znajomości bat może być używany niemal dokładnie jak jego protoplasta. Czyli wylistujemy nim pliki, przekierujemy ich zawartość do innego, wybierzemy wejście i wyjście, itp. Program nie przeszkodzi nam w korzystaniu ze specyfiki linuksowej konsoli.

bat test.py

Jednak pierwszą różnicą jaką zauważymy będą kolory. Program rozpoznaje składnie kilku języków programowania, a jeśli nie rozpoznana jej automatycznie, to możemy go odpowiednio poinstruować. Najpierw dowiedzmy się, co potrafi kolorować:

bat --list-languages

Gdy już ochłoniemy i przywykniemy do mnogości wyboru, deklarujemy:

bat -l exs nazwa-pliku

Bat i Git

No dobrze, ale gdzie w tym wszystkim Git i less? Less zostanie użyte automatycznie, gdy ilość danych przesyłanych nie zmieści się na ekranie. Oczywiście dostępne będą wszystkie opcje i skróty klawiszowe znane z less (bo to zwykłe przekierowanie – lub raczej „przepotokowanie”).

Jeżeli natomiast znajdujemy się w źródłach scalonych z Git, bat zrobi z tego automatycznie użytek i pokaże nam różnice pomiędzy plikami w wersji lokalnej i zdalnej (plus i minus po lewej stronie).

A na koniec, gdy znudzi się nam kolorystyka, to:

bat --list-themes

… i wybieramy pasującą nam tematykę:

bat --theme nazwa-tematu nazwa-pliku

Program stanowi doskonałe uzupełnienie dla osób korzystających z Gita oraz parających się pracą u źródeł. Z zainstalowaniem nikt nie powinien mieć najmniejszych problemów, gdyż autor przygotował stosowne paczki niemal dla każdej dystrybucji o ile jest to Ubuntu/Debian/Mint.

Użytkownicy Arch Linuksa i Manjaro mają program w podstawowym repozytorium:

sudo pacman -Syu bat
 

Post navigation

13 comments for “Terminal pogryzł człowieka: bat

  1. Ari9310
    30 sierpnia, 2018 at 9:14

    Witam, jako że to najnowszy wpis to napiszę tutaj. Planuję zacząć przesiadkę z Windowsa na Ubuntu, tego bloga znalazłem w zasadzie dopiero dzisiaj i z dużym wytrzeszczem oczu przeglądam poprzednie wpisy o ciekawych programach na Linuxy i inne ciekawostki bo jest tego znacznie więcej niż mi się wydawało… ale jak dotąd nie znalazłem jakiegoś szerszego wpisu na temat standard vs LTS. Jako że lubię wszelakie nowości (aczkolwiek na Win aktualizacje permanentnie wyłączyłem bo syf to nieziemski…) to mam pytanie; czy „normalne” Ubuntu bodajże 18.10 jest aż takie złe? Bo z tego co zdążyłem zauważyć to wszyscy wszędzie piszą o LTS a jakoś nie przekonuje mnie siedzenie na systemie 2 lata (?) czekając na 20.x LTS 😉 Wolałbym chyba powoli z biegiem czasu aktualizować zwykłego Ubuntu. No nie wiem…. co radzicie zrobić na moim miejscu?

  2. pavbaranov
    30 sierpnia, 2018 at 10:26

    Skoro planujesz przesiadkę dopiero, to mam dla Ciebie inną nieco propozycję (choć gorąco oczywiście na jakąś dystrybucję namawiam). Uruchom sobie jakąkolwiek maszynę wirtualną na Windows, zainstaluj na niej powiedzmy 2-3 dystrybucje (niekoniecznie Ubuntu jest najlepsze) i sprawdź co Ci pasuje. W przypadku linuksów masz w przeciwieństwie do Windows od groma „interfejsów” (czyli środowisk graficznych) do wyboru. Jeden może Ci leżeć – inny nie. Zdecydowanie łatwiej jest natomiast laikowi w tym systemie wpierw się pobawić i wybrać, niż potem dokonywać zmian. Jakie dystrybucje mógłbym zaproponować? Oprócz tego, co wybrałeś (Ubuntu) spróbuj np. OpenSUSE (potem się wyjaśni dlaczego m.in. tę).
    Wracając do Twojego pytania. LTS jest to LTS. Obecnie najnowsza wersja Ubuntu i najnowszy LTS to ta sama wersja (18.04). Różnica między wydaniami LTS i „zwykłymi” jest taka, że w przypadku LTS masz oprogramowanie „zastabilizowane” praktycznie przez cały okres jego używania. Zasadniczo otrzymasz tam prawie wyłącznie poprawki bezpieczeństwa oraz ewentualnie poprawki najbardziej istotnych błędów. W przypadku „zwykłego” wydania – nic się w tym zakresie nie zmienia. Zasadniczo też oprogramowanie jest „zastabilizowane”, a otrzymujesz dokładnie to samo. Różnica jest jedynie taka, że tzw. „wsparcie” szybciej się kończy, bowiem nie trwa lata jak w przypadku LTS a jedynie kilka miesięcy, po których musisz zaktualizować (czyt. wgrać nową wersję) system. Są zwolennicy jednego i drugiego rozwiązania. Niestety m.in. z uwagi na ściśle określony styl wydawniczy w Ubuntu (wydania LTS zawsze w kwietniu w parzystym roku, wszystkie inne i kwietniowe i październikowe to wydania „zwykłe”), oraz to w jaki sposób pojawiają się w repozytoriach Ubuntu paczki nie istnieje żadna gwarancja, że dane wydanie LTS jest „lepsze” od wydania „zwykłego”. Okres dostrajania oprogramowania jest taki sam niezależnie od wersji Ubuntu. Może się zatem zdarzyć (i zdarzało tak w przeszłości), że wydanie LTS będzie sprawiać problemy, a „zwykłe” nie i odwrotnie.
    „Nowości”. Tu prawdopodobnie chodzi Ci o to, z czego jako użytkownik końcowy przede wszystkim korzystasz, czyli z tego co widzisz – aplikacje. Oprócz oprogramowania w zwykłych repozytoriach są też repozytoria Ubuntu oferujące np. backporty niektórych aplikacji nowszych przeznaczone dla danego wydania Ubuntu – zwykle są w miarę bezproblemowe. Są też niezależne repozytoria tzw. PPA, które mogą, ale nie muszą oferować dobrej jakości paczki (czyt. dobrze działające w Twojej konfiguracji) i które mogą, ale nie muszą powodować jakieś problemy. Są też – i takie rozwiązanie bym polecił – niektóre paczki oferowane w tzw. uniwersalnych formatach (w przypadku Ubuntu to głównie snap, ale są też appimage i być może – bo nie wiem – można tu uruchomić flatpak). Stąd możesz czerpać „nowinki” i jednocześnie system nie zostanie naruszony. Bezpieczne rozwiązanie.
    Teraz dlaczego ów OpenSUSE. Otóż patrząc z punktu widzenia osoby łasej na „nowinki” to dość ciekawa alternatywa. Wychodzi w dwu wersjach: Leap (czyli coś w rodzaju odpowiednika LTS), jednakże dochodzą do niego nowsze wersje oprogramowania nie tylko ze względu na poprawki bezpieczeństwa) oraz Tumbleweed, który jest dystrybucją ciągłą, gdzie w istocie masz prawie najnowsze oprogramowanie (trafia tu niekoniecznie od razu, ale po okresie przetestowania). Jednocześnie – ponoć (bo sam tego nie robiłem) – jest dość łatwa możliwość przejścia z Leap na Tumbleweed.
    Ilość dostępnego oprogramowania dla Ubuntu i dla OpenSUSE będzie podobna.

  3. Ari9310
    30 sierpnia, 2018 at 13:00

    Dziękuję bardzo za tak obszerną odpowiedź.
    Z Linuxami mam styczność od wielu lat, czy to pendrivy (bootowalny .iso lub cały linux zainstalowany na pendrive) czy właśnie VirtualBoxy, miałem dobrą chwilę swojego VPSa na którym coś tam kombinowałem, obecnie walczę z FreeNASem na starym laptopie (tak, wiem, w sumie to nie Linux), mam też RaspberryPi, w pracy NUCa z linuxem (aczkolwiek obsługuję tylko po SSH) ale ostanie wieści o obsłudze gier windowsowych przez Steama przekonały mnie że można używać Linuxa bez ciągłych restartów do Windowsa żeby jakąś grę sobie włączyć. Ostatnimi czasy i tak wiele nie gram w sumie… Poza steamem rośnie też nienawiść do Windowsa i tego że nie jestem w stanie nad tym zapanować bo np pomimo wyłączenia wszystkich syfów, aktualizacji, telemetrii itp i tak dostaje od jakiegoś czasu radosne komunikaty że system gotowy do aktualizacji… WTF?! Poza tym system często łapie jakieś zadyszki, Windows 7 na znacznie wolniejszym SSD śmigał jak rakieta, Win 10 wymaga chyba dysków M.2 z kilkoma GB/s w odczycie i zapisie żeby śmigał jak rakieta… nie wiem, ale czekanie 10-20s aż się folder „Pobrane” z 15 plikami posortowanymi wg daty modyfikacji załaduje to już jest grube przegięcie.
    Dobra, nie ważne 😉 Co do Linuxów to wybrałem właśnie Ubuntu ze względu na popularność oraz fakt że mi się po prostu podoba, jest nieco innych od reszty „windowsopodobnych” środowisk. Myślałem też o Mincie z Cinnamonem ale… wolę chyba Ubuntu. OpenSUSE przejrzałem na szybko, pobiorę nawet i rzucę okiem na VirtualBoxie ale raczej zostanę przy Ubuntu.
    Co do różnic z LTS to jeśli chodzi o wsparcie to wiadomo ale „normalne” Ubuntu przechodzi na nowsze wersje i o to mi chodzi, lubię być na bieżąco z nowościami w systemie i nie chciałbym siedzieć cały czas na 18.04. Ale chyba na Linuxach można w miarę łatwo manewrować pomiędzy wersjami…? A na pewno przeskoczyć z 18.04 na coś nowszego jeśli to będzie warte.
    No nic, chyba jestem zdecydowany, wrócę do domu, jakoś wykombinuję chociaż te ok 100GB wolnego miejsca na SSD na Linuxa 🙂 Jeszcze dopytam, wystarczy partycja na SWAP i druga partycja na „/” czy musi być jeszcze trzecie na „/home”?

  4. Dobrecki
    30 sierpnia, 2018 at 14:25

    @pavbaranov:disqus dobrze pisze, więc nie będę powielał.
    Jeśli lubisz nowości i od czasu do czasu grzebanie w systemie, to wersja „normalna” będzie dla ciebie idealna. Jeśli marzy ci się spokój z reinstalacjami systemów na 3 do 5 lat, sięgnij po LTS-a.
    Ubuntu na początek jest dobrym wyborem, Mint bazujący na Ubuntu jest już prawie całkiem bezobsługowy, choć odczuwalnie cięższy.

    Jeśli chodzi o windowsa, mam dokładnie te same odczucia – system dla bogatych i mających do zmarnowania dużo czasu, masochistów.

    Co do partycji. SWAPa nie musisz wcale dawać, jeśli masz powiedzmy 8 GB RAMu. Chyba że zamierzasz używać jakiś naprawdę pamięciożernych aplikacji. Nowe Linuksy radzą sobie bez SWAPa.
    Home nie musi być na oddzielnej partycji, może być na tej samej co system („/”), choć na dłuższą metę to niezbyt dobry pomysł. Bo w razie instalacji innego systemu mogą być problemy, w razie padnięcia dysku też zwiększa się szansa utraty danych.

    Ja zwykle używam oddzielnie „/” (jakieś 20GB) i „/home”(aktualnie około 400 GB), w razie czego zawartość Home zostawiam a formatuję tylko partycję systemową.

    Dobrze kombinujesz, ja bym na twoim miejscu wrzucił na dysk aktualne Ubuntu albo Minta i się pobawił z pół roku. Inny system wymaga też trochę innego podejścia, za pół roku będziesz wiedział choć jakie pytania zadawać.

    Powodzenia. 😉

  5. Ari9310
    30 sierpnia, 2018 at 14:40

    Ok, dzięki 😉
    Rozumiem o co chodzi z oddzielnymi partycjami tylko trochę bałem się z rozmiarem „/” żeby nie była niepotrzebnie za duża ani za mała. Jeśli (jak sądzę) doświadczonemu użytkownikowi wystarcza „zaledwie” 20 GB to w zupełności mi również powinno wystarczyć. Jak tak teraz myślę… w razie co dobrze mi się wydaje że jest możliwość powiększenia partycji kosztem /home?

  6. pavbaranov
    30 sierpnia, 2018 at 17:20

    Od końca – Obecnie Ubuntu w ogóle nie wymaga partycji SWAP, a w zamian bawi się plikiem, który to samo robi (coś co znane z Windows). Jak pisze @dobrecki – swap (dowolny) może, ale nie musi w ogóle być i wiele zależy od sposobu w jaki masz zamiar korzystać z komputera (np. któryś z rodzajów uśpienia komputera idzie właśnie w swap).
    Na pytanie, czy trzeba, czy wystarczy – cóż, to zależy od indywidualnych upodobań. Ja od lat tworzę /home i nie narzekam. Dzięki temu nawet wymiana systemu i tak zachowuje mi to, co powinna.
    Wracając do Ubuntu – obecnie ta wersja ma środowisko GNOME 3, które znajdziesz zarówno w OpenSUSE jak przede wszystkim w Fedorze i w dziesiątkach innych dystrybucji. W Ubuntu lekko inaczej wygląda – fakt.
    „Manewrowanie” pomiędzy wersjami. Dużo, bardzo dużo zależy od dystrybucji oraz od tego co się od ostatniego wydania (mówię o tzw. dystrybucjach wydawniczych) podziało. Takie przejście może być kompletnie bezproblemowe, albo – przynajmniej laikowi – kompletnie nie udać. W pośrednich przypadkach – wymaga dość sporo wiedzy.
    Jeśli chodzi o OpenSUSE – obraz, który ma ponad 4GB to obraz instalacyjny (nie jest to tzw. livecd – zawiera jednak niemal wszystko co jest potrzebne do instalacji offline co najmniej dwu środowisk). Są też mniejsze z różnymi środowiskami, także różnego rodzaju jego forki, które różnią się praktycznie tylko domyślnym środowiskiem.
    Jeśli natomiast chodzi o te nowe pakiety. Różnie to bywa. Celujesz w Ubuntu, a zatem w GNOME. Tutaj obecnie będziesz miał stosunkowy zastój. Natomiast jeśli ograniczysz się wyłącznie do oficjalnych repozytoriów – fakt, nowsza wersja (np. 18.10 vs. 18.04) będzie mieć nowsze paczki, ale nie oznacza to, że w toku życia takiego wydania będziesz otrzymywał w repozytorium najnowsze wydania oprogramowania. To nie tego typu dystrybucja. Te z najnowszymi to najczęściej różne wersje dystrybucji „rolling” jak choćby wymieniona przeze mnie OpenSUSE Tumbleweed.

  7. pavbaranov
    30 sierpnia, 2018 at 20:20

    „Jeśli (jak sądzę) doświadczonemu użytkownikowi wystarcza „zaledwie” 20 GB to w zupełności mi również powinno wystarczyć.” To jeszcze rada. Wielkość partycji głównej będzie Ci się z czasem zapełniać. Przyczyn jest kilka. Najważniejsza to instalowane programy i to nie dlatego, że są one „same” instalowane. Otóż instalacja programu w linuksie odbywa się w ten sposób, że najpierw ściągana jest paczka (i trafia na tę partycję główną), a potem jest z niej przeprowadzana instalacja. Po instalacji – paczka, z której ona nastąpiła nie jest usuwana. Następna instalacja, aktualizacja itp. powoduje to samo. Masz zatem ten sam program zainstalowany w systemie i w formie paczki w cache (różne dystrybucje w różnych miejscach, ale podstawy katalog to /var/cache). Warto to od czasu do czasu przeczyścić (są odpowiednie narzędzia) i wówczas takich 20GB raczej nie zapełnisz.
    Druga kwestia – jeśli zdecydujesz się na paczki uniwersalne (snap, flatpak), to one również wymagają nieco miejsca na dysku (snap o ile wiem zawsze w głównej, w przypadku flatpak – różnie) i to niezależnie od tego, czy te same biblioteki, których wymagają te aplikacje są w tych samych wersjach w systemie, czy nie.
    Tak, zmienić rozmiar partycji w linuksie można. Niekiedy jednak (ze względu na długotrwałość – przynajmniej na HDD – tego procesu) wygodniej po prostu zgrać to co istotne (dokumenty itp.) i po prostu wgrać system od nowa, z nowym podziałem na partycje.

  8. Dobrecki
    30 sierpnia, 2018 at 22:46

    20 GB na dziś mi zwykle wystarcza, zawsze można zastosować częściej czyszczenie „/” ze zbędnych plików (choćby proste: sudo apt-get clean).
    Nie jesteś pewien, daj 25 lub 30 GB i będziesz miał zapas. Zwłaszcza dla tych nowych paczek, snapa i flatpaka.

    Tak jak pisze @pavbaranov:disqus , zmiana rozmiaru partycji może być czasochłonna. No i ruszanie przy jednej okazji obu ważnych partycji, wprowadza niepotrzebny element ryzyka.

    Szczerze mówiąc, ze dwa, trzy razy próbowałem zmienić rozmiar częściowo zapełnionego Home, i … potwierdzę co pisze kolega, szybciej i prościej będzie zgrać dane na kluczyk i machnąć format partycji. ;)))

    Aha, ja jestem zielonym użytkownikiem Pingwina. Wiem jedynie czego nie robić żeby nie zdechło. Natomiast
    @pavbaranov:disqus udzieli ci już w pełni wiarygodnych informacji. To stary wyjadacz, siedzi w tym po uszy.

  9. Ari9310
    31 sierpnia, 2018 at 14:35

    @dobrecki:disqus @pavbaranov:disqus dzięki bardzo za pomoc, system mam już zainstalowany i po pracy będę powoli walczył dalej z różnymi przeciwnościami losu i z konfigurowaniem systemu 😉 Bo oczywiście jak zawsze „nowemu” to wiatr w oczy i… ;p

  10. pavbaranov
    31 sierpnia, 2018 at 15:36

    Uszy do góry. To tylko na początku wydaje się „trudne” (niektórym). I – dobra rada – wpierw się w miarę pobaw nowym systemem, a dopiero potem próbuj coś zmieniać. Jeśli coś wymaga konfiguracji, to dwa razy się zastanów, czy na pewno i czy nie są to wyniesione nawyki z innego systemu. Masz Ubuntu – nie dodawaj od początku wszelkich PPA jak leci, bo wydaje Ci się, że to w czymś pomoże.
    Innymi słowy – zalecam spokój wielki.

  11. Dobrecki
    3 września, 2018 at 22:08

    Nie no, nowy po prostu zwykle płaci frycowe. Żaden tam wiatr w oczy. Wszyscy żeśmy przez to przechodzili. ;))

    I znów popieram to co pisze kolega @pavbaranov:disqus . Daj se na luz, popróbuj, pobaw się, zaklnij kilka razy nad własną głupotą(to moje hobby było na początku). 😀

    Linuks odpłaca mi się za te kilka dni(wszystkiego w sumie) poświęconych na naukę. Już nie pamiętam kiedy ostatnio poświęciłem systemowi więcej niż 5 minut czasu. Poza instalacją oczywiście.
    Komputer jest w praktyce zawsze dostępny, zawsze w pełni wydajności, wybudza się w 4 sekundy, startuje od zera w 18 sekund(hdd tradycyjny). Teraz to jest narzędzie na które mogę zawsze liczyć.
    Czasami muszę popracować na windzie, mamusiu, jak ja wtedy wielbię pingwiny! ;)))

    Połamania klawiatury życzę.

  12. Ari9310
    3 września, 2018 at 22:33

    No tak ale na dzień dobry instalacja trwała z 30 minut, były dwie bardzo długie rozkminy i nie wiem do końca nad czym, druga rozkmina mogła być spowodowana internetem. Drugi problem na dzień dobry to Opera. Zapisałem sobie w zakładkach z kilkanaście poradników czy innych ciekawych wpisów tak żeby zainstalować operę i zacząć zabawę a tu Ci klops… hasła zsynchronizowane, historia zsynchronizowana a zakładki nie także w sumie byłem „uziemiony”. Po 2 resetach i jednej reinstalacji całkowitej na drugi dzień gdy tak opera sobie chyba ze 2h w tle wisiała w końcu się zakładki pojawiły 😉
    Teraz jestem strasznie rozdarty, trochę jak po przeprowadzce do nowego domu. Dalej moim domem z przyzwyczajenia gdzieś tam jest windows ale i w tym nowym linuxowym domu przecież mam wszystko co mi potrzebne do życia… No nic, powoli do przodu 😉 dzięki za pomoc, w razie co będę pytał ale mamy końcówkę 2018r… każde pytanie o jakim pomyślę zapewne zadało zadane już ze 100 razy gdzieś w internecie, kwestia tylko znaleźć odpowiedź.
    Pozdrawiam i dzięki jeszcze raz 😉

  13. pavbaranov
    3 września, 2018 at 22:37

    Drobna uwaga – Ubuntu ma stosunkowo dobre wiki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Translate »