In questa guida discuteremo cos'è Shfmt, come installare Shfmt in Linux e infine come formattare i programmi shell usando Shfmt in Linux.
1. Introduzione
Se provieni da un background di programmazione, potresti conoscere termini come formattazione, linting, ecc.
Ci sono importanti strumenti di supporto forniti con ogni editor di codice per semplificarci la vita mentre codifichiamo.
Allo stesso modo, per gli script di shell, abbiamo shfmt . shfmt viene utilizzato per formattare, analizzare e interpretare gli script della shell. Shfmt supporta le shell Bash, mksh e Posix.
Shfmt è altamente configurabile e può formattare il tuo codice in diversi modi e convenzioni.
Puoi installare e utilizzare lo strumento Shfmt dalla riga di comando per lavorare con gli script della shell. Inoltre sono disponibili plug-in nei più diffusi editor di testo che utilizzeranno shfmt per formattare gli script della shell.
2. Installa Shfmt in Linux
Shfmt è disponibile come applicazione snap. Se la tua distribuzione ha installato snap, puoi installare shfmt usando il comando:
$ sudo snap install shfmt
L'altro modo per installare Shfmt è usare il seguente comando one-liner:
$ curl -sS https://webinstall.dev/shfmt | bash
I due metodi precedenti possono essere utilizzati indipendentemente dalla distribuzione in esecuzione. Ci sono alcune distribuzioni in cui puoi installare shfmt dai loro repository di pacchetti.
Per installare shfmt in Alpine Linux, esegui:
$ sudo apk add shfmt
Installa shfmt in Arch Linux, EndeavourOS e Manjaro Linux:
$ sudo pacman -S shfmt
Installa shfmt in FreeBSD.
$ sudo pkg install devel/shfmt
$ sudo pkg install shfmt
3. Formatta i programmi shell usando Shfmt in Linux
Se è la prima volta che usi Shfmt, inizia eseguendo la help
comando per avere un'idea di quali opzioni supporta shfmt:
$ shfmt --help
Ora permettetemi di mostrarvi un esempio. Ho creato uno script di shell senza una formattazione adeguata.
Dai un'occhiata all'immagine sopra. Sembra strano, vero?
Formattiamo questo script usando shfmt
come di seguito:
$ shfmt dummy.sh
Shfmt inizierà a formattare lo script specificato.
Ecco l'output dello script precedente prima e dopo l'ottimizzazione:
Dall'output sopra, puoi vedere che il nostro script è ben formattato.
Potresti chiederti perché il rientro è impostato su tab . Questo è predefinito e modificabile.
3.1. Rientro personalizzato
Seguo sempre documenti sullo stile degli script della shell di Google e imposta il rientro su 2 spazi invece di schede.
Per impostare il rientro personalizzato usa -i
bandiera. Vediamo cosa ha da dire il menu di aiuto su questo -i
bandiera:
Qualsiasi valore maggiore di zero viene passato con -i
flag è la quantità di spazi che verranno utilizzati per l'intenzione.
$ shfmt -i 2 scriptname.sh
3.2. Output stile Diff
Se hai bisogno di informazioni su cosa è stato esattamente formattato puoi usare -d
bandiera. Dai un'occhiata all'immagine qui sotto, mostra cosa è formattato in verde con +
simbolo.
3.3. Elenca gli script da formattare
Puoi usare -l
flag che otterrà l'elenco degli script che devono essere formattati.
Per dimostrarlo, creerò tre file di script. Ho lasciato il secondo e il terzo script non formattati. E ho dato molto spazio in echo
dichiarazione del 2° e 3° file.
Ora, se eseguo il comando shfmt con -l
flag, dovrebbe selezionare solo il mio secondo file di esempio 2 e 3:
$ shfmt -l sample*.sh sample2.sh sample3.sh
3.4. Scrivi output su file
Per impostazione predefinita, Shfmt scrive l'output dello script formattato su stdout, che è il terminale. Se desideri scrivere l'output in un file, puoi usare -w
bandiera.
$ shfmt -w scriptname.sh
3.5. Trova gli script di shell nel percorso
Con -f
flag, shfmt eseguirà la scansione della directory data in modo ricorsivo e troverà tutti gli script della shell.
Non importa se uno script ha l'estensione .sh
o no. Shfmt può riconoscere tutti gli script di shell anche se non hanno estensioni.
$ 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. Anche Shfmt può rilevare gli errori
Shfmt non serve solo per formattare gli script di shell. Può anche individuare gli errori negli script.
Dai un'occhiata all'immagine qui sotto, dove mancano le parentesi graffe per terminare la funzione e shfmt lo individua.
Puoi anche usare la funzione di controllo della sintassi incorporata in bash usando -n
flag che convaliderà il tuo codice e
elenca tutti gli errori.
$ bash -vn scriptname.sh
3.7. Shfmt in editor esterni
In tempo reale, puoi utilizzare uno qualsiasi degli editor di testo di tua scelta come Vim, Atom, Sublime Text, Vs code, ecc. Alcuni di questi editor di testo potrebbero avere il supporto nativo per formattare gli script bash.
Ogni editor di codice ha un plugin che si integra con shfmt. Vai al repository ufficiale di GitHub (link fornito alla fine) e in fondo alla pagina vedrai l'elenco dei plugin per ogni editor di testo che usa shfmt sotto.
Conclusione
In questa guida abbiamo visto cos'è Shfmt e come formattare i programmi Shell usando Smfmt con esempi pratici. Shfmt sarà uno strumento molto utile per mantenere i tuoi script puliti, ordinati e organizzati. Integra con gli editor di testo e avrai un flusso di lavoro molto fluido nella creazione degli script.