V této příručce budeme diskutovat o tom, co je Shfmt, jak nainstalovat Shfmt v Linuxu a nakonec jak formátovat programy shellu pomocí Shfmt v Linuxu.
1. Úvod
Pokud jste z programátorského prostředí, možná znáte pojmy jako formátování, linting atd.
Každý editor kódu obsahuje důležité podpůrné nástroje, které nám usnadňují život při kódování.
Podobně pro shellové skripty máme shfmt . shfmt se používá k formátování, analýze a interpretaci vašich shell skriptů. Shfmt podporuje shelly Bash, mksh a Posix.
Shfmt je vysoce konfigurovatelný a může formátovat váš kód několika způsoby a konvencemi.
Můžete nainstalovat a používat nástroj Shfmt z příkazového řádku pro práci se skripty shellu. V populárních textových editorech jsou také dostupné pluginy, které budou používat shfmt k formátování vašich shell skriptů.
2. Nainstalujte Shfmt v Linuxu
Shfmt je k dispozici jako aplikace snap. Pokud má vaše distribuce nainstalovaný snap, můžete nainstalovat shfmt pomocí příkazu:
$ sudo snap install shfmt
Dalším způsobem instalace Shfmt je použití následujícího jednořádkového příkazu:
$ curl -sS https://webinstall.dev/shfmt | bash
Výše uvedené dvě metody lze použít bez ohledu na to, jakou distribuci provozujete. Existuje několik distribucí, kde můžete nainstalovat shfmt z jejich repozitářů balíčků.
Chcete-li nainstalovat shfmt v Alpine Linux, spusťte:
$ sudo apk add shfmt
Nainstalujte shfmt v Arch Linux, EndeavourOS a Manjaro Linux:
$ sudo pacman -S shfmt
Nainstalujte shfmt do FreeBSD.
$ sudo pkg install devel/shfmt
$ sudo pkg install shfmt
3. Formátujte programy shellu pomocí Shfmt v Linuxu
Pokud používáte Shfmt poprvé, začněte spuštěním help
příkaz, abyste získali představu o tom, jaké možnosti shfmt podporuje:
$ shfmt --help
Nyní mi dovolte ukázat vám příklad. Vytvořil jsem skript shellu bez správného formátování.

Podívejte se na obrázek výše. Vypadá to divně, že?
Naformátujme tento skript pomocí shfmt
jako níže:
$ shfmt dummy.sh
Shfmt začne formátovat daný skript.
Zde je výstup výše uvedeného skriptu před a po optimalizaci:

Z výše uvedeného výstupu můžete vidět, že náš skript je pěkně naformátovaný.
Možná se divíte, proč je odsazení nastaveno na tabulátor . Toto je výchozí a lze jej upravit.
3.1. Vlastní odsazení
Vždy se řídím dokumenty ve stylu skriptu google shell a nastavte odsazení na 2 mezery místo karet.
Chcete-li nastavit vlastní odsazení, použijte -i
vlajka. Podívejme se, co o tomto -i
říká nabídka nápovědy příznak:

Jakákoli hodnota větší než nula je předána pomocí -i
příznak je množství mezer, které budou použity k zamýšlení.
$ shfmt -i 2 scriptname.sh

3.2. Výstup ve stylu rozdílu
Pokud potřebujete informace o tom, co přesně bylo naformátováno, můžete použít -d
vlajka. Podívejte se na obrázek níže, ukazuje, co je naformátováno zelenou barvou s +
symbol.

3.3. Seznam skriptů k formátování
Můžete použít -l
příznak, který získá seznam skriptů, které je třeba naformátovat.
Abych to demonstroval, vytvořím tři soubory skriptu. Druhý a třetí skript jsem nechal bez formátování. A dal jsem hodně prostoru v echo
výpis 2. a 3. souboru.

Nyní, když spustím příkaz shfmt s -l
flag, měl by vybrat pouze můj druhý vzorek 2 a 3:
$ shfmt -l sample*.sh sample2.sh sample3.sh

3.4. Zapsat výstup do souboru
Ve výchozím nastavení Shfmt zapisuje výstup formátovaného skriptu do stdout, což je terminál. Pokud chcete výstup zapsat do souboru, můžete použít -w
vlajka.
$ shfmt -w scriptname.sh
3.5. Najděte skripty shellu v cestě
Pomocí -f
flag, shfmt prohledá daný adresář rekurzivně a najde všechny skripty shellu.
Nezáleží na tom, zda má skript příponu .sh
nebo ne. Shfmt dokáže rozpoznat všechny skripty shellu, i když nemají rozšíření.
$ shfmt -f /home/ostechnix /home/ostechnix/.config/envman/load.sh /home/ostechnix/.local/bin/webi /home/ostechnix/Downloads/sampleshell /home/ostechnix/dummy.sh
3.6. Shfmt také dokáže detekovat chyby
Shfmt není jen pro formátování shell skriptů. Dokáže také odhalit chyby ve skriptech.
Podívejte se na obrázek níže, kde moje složené závorky pro ukončení funkce chybí a shfmt to zaznamená.

Můžete také použít vestavěnou funkci kontroly syntaxe bash pomocí -n
příznak, který ověří váš kód a
seznam všech chyb.
$ bash -vn scriptname.sh
3.7. Shfmt v externích editorech
V reálném čase můžete používat libovolný textový editor dle vašeho výběru, jako je Vim, Atom, Sublime Text, Vs kód atd. Některé z těchto textových editorů mohou mít nativní podporu pro formátování bash skriptů.
Každý editor kódu má plugin, který se integruje s shfmt. Přejděte do oficiálního úložiště GitHub (odkaz je uveden na konci) a ve spodní části stránky uvidíte seznam pluginů pro každý textový editor, který používá shfmt.
Závěr
V této příručce jsme s praktickými příklady viděli, co je Shfmt a jak formátovat programy Shell pomocí Smfmt. Shfmt bude velmi užitečným nástrojem, který udrží vaše skripty čisté, úhledné a organizované. Integrujte se s textovými editory a budete mít velmi hladký pracovní postup při vytváření skriptů.