Štítekbat

Moderní CLI: bat – cat se superschopnostmi

Moderní CLI Bat

Když si soubor vypíšu přes cat, dostanu holý text. Bez barev, bez čísel řádků, bez orientace. bat (jako netopýr 🦇) přidává všechno, co bys od moderního nástroje čekal – a stále se chová jako cat, když ho pipuješ dál.

Instalace

sudo pacman -S bat

Balíček je v oficiálním repu. Pro plnou funkčnost (git integrace, stránkování) je dobré mít i less a git, což na Archu máš.

Základní použití

# jednoduchý výpis
bat soubor.md

# bez čísel řádků
bat -n soubor.md

# bez stránkování (jako cat)
bat --paging=never soubor.md

# jen konkrétní řádky
bat -r 10:20 soubor.py

# více souborů najednou
bat *.md

Co bat umí navíc oproti cat

Zvýraznění syntaxe pro víc než 150 jazyků – bash, python, yaml, JSON, markdown, Rust, Go, TOML, INI, systemd unit files a spousta dalších. Autodetekce podle přípony.

Čísla řádků vlevo, s barevnou hranicí sekcí.

Git integrace. Vedle čísla řádku vidíš + (přidaný), ~ (změněný), - (smazaný) oproti HEAD. Rychlý přehled bez git diff.

Automatické stránkování. Když je soubor delší než terminál, bat ho pošle do less. Krátký výpis se rovnou vypíše.

Detekce non-textových souborů. Když omylem cat-uješ binárku, bat tě upozorní místo toho, aby ti rozházel terminál.

Chování v pipe

Klíčové: když bat pipuješ dál, chová se jako cat – jen holý text, žádné barvy, žádné čísla.

bat data.json | jq .
cat data.json | jq .    # totéž

Tohle je důvod, proč můžeš cat nahradit aliasem bez obav, že rozbije skripty.

Aliasy

Do ~/.zshrc:

alias cat='bat --paging=never'
alias catp='bat'             # cat s pagingem, když ho chceš

Když opravdu potřebuješ původní cat (třeba pro rychlé pipe operace):

\cat soubor.txt

Praktické triky

Použij bat jako pager pro man:

export MANPAGER="sh -c 'col -bx | bat -l man -p'"
export MANROFFOPT="-c"

Manuálové stránky teď dostanou zvýrazněnou syntax.

Kombinace s find / fd a fzf:

fzf --preview 'bat --color=always {}'

Máš okamžitý náhled souboru při procházení.

Diff přes bat:

diff soubor1 soubor2 | bat -l diff
git diff | bat -l diff --paging=never

Nebo nainstaluj rovnou git-delta, který používá bat pod kapotou.

Zvýraznění pro nestandardní přípony:

bat -l ini /etc/pacman.conf
bat -l bash /etc/profile

Výpis všech podporovaných jazyků:

bat --list-languages

Konfigurace

Vytvoř config:

mkdir -p ~/.config/bat
bat --generate-config-file

Otevře se ~/.config/bat/config s příklady. Typická konfigurace:

--theme="Catppuccin Mocha"
--style="numbers,changes,header"
--paging=auto
--italic-text=always

Dostupná témata:

bat --list-themes

Vlastní téma můžeš přidat do ~/.config/bat/themes/ a pak spustit:

bat cache --build

Souborové operace navíc

Sjednotit více souborů (jako cat file1 file2 > out):

bat -pp file1.md file2.md > combined.md

-pp = plain plain = žádné dekorace, jen text.

Vytisknout s hlavičkou souboru:

bat --style="header,numbers" *.md

Kdy se vrátit k cat?

Ve skriptech – i když bat v pipe funguje jako cat, přidává zbytečnou závislost. Když píšeš skript, který má běžet i na jiných strojích, použij cat.

Ve výkonově kritických operacích – bat má o něco víc overheadu při inicializaci. Když děláš velké dávkové operace, cat bude rychlejší.

Shrnutí

bat je pravděpodobně nejjednodušší upgrade, který můžeš svému terminálu udělat. Pár set kilobajtů, jeden alias, a najednou vidíš struktury v každém konfiguráku.

Příště se podíváme na fd – rychlejší, jednodušší a přátelštější náhradu za find.

Číst dál