Comment formater des programmes Shell à l'aide de Shfmt sous Linux
Dans ce guide, nous discuterons de ce qu'est Shfmt, comment installer Shfmt sous Linux et enfin comment formater les programmes shell à l'aide de Shfmt sous Linux.
1. Introduction
Si vous avez une formation en programmation, vous connaissez peut-être des termes tels que formatage, peluchage, etc.
Il existe des outils de support importants fournis avec chaque éditeur de code pour nous faciliter la vie pendant que nous codons.
De même, pour les scripts shell, nous avons shfmt. shfmt est utilisé pour formater, analyser et interpréter vos scripts shell. Shfmt prend en charge les shells Bash, mksh et Posix.
Shfmt est hautement configurable et peut formater votre code de plusieurs manières et conventions.
Vous pouvez installer et utiliser l'outil Shfmt à partir de la ligne de commande pour travailler avec vos scripts shell. Il existe également des plugins disponibles dans les éditeurs de texte populaires qui utiliseront shfmt pour formater vos scripts shell.
2. Installez Shfmt sous Linux
Shfmt est disponible sous forme d'application instantanée. Si votre distribution a installé Snap, vous pouvez installer shfmt à l'aide de la commande :
sudo snap install shfmtUne autre façon d'installer Shfmt consiste à utiliser la commande suivante :
curl -sS https://webinstall.dev/shfmt | bashLes deux méthodes ci-dessus peuvent être utilisées quelle que soit la distribution que vous utilisez. Il existe quelques distributions sur lesquelles vous pouvez installer shfmt à partir de leurs référentiels de packages.
Pour installer shfmt dans Alpine Linux, exécutez :
sudo apk add shfmtInstallez shfmt dans Arch Linux, EndeavourOS et Manjaro Linux :
sudo pacman -S shfmtInstallez shfmt dans FreeBSD.
sudo pkg install devel/shfmtsudo pkg install shfmt3. Formater les programmes shell à l'aide de Shfmt sous Linux
Si c'est la première fois que vous utilisez Shfmt, commencez par exécuter la commande help pour avoir une idée des options prises en charge par shfmt :
shfmt --helpMaintenant, permettez-moi de vous montrer un exemple. J'ai créé un script shell sans formatage approprié.
Exemple de script
Jetez un œil à l’image ci-dessus. Ça a l'air bizarre, non ?
Formatons ce script en utilisant shfmt comme ci-dessous :
shfmt dummy.shShfmt commencera à formater le script donné.
Voici le résultat du script ci-dessus avant et après l'optimisation :
Formater les programmes shell à l'aide de shfmt
À partir du résultat ci-dessus, vous pouvez voir que notre script est bien formaté.
Vous vous demandez peut-être pourquoi l'indentation est définie sur tabulation. Ceci est par défaut et modifiable.
3.1. Indentation personnalisée
Je suis toujours les docs de style de script shell Google et je définis l'indentation sur 2 espaces au lieu de tabulations.
Pour définir une indentation personnalisée, utilisez l'indicateur -i. Voyons ce que le menu d'aide a à dire à propos de cet indicateur -i :
Indentation personnalisée à l'aide de shfmt
Toute valeur supérieure à zéro est passée avec l'indicateur -i qui correspond à la quantité d'espaces qui seront utilisés pour l'intention.
shfmt -i 2 scriptname.shDéfinir l'indentation à l'aide de shfmt
3.2. Sortie de style différent
Si vous avez besoin d'informations sur ce qui a été formaté exactement, vous pouvez utiliser l'indicateur -d. Jetez un œil à l'image ci-dessous, elle montre ce qui est formaté en vert avec le symbole +.
Sortie de style différent
3.3. Liste des scripts à formater
Vous pouvez utiliser l'indicateur -l qui obtiendra la liste des scripts qui doivent être formatés.
Pour démontrer cela, je vais créer trois fichiers de script. J'ai laissé les deuxième et troisième scripts non formatés. Et j'ai donné beaucoup d'espace dans l'instruction echo des 2ème et 3ème fichiers.
Scripts d'entrée
Maintenant, si j'exécute la commande shfmt avec l'indicateur -l, elle devrait sélectionner uniquement mes deuxièmes exemples de fichiers 2 et 3 :
$ shfmt -l sample*.sh
sample2.sh
sample3.shListe des scripts à formater
3.4. Écrire la sortie dans un fichier
Par défaut, Shfmt écrit la sortie du script formaté sur stdout, qui est le terminal. Si vous souhaitez écrire la sortie dans un fichier, vous pouvez utiliser l'indicateur -w.
shfmt -w scriptname.sh3.5. Rechercher des scripts shell dans le chemin
Avec l'indicateur -f, shfmt analysera le répertoire donné de manière récursive et trouvera tous les scripts shell.
Peu importe qu'un script ait ou non l'extension .sh. Shfmt peut reconnaître tous les scripts shell même s'ils n'ont pas d'extensions.
$ shfmt -f /home/ostechnix
/home/ostechnix/.config/envman/load.sh
/home/ostechnix/.local/bin/webi
/home/ostechnix/Downloads/sampleshell
/home/ostechnix/dummy.sh3.6. Shfmt peut également détecter les erreurs
Shfmt ne sert pas uniquement au formatage des scripts shell. Il peut également détecter les erreurs dans les scripts.
Jetez un œil à l'image ci-dessous, où mes accolades pour terminer la fonction sont manquantes et shfmt la repère.
Shfmt peut détecter les erreurs de syntaxe dans les scripts
Vous pouvez également utiliser la fonction de vérification de syntaxe intégrée de bash en utilisant l'indicateur -n qui validera votre code et
listera toutes les erreurs.
bash -vn scriptname.sh3.7. Shfmt dans des éditeurs externes
En temps réel, vous pouvez utiliser n'importe lequel des éditeurs de texte de votre choix, tels que Vim, Atom, Sublime Text, Vs code, etc. Certains de ces éditeurs de texte peuvent prendre en charge nativement le formatage des scripts bash.
Chaque éditeur de code dispose d'un plugin qui s'intègre à shfmt. Allez sur le dépôt officiel de GitHub (lien donné à la fin) et en bas de la page, vous verrez la liste des plugins pour chaque éditeur de texte qui utilise shfmt en dessous.
Conclusion
Dans ce guide, nous avons vu ce qu'est Shfmt et comment formater des programmes Shell à l'aide de Smfmt avec des exemples pratiques. Shfmt sera un outil très utile pour garder vos scripts propres, soignés et organisés. Intégrez-le aux éditeurs de texte et vous disposerez d'un flux de travail très fluide pour créer les scripts.
Ressource :
- Dépôt GitHub Shfmt
Lecture connexe :
- ShellCheck - Un utilitaire gratuit pour rechercher des bogues dans vos scripts Shell
- Correction de « Erreur de format d'exécution » lors de l'exécution de scripts avec la commande run-parts
- Comment exécuter tous les scripts d'un répertoire sous Linux
- Comment analyser et imprimer joliment du JSON avec les outils de ligne de commande Linux
Image sélectionnée de Pixabay.







