GNU/Linux >> Tutoriels Linux >  >> Linux

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 des programmes shell à l'aide de Shfmt sous Linux.

1. Présentation

Si vous avez une formation en programmation, vous connaissez peut-être des termes tels que formatage, lint, etc.

Il existe d'importants outils de support 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. Installer Shfmt sous Linux

Shfmt est disponible en tant qu'application instantanée. Si snap est installé sur votre distribution, vous pouvez installer shfmt à l'aide de la commande :

$ sudo snap install shfmt

L'autre façon d'installer Shfmt consiste à utiliser la commande à une ligne suivante :

$ curl -sS https://webinstall.dev/shfmt | bash

Les deux méthodes ci-dessus peuvent être utilisées quelle que soit la distribution que vous utilisez. Il existe quelques distributions où vous pouvez installer shfmt à partir de leurs référentiels de packages.

Pour installer shfmt dans Alpine Linux, exécutez :

$ sudo apk add shfmt

Installez shfmt dans Arch Linux, EndeavourOS et Manjaro Linux :

$ sudo pacman -S shfmt

Installez shfmt dans FreeBSD.

$ sudo pkg install devel/shfmt
$ sudo pkg install shfmt

3. 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 le help pour avoir une idée des options prises en charge par shfmt :

$ shfmt --help

Maintenant, permettez-moi de vous montrer un exemple. J'ai créé un script shell sans formatage approprié.

Jetez un oeil à l'image ci-dessus. Ça a l'air bizarre, non ?

Formatons ce script en utilisant shfmt comme ci-dessous :

$ shfmt dummy.sh

Shfmt commencera à formater le script donné.

Voici la sortie du script ci-dessus avant et après l'optimisation :

À partir de la sortie ci-dessus, vous pouvez voir que notre script est bien formaté.

Vous vous demandez peut-être pourquoi l'indentation est définie sur tabulation . C'est par défaut et modifiable.

3.1. Indentation personnalisée

Je suis toujours les docs de style de script Google Shell et définissez l'indentation sur 2 espaces au lieu d'onglets.

Pour définir une indentation personnalisée, utilisez -i drapeau. Voyons ce que le menu d'aide a à dire à propos de ce -i drapeau :

Toute valeur supérieure à zéro est passée avec -i flag est le nombre d'espaces qui seront utilisés pour l'intention.

$ shfmt -i 2 scriptname.sh

3.2. Sortie de style Diff

Si vous avez besoin d'informations sur ce qui a été exactement formaté, vous pouvez utiliser -d drapeau. Jetez un oeil à l'image ci-dessous, elle montre ce qui est formaté en vert avec + symbole.

3.3. Liste des scripts à formater

Vous pouvez utiliser le -l flag qui obtiendra la liste des scripts qui doivent être formatés.

Pour illustrer 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 le echo relevé des 2e et 3e fichiers.

Maintenant, si je lance la commande shfmt avec le -l flag, il ne devrait choisir que mes deuxièmes fichiers d'échantillon 2 et 3 :

$ shfmt -l sample*.sh
sample2.sh
sample3.sh

3.4. Écrire la sortie dans le 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 -w drapeau.

$ shfmt -w scriptname.sh

3.5. Rechercher des scripts shell dans le chemin

Avec -f flag, shfmt analysera le répertoire donné de manière récursive et trouvera tous les scripts shell.

Peu importe qu'un script porte l'extension .sh ou pas. 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.sh

3.6. Shfmt peut également détecter les erreurs

Shfmt n'est pas seulement destiné au formatage des scripts shell. Il peut également repérer les erreurs dans les scripts.

Jetez un oeil à l'image ci-dessous, où mes accolades pour terminer la fonction sont manquantes et shfmt le repère.

Vous pouvez également utiliser la fonction de vérification de syntaxe intégrée bash en utilisant -n flag qui validera votre code et
liste toutes les erreurs.

$ bash -vn scriptname.sh

3.7. Shfmt dans les é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 avoir un support natif pour formater les scripts bash.

Chaque éditeur de code possède un plugin qui s'intègre à shfmt. Allez sur le dépôt officiel 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 en utilisant Smfmt avec des exemples pratiques. Shfmt sera un outil très utile pour garder vos scripts propres, soignés et organisés. Intégrez les éditeurs de texte et vous disposerez d'un flux de travail très fluide pour créer les scripts.


Linux
  1. Comment installer Python sur Linux

  2. Comment installer Java sur Linux

  3. Comment installer le service SSH (Secure Shell) sur Kali Linux

  4. Comment déboguer des programmes C sous Linux à l'aide de gdb

  5. Comment installer FFmpeg sous Linux

Comment installer le langage Go sous Linux

Comment trouver les détails du système Linux à l'aide d'inxi

Comment installer et utiliser ZSH Shell sous Linux

Comment installer GNOME dans Ubuntu Linux

Comment installer Linux Bash Shell sur Windows 10

Comment installer et utiliser Nu Shell sous Linux