Obsah
2. Alternativa k utilitě cat – nástroj bat
4. Základní použití nástroje bat
5. Další možnosti nabízené nástrojem bat
8. Barvová schémata použitá na tmavém pozadí
9. Barvová schémata použitá na světlém pozadí
11. Další ukázky možností projektu bat
12. Ostatní nástroje sloužící pro zvýraznění syntaxe vybraného textu nebo souboru
14. Příklady použití nástroje ccat
15. Převod textu do HTML se zvýrazněním syntaxe
16. Obsah následující části seriálu
1. Utility cat a tac
Standardní nástroj cat pravděpodobně není nutné pravidelným čtenářům Roota podrobněji představovat. Jedná se o utilitu, která se typicky používá pro zobrazení obsahu souborů (popř. speciálního souboru) na terminálu. Ovšem je ji možné použít i k dalším účelům, například pro spojení několika souborů s přesměrováním výstupu do výsledného souboru (což je obecnější řešení, než použití „operátoru“ + v jiných operačních systémech). Kromě toho je možné si zvolit i způsob zobrazení obsahu souboru. Přepínačem -n resp. –number se zapíná výpis čísel řádků, přepínač -E popř. –show-ends povoluje zobrazení znaků „$“ na konci každého řádku a přepínač -T neboli –show-tabs řídí zobrazení znaků horizontálního tabulátoru ve formě „^I“. Podobně lze pomocí -v určit zobrazení ostatních řídicích znaků (viz též přiložená trojice screenshotů).
Obrázek 1: Použití standardního nástroje cat pro zobrazení obsahu zdrojového souboru (se znaky Tab, protože se v tomto konkrétním případě jedná o zdrojový kód napsaný v jazyce Go).
V některých situacích (výpis historie v opačném pořadí atd.) je nutné zobrazit obsah nějakého souboru, ale s prohozeným pořadím textových řádků – poslední řádek se zobrazí jako první atd. Pro tento účel slouží další utilita, která se jmenuje tac (tedy „cat“ zapsáno obráceně). Tato utilita navíc umožňuje specifikaci, který znak či sekvence znaků je považována za označení konce řádku. Pokud jsou konce řádku označeny pevnou sekvencí znaků, lze ji specifikovat volbou -s popř. –separator, ovšem specifikovat je možné i regulární výraz volbou -r resp. její delší variantou –regex.
Obrázek 2: Přepínačem -t se v nástroji cat zapne zobrazování tabulátorů formou „^I“.
Obrázek 3: Zvýraznění konců řádků znakem $ v nástroji cat.
Obrázek 4: Použití příkazu tac namísto cat vede k zobrazení řádků ze souboru se zdrojovým kódem v opačném pořadí.
2. Alternativa k utilitě cat – nástroj bat
Výše zmíněné utility cat a tac mají v praxi všemožné možnosti použití, a to jak při interaktivní práci v shellu, tak i při tvorbě shellových skriptů. Současně ale můžeme narazit i na určité limity, zejména při výpisu zdrojových kódů, souborů používajících značkovací jazyky (HTML, Markdown, AsciiDoc, TeX, LaTeX atd.), které bývají v prakticky všech programátorských textových editorech zobrazeny se zvýrazněnou syntaxí a mnohdy i s volitelným barevným schématem. Při interaktivní práci v shellu by mnohdy bylo velmi užitečné mít možnost si zobrazit obsah takových souborů se zvýrazněnou syntaxí, a to ideálně s využitím nějakého prohlížeče a nikoli plnohodnotného textového editoru, jehož chování nemusí být vždy užitečné (textový editor totiž mj. převezme vstup z klávesnice a nejedná se tedy o nástroj, který by bylo možné jednoduše spojit například s utilitou fzf (fuzzy finder), kterou si popíšeme příště).
Utility nahrazující a rozšiřující možnosti standardního nástroje cat samozřejmě existují a dokonce jich je několik. Jedna z těchto utilit (a nutno říci, že poskytovanými možnostmi asi nejlepší nástroj tohoto typu) se jmenuje bat, což je opět slovní hříčka odkazující na původní cat (a nikoli na dávkové – batch soubory z MS DOSu). Velkou předností batu je podpora poměrně značného množství různých typů souborů a taktéž možnost konfigurace barvového schématu použitého pro obarvení syntaxe, přičemž některá barvová schémata jsou určena pro tmavé pozadí terminálu a další pro pozadí světlé. Taktéž se jedná o dostatečně rychlý nástroj (i když podle benchmarků nikoli nejrychlejší, což však při běžném použití nemusí způsobovat žádné viditelné problémy) a zapomenout nesmíme na již výše zmíněnou možnost integrace fzf + bat. Navíc bat dokáže dokument automaticky zobrazovat po stránkách, k čemuž se používá nastavený nástroj typu „pager“ (typicky more a less).
Obrázek 5: Logo nástroje bat.
Na rozdíl od minule popsaného nástroje Go Bullet Train, který je naprogramován v jazyce Go, je dnes popisovaná utilita bat vytvořena v Rustu. I přes značné rozdíly v sémantice obou zmíněných programovacích jazyků mají výsledné spustitelné podoby obou nástrojů podobné vlastnosti – jsou velmi rychlé a navíc má vlastní spustitelný binární soubor jen několik závislostí na dalších knihovnách. To mj. do značné míry zjednodušuje instalaci GBT i batu na těch distribucích, do nichž tyto utility nejsou (alespoň prozatím) zařazeny.
Obrázek 6: Zobrazení obsahu souboru .bashrc standardní utilitou cat.
Obrázek 7: Zobrazení obsahu téhož souboru .bashrc, tentokrát ovšem utilitou bat. Tento nástroj automaticky rozpoznal formát souboru a na základě této informace zvýraznil jeho syntaxi.
3. Instalace nástroje bat
V případě, že se nástroj bat nenachází v repositáři linuxové distribuce (což je v současnosti dosti pravděpodobné), je možné provést jeho instalaci buď z připravených spustitelných binárních souborů nebo provést překlad nástroje ze zdrojových souborů (k tomuto účelu je nutné mít nainstalovaný překladač Rustu a další podpůrné nástroje).
Obrázek 8: Standardní nástroj cat zobrazující zdrojový kód naprogramovaný v jazyce Go.
Obrázek 9: Tentýž zdrojový kód, ovšem nyní zobrazený batem, pochopitelně se zvýrazněním syntaxe.
Instalace spustitelného binárního souboru je většinou velmi snadná, pochopitelně pokud používáte nějakou podporovanou mikroprocesorovou architektu. V následujícím příkladu je ukázána instalace na platformě x86–64. Nejprve je nutné získat tarball se spustitelným binárním souborem pro tuto platformu, například nástrojem wget:
$ wget https://github.com/sharkdp/bat/releases/download/v0.12.1/bat-v0.12.1-x86_64-unknown-linux-gnu.tar.gz
Následně se tarball rozbalí:
$ tar xvfz bat-v0.12.1-x86_64-unknown-linux-gnu.tar.gz bat-v0.12.1-x86_64-unknown-linux-gnu
Poté je již pouze nutné umístit spustitelný soubor vzniklý po rozbalení do takového adresáře, na který ukazuje proměnná prostředí PATH (například do /usr/local/bin, popř. do adresáře bin nebo .local/bin umístěného v domácím adresáři).
Žádné podrobnější nastavení ani instalaci dalších balíčků již většinou není nutné provádět, protože spustitelné binární soubory získané překladem pomocí Rustu mají (ostatně podobně jako v případě Go) jen relativně malé množství závislostí, o čemž se můžeme snadno přesvědčit:
$ ldd bat linux-vdso.so.1 (0x00007ffd6a5ea000) libz.so.1 => /lib64/libz.so.1 (0x00007f65d5432000) libc.so.6 => /lib64/libc.so.6 (0x00007f65d507c000) /lib64/ld-linux-x86-64.so.2 (0x00007f65d5d21000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f65d4e78000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f65d4c5a000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f65d4a43000) libm.so.6 => /lib64/libm.so.6 (0x00007f65d46f8000)
Alternativně je možné provést překlad nástroje bat přímo ze zdrojových souborů. Potřebovat budete především překladač i další podpůrné nástroje programovacího jazyka Rust, a to včetně utility Cargo. Tentokrát namísto stažení tarballu s binárním spustitelným souborem naklonujeme repositář se zdrojovými kódy:
$ git clone --recursive https://github.com/sharkdp/bat
Poté přejdeme do adresáře s naklonovaným repositářem a provedeme překlad popř. i instalaci, a to přes nástroj Cargo:
$ cd bat $ cargo build --bins $ cargo install
Obrázek 10: I vestavěná nápověda batu se zobrazí se zvýrazněním syntaxe.
4. Základní použití nástroje bat
Nástroj bat se může používat podobným způsobem, jako standardní utilita cat v kombinaci s pagerem (less, more). V tom nejjednodušším případě je tedy možné zadat pouze jméno souboru, který se má zobrazit, ideálně i s obarvením (zvýrazněním) syntaxe v případě, že je typ souboru rozeznán a bat obsahuje příslušný popis syntaxe:
$ bat src/go/go-capture/capture.go
Obrázek 11: Zobrazení obsahu souboru .vimrc (tedy konfiguračního souboru pro textový editor Vim) nástrojem cat.
Obrázek 12: Tentýž soubor, ovšem zobrazený batem.
Zvolit je možné i barvové schéma, kterým se blíže věnujeme v sedmé kapitole:
$ bat src/go/go-capture/capture.go --theme ansi-light
Pokud je zapotřebí zobrazit soubor ve stylu „cat“ (obsah se zvýrazněním syntaxe, ovšem bez dalších dodatečných informací), použije se:
$ bat --plain src/go-root/article_01/01_hello_world.go
nebo jen:
$ bat -p src/go/go-capture/capture.go
Existují i další varianty, například zobrazení čísel řádků:
$ bat --style numbers full src/go-root/article_01/01_hello_world.go
Přidání mřížky okolo textu:
$ bat --style grid src/go-root/article_01/01_hello_world.go
Popř. zobrazení všech dodatečných informací (čísla řádků atd.):
$ bat --style full src/go-root/article_01/01_hello_world.go
Obrázek 13: Zobrazení obsahu souboru ve stylu nástroje cat, ovšem s obarvením syntaxe.
Všechny řídicí znaky lze zobrazit volbou -A nebo její variantou –show-all:
$ bat .vimrc --show-all
Obrázek 14: Zobrazení (resp. přesněji řečeno zvýraznění) řídicích znaků.
5. Další možnosti nabízené nástrojem bat
Podívejme se nyní na některé další možnosti, které nám nástroj bat nabízí.
Zapnutí zalomení dlouhých řádků:
$ bat src/go-root/LICENSE --theme ansi-dark --wrap auto
Vypnutí zalomení:
$ bat src/go-root/LICENSE --theme ansi-dark --wrap never
Poslední varianta zalamování:
$ bat src/go-root/LICENSE --theme ansi-dark --wrap character
Zvýraznění vybraného řádku:
$ bat src/go/go-capture/capture.go --theme ansi-light --highlight-line 15
popř.:
$ bat src/go/go-capture/capture.go --theme ansi-light --highlight-line 15 -n
Zobrazení pouze vybraných řádků (včetně obou limitních řádků):
$ bat src/go/go-capture/capture.go --line-range 30:40
Specifikace, jaká pravidla pro obarvení syntaxe se mají zvolit, tentokrát nezávisle na jménu nebo koncovce souboru:
$ bat -m my.svg:xml src/sum.svg
Obrázek 15: Rozpoznání binárního souboru (nerozbije se nastavení terminálu).
Obrázek 16: Volbou -A lze mj. povolit i zobrazení binárních souborů.
6. Podporované typy souborů
Jednou z předností utility bat oproti jiným podobně koncipovaným nástrojům je podpora zvýraznění syntaxe mnoha typů programovacích jazyků, značkovacích jazyků i konfiguračních souborů (což ocení i administrátoři, nejenom programátoři). Všechny standardně podporované typy souborů i s jejich jmény či koncovkami jsou vypsány v následující tabulce, ovšem nejedná se o neměnné nastavení, protože v případě potřeby lze doplnit pravidla pro další typy souborů, upravit seznam koncovek (například .asm namísto .s) apod.:
# | Jazyk, formát či typ souboru | Koncovky či plná jména souborů |
---|---|---|
1 | ActionScript | as |
2 | Advanced CSV | csv,tsv |
3 | AppleScript | applescript,script editor |
4 | ARM Assembly | s,S |
5 | AsciiDoc | adoc,asciidoc,asc |
6 | ASP | asa |
7 | Assembly (x86_64) | yasm,nasm,asm,inc,mac |
8 | AWK | awk |
9 | Batch File | bat,cmd |
10 | BibTeX | bib |
11 | Bourne Again Shell (bash) | sh,bash,zsh,.bash_aliases,.bash_completions,.bash_functions,.bash_login,.bash_logout,.bash_profile,.bash_variables,.bashrc,.profile,.textmate_init,.zshrc,PKGBUILD,.ebuild,.eclass |
12 | C | c,h |
13 | C# | cs,csx |
14 | C++ | cpp,cc,cp,cxx,c++,C,h,hh,hpp,hxx,h++,inl,ipp |
15 | Cabal | cabal |
16 | Clojure | clj,cljc,cljs,edn |
17 | CMake | CMakeLists.txt,cmake |
18 | CMake C Header | h.in |
19 | CMake C++ Header | hh.in,hpp.in,hxx.in,h++.in |
20 | CMakeCache | CMakeCache.txt |
21 | Crystal | cr |
22 | CSS | css,css.erb,css.liquid |
23 | D | d,di |
24 | Dart | dart |
25 | Diff | diff,patch |
26 | Dockerfile | Dockerfile,dockerfile |
27 | DotENV | .env,.envrc,.env.dist,.env.local,.env.sample,.env.example,.env.test,.env.test.local,.env.dev,.env.development,.env.development.local,.env.prod,.env.production,.env.production.local,.env.dusk.local |
28 | Elixir | ex,exs |
29 | Elm | elm |
30 | Erlang | erl,hrl,Emakefile,emakefile |
31 | F# | fs,fsi,fsx |
32 | F# | fs,fsi,fsx |
33 | friendly interactive shell (fish) | fish |
34 | Git Attributes | attributes,gitattributes,.gitattributes |
35 | Git Commit | COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG |
36 | Git Config | gitconfig,.gitconfig,.gitmodules |
37 | Git Ignore | exclude,gitignore,.gitignore |
38 | Git Link | .git |
39 | Git Log | gitlog |
40 | Git Rebase Todo | git-rebase-todo |
41 | Go | go |
42 | Graphviz (DOT) | dot,DOT,gv |
43 | Groovy | groovy,gvy,gradle,Jenkinsfile |
44 | Haskell | hs |
45 | Haskell (improved) | hs,hsc |
46 | Highlight non-printables | show-nonprintable |
47 | hosts | hosts |
48 | HTML | html,htm,shtml,xhtml |
49 | HTML (ASP) | asp |
50 | HTML (EEx) | html.eex |
51 | HTML (Erlang) | yaws |
52 | HTML (Rails) | rails,rhtml,erb,html.erb |
53 | HTML (Tcl) | adp |
54 | HTML (Twig) | twig,html.twig |
55 | INI | ini,INI,INF,reg,REG,lng,cfg,CFG,desktop,url,URL,.editorconfig,.hgrc,hgrc |
56 | Java | java,bsh |
57 | Java Properties | properties |
58 | Java Server Page (JSP) | jsp |
59 | JavaScript | js,htc |
60 | JavaScript (Babel) | js,jsx,babel,es6 |
61 | JavaScript (Rails) | js.erb |
62 | JSON | json,sublime-settings,sublime-menu,sublime-keymap,sublime-mousemap,sublime-theme,sublime-build,sublime-project,sublime-completions,sublime-commands,sublime-macro,sublime-color-scheme,ipynb,Pipfile.lock |
63 | jsonnet | jsonnet,libsonnet,libjsonnet |
64 | Julia | jl |
65 | Kotlin | kt,kts |
66 | LaTeX | tex,ltx |
67 | Less | less,css.less |
68 | Lisp | lisp,cl,clisp,l,mud,el,scm,ss,lsp,fasl |
69 | Literate Haskell | lhs |
70 | Lua | lua |
71 | Makefile | make,GNUmakefile,makefile,Makefile,makefile.am,Makefile.am,makefile.in,Makefile.in,OCamlMakefile,mak,mk |
72 | Manpage | man |
73 | Markdown | md,mdown,markdown,markdn |
74 | MATLAB | matlab |
75 | NAnt Build File | build |
76 | Nix | nix |
77 | Objective-C | m,h |
78 | Objective-C++ | mm,M,h |
79 | OCaml | ml,mli |
80 | OCamllex | mll |
81 | OCamlyacc | mly |
82 | orgmode | org |
83 | Pascal | pas,p,dpr |
84 | Perl | pl,pm,pod,t,PL |
85 | PHP | php,php3,php4,php5,php7,phps,phpt,phtml |
86 | Plain Text | txt |
87 | PowerShell | ps1,psm1,psd1 |
88 | Protocol Buffer | proto,protodevel |
89 | Protocol Buffer (TEXT) | pb.txt,proto.text,textpb,pbtxt,prototxt |
90 | Puppet | pp,epp |
91 | PureScript | purs |
92 | Python | py,py3,pyw,pyi,pyx,pyx.in,pxd,pxd.in,pxi,pxi.in,rpy,cpy,SConstruct,Sconstruct,sconstruct,SConscript,gyp,gypi,Snakefile,wscript |
93 | R | R,r,s,S,Rprofile |
94 | Rd (R Documentation) | rd |
95 | Regular Expression | re |
96 | requirements.txt | requirements.txt |
97 | reStructuredText | rst,rest |
98 | Robot Framework syntax highlighting. | robot |
99 | Ruby | rb,Appfile,Appraisals,Berksfile,Brewfile,capfile,cgi,Cheffile,config.ru,Deliverfile,Fastfile,fcgi,Gemfile,gemspec,Guardfile,irbrc,jbuilder,Podfile,podspec,prawn,rabl,rake,Rakefile,Rantfile,rbx,rjs,ruby.rail,Scanfile,simplecov,Snapfile,thor,Thorfile,Vagrantfile |
100 | Ruby Haml | haml,sass |
101 | Ruby on Rails | rxml,builder |
102 | Rust | rs |
103 | Sass | sass |
104 | Scala | scala,sbt |
105 | SCSS | scss |
106 | SQL | sql,ddl,dml |
107 | SQL (Rails) | erbsql,sql.erb |
108 | SSH Config | ssh_config |
109 | SSHD Config | sshd_config |
110 | Strace | strace |
111 | Swift | swift |
112 | syslog | log |
113 | Tcl | tcl |
114 | Terraform | tf,tfvars,hcl |
115 | TeX | sty,cls |
116 | Textile | textile |
117 | TOML | toml,tml,Cargo.lock,Gopkg.lock,Pipfile |
118 | TypeScript | ts |
119 | TypeScriptReact | tsx |
120 | varlink | varlink |
121 | Verilog | v,V |
122 | VimL | vim,.vimrc |
123 | XML | xml,xsd,xslt,tld,dtml,rss,opml,svg |
124 | YAML | yaml,yml,sublime-syntax |
Všechny aktuálně podporované typy souborů je možné si nechat vypsat, a to konkrétně příkazem:
$ bat --list-languages
7. Volba barvového schématu
Již v úvodních kapitolách jsme si řekli, že při spouštění nástroje bat je možné si zvolit i některé barvové schéma, které se následně použije. To se provádí přepínačem –theme. Barvová schémata si dokonce můžeme všechna vypsat i s konkrétním příkladem zvýraznění syntaxe, a to následujícím příkazem:
$ bat --list-themes
8. Barvová schémata použitá na tmavém pozadí
Na dalších deseti screenshotech jsou jednotlivá barvová schémata ukázána. Nejdříve na tmavém pozadí (což je pravděpodobně konfigurace používaná na většině vývojářských počítačů):
Obrázek 17: Barvová schémata 1337, DarkNeon a GitHub.
Obrázek 18: Barvová schémata Monokai Extended, Monokai Extended Bright a Monokai Extended Light.
Obrázek 19: Barvová schémata Monokai Extended Origin, OneHalfDark a OneHalfLight.
Obrázek 20: Barvová schémata Sublime Snazzy, TwoDark a ansi-dark.
Obrázek 21: Barvová schémata ansi-light, base16 a zenburn.
9. Barvová schémata použitá na světlém pozadí
Nezapomeneme ani na schémata zobrazená na světlém pozadí (jen některá jsou čitelná, což je ovšem pochopitelné):
Obrázek 22: Barvová schémata 1337, DarkNeon a GitHub.
Obrázek 23: Barvová schémata Monokai Extended, Monokai Extended Bright a Monokai Extended Light.
Obrázek 24: Barvová schémata Monokai Extended Origin, OneHalfDark a OneHalfLight.
Obrázek 25: Barvová schémata Sublime Snazzy, TwoDark a ansi-dark.
Obrázek 26: Barvová schémata ansi-light, base16 a zenburn.
10. Bat a Git
Pokud se s využitím batu zobrazuje soubor z Git repositáře, který byl změněn, automaticky se přidané řádky označí znakem + a smazané řádky znakem -:
1 │ module github.com/redhatinsighs/insights-operator-controller 2 │ 3 │ go 1.13 4 │ 5 │ require ( 6 │ github.com/ZachtimusPrime/Go-Splunk-HTTP v0.0.0-20190909123348-f5369e72b8af 7 │ github.com/bitly/go-simplejson v0.5.0 // indirect 8 + │ github.com/c-bata/go-prompt v0.2.3 9 │ github.com/dgrijalva/jwt-go v3.2.0+incompatible 10 │ github.com/gorilla/mux v1.7.3 11 + │ github.com/gorilla/mux v1.7.3 12 + │ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect 13 │ github.com/lib/pq v1.2.0 14 _ │ github.com/mattn/go-sqlite3 v1.11.0 15 │ github.com/prometheus/client_golang v1.1.0 16 │ github.com/spf13/viper v1.4.0 17 │ github.com/verdverm/frisby v0.0.0-20170604211311-b16556248a9a 18 │ )
11. Další ukázky možností projektu bat
Obrázek 26: Výchozí barvové schéma se nehodí pro světlá pozadí terminálu.
Obrázek 27: Přepnutí na čitelnější schéma.
Obrázek 28: Další schéma nevhodné pro světlá pozadí.
Obrázek 29: Zvýraznění řádku číslo 15.
Obrázek 30: Dtto, ovšem s vypnutím zobrazení všech dalších informací (kromě vlastního textu).
Obrázek 31: Zobrazení obsahu textového souboru se zdrojovým kódem se zobrazením řídicích znaků (taby, konce řádků, mezery).
12. Ostatní nástroje sloužící pro zvýraznění syntaxe vybraného textu nebo souboru
Již z předchozího textu víme, že bat není jedinou utilitou, která dokáže zobrazit obsah vybraného (většinou textového) souboru se zvýrazněním syntaxe. Mezi další nástroje nebo knihovny určené pro zvýraznění (obarvení) syntaxe patří především knihovna Pygments, s níž jsme se již na stránkách Roota setkali v článcích Využití knihovny Pygments (nejenom) pro obarvení zdrojových kódů a Využití knihovny Pygments (nejenom) pro obarvení zdrojových kódů: vlastní filtry a lexery. Tuto knihovnu určenou pro jazyk Python lze použít pro vytvoření aplikací, které mohou zpracovávat tokenizovaný kód popř. ho přímo zobrazovat s obarvením syntaxe. Kromě toho taktéž existuje projekt GNU Source-highlight, nástroj ccat zmíněný v navazujících kapitolách, nástroj Rouge (naprogramovaný pro změnu v jazyce Ruby) nebo utilita hicat (ta vyžaduje mít nainstalovány nástroje z ekosystému JavaScriptu a npm).
13. Alternativní projekt ccat
S projektem nazvaným ccat (ať již se jeho jméno vyslovuje jakkoli) jsme se již setkali v několika poznámkách v předchozím textu. Jedná se o projekt, který se v mnohém podobá batu, ovšem – alespoň prozatím – je jeho použití omezeno na menší množství typů souborů a taktéž nabídka barvových palet se zredukovala na paletu určenou pro terminály s tmavým pozadím a na paletu určenou pro pozadí světlá. Prozatím je podporováno zvýraznění syntaxe pro sedm programovacích jazyků (což je dáno vlastnostmi použité knihovny sourcegraph/ syntaxhighlight, která prozatím více jazyků nepodporuje):
# | Jazyk |
---|---|
1 | C |
2 | Go |
3 | Java |
4 | JavaScript |
5 | JSON |
6 | Python |
7 | Ruby |
Obrázek 32: Zobrazení zdrojového souboru s výchozím nastavením barvové palety připravené pro světlé prostředí terminálu.
Instalace nástroje ccat je v případě, že máte nainstalován překladač jazyka Go a nastaven GOPATH, zcela jednoduchá:
$ go get -u github.com/jingweno/ccat
Použít lze pochopitelně i alias:
$ alias cat=ccat
14. Příklady použití nástroje ccat
Základní použití – náhrada nástroje cat, ovšem s obarvením syntaxe:
$ ccat src/go/hello.go
Volba barvového schématu, zde konkrétně schématu připraveného pro terminály s tmavým pozadím (samotné pozadí se přitom nemění – takovou kontrolu nad terminálem tento nástroj nemá):
$ ccat --bg=dark src/go/hello.go
Obrázek 33: Zobrazení zdrojového souboru s výchozím nastavením barvové palety připravené pro tmavé prostředí terminálu.
Zobrazení barvové palety, která se použije:
$ ccat --palette
Obrázek 34: Zobrazení dostupné barvové palety (ve skutečnosti se mezi „black“ a „blue“ nalézá blikající text „blink“.
Změna jedné barvy z palety za jinou:
$ $ ccat -G String="_darkblue_" -G Plaintext="darkred" src/go/hello.go
Obrázek 35: Zobrazení souboru .bashrc.
15. Převod textu do HTML se zvýrazněním syntaxe
Potenciálně velmi užitečná funkce nástroje ccat spočívá v tom, že namísto zobrazení obsahu souboru s obarveným textem na standardním výstupu se provede převod do HTML, v němž budou použity značky pro změnu barvy textu. Jedná se o podobný postup, který nabízí například skript nazvaný „2html“, který je součástí sady nástrojů pro textový editor Vim. V případě použití nástroje ccat je pouze nutné výstup přesměrovat do nějakého nového souboru „novy.html“ a ten si následně zobrazit v prohlížeči (popř., což je ovšem dost divoká možnost, ho otevřít v textovém procesoru).
Obrázek 36: Obsah souboru se zdrojovým kódem po jeho převedení do HTML stránky a zobrazení ve webovém prohlížeči.
16. Obsah následující části seriálu
Nástroje bat a ccat, s nimiž jsme se dnes alespoň ve stručnosti seznámili, jsou vlastně jen jednoúčelovými utilitami. Jejich plný přínos a možné usnadnění a urychlení práce doceníme až tehdy, pokud jejich možnosti zkombinujeme s dalšími nástroji. Jedním z velmi užitečných nástrojů s mnoha různými způsoby využití je i nástroj nazvaný fzf neboli plným jménem (command line) fuzzy finder. Tato utilita umožňuje nejenom vyhledávat soubory na základě interaktivně zadaných kritérií, ale například pracovat s procesy, proměnnými prostředí (environment variables), je spustitelná a plně integrovatelná do textového editoru Vim a především ji lze velmi snadno propojit s dnes popisovaným projektem bat. Nic nám navíc nebrání ji použít společně s minule zmíněným projektem Go Bullet Train.
17. Odkazy na Internetu
- Repositář projektu bat
https://github.com/sharkdp/bat - bat releases
https://github.com/sharkdp/bat/releases - Alternativy k batu
https://github.com/sharkdp/bat/blob/master/doc/alternatives.md - Ccat
https://github.com/jingweno/ccat - How to colorizing cat command output or files using ccat app on Linux or Unix system
https://www.cyberciti.biz/howto/linux-unix-cat-command-with-colours/ - Repositář projektu fzf
https://github.com/junegunn/fzf - fzf wiki
https://github.com/junegunn/fzf/wiki/examples - Vim universe. fzf – command line fuzzy finder (video)
https://www.youtube.com/watch?v=qgG5Jhi_Els - fzf: Terminal Fuzzy Finder for Linux (video)
https://www.youtube.com/watch?v=vt33Hp-4RXg - Go Bullet Train (GBT)
https://github.com/tisnik/gbt - bullettrain-sh
https://github.com/caiogondim/bullet-train.zsh - An oh-my-zsh shell theme based on the Powerline Vim plugin
https://github.com/caiogondim/bullet-train.zsh - Nerd fonts
https://www.nerdfonts.com/ - nerd-fonts (repositář)
https://github.com/ryanoasis/nerd-fonts - Shell
https://en.wikipedia.org/wiki/Shell_(computing) - Minimalistická a rychlá příkazová řádka pro libovolný shell Starship
https://www.root.cz/zpravicky/minimalisticka-a-rychla-prikazova-radka-pro-libovolny-shell-starship/ - Finally, a command line shell for the 90s
http://fishshell.com/ - Bourne shell
https://en.wikipedia.org/wiki/Bourne_shell - Korn shell
http://www.kornshell.org/ - Prompt Expansion
http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Prompt-Expansion - PS1 prompt explained for Linux/Unix
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/ - Bash $PS1 Generator2.0
https://www.kirsle.net/wizards/ps1.html - BASH Git Prompt
https://github.com/magicmonty/bash-git-prompt - Seznam vybraných Unicode fontů
https://en.wikipedia.org/wiki/Unicode_font#List_of_Unicode_fonts - Unix History
https://www.levenez.com/unix/ - C shell
https://en.wikipedia.org/wiki/C_shell - tput(1) – Linux man page
https://linux.die.net/man/1/tput - fc-list(1) – Linux man page
https://linux.die.net/man/1/fc-list - fc-cache(1) – Linux man page
https://linux.die.net/man/1/fc-cache - fc-query(1) – Linux man page
https://linux.die.net/man/1/fc-query - Unicode character recognition
http://shapecatcher.com/ - Pygments
https://pygments.org/ - GNU Source-highlight 3.1.8
https://www.gnu.org/software/src-highlite/