FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Correction du formatage HTML à l'aide de scripts shell simples

Si vous écrivez souvent du HTML dans un éditeur et que vous le collez ensuite dans WordPress, vous remarquerez que des balises de formatage parfois gênantes (comme les balises ) sont ajoutées. À l'aide de simples scripts shell, vous pouvez nettoyer automatiquement ce formatage HTML inutile avec quelques commandes simples.

Pourquoi utiliser des scripts shell ? Si vous débutez dans la programmation, il vaut mieux commencer petit. Non seulement vous êtes moins susceptible d'abandonner, mais vous aurez l'occasion de vous arrêter et d'apprendre en cours de route. Cela dit, vos premiers programmes peuvent être vraiment utiles même s'ils sont aussi très simples.

Les scripts shell sont un excellent endroit pour commencer à coder pour cette raison précise :il est facile de rassembler quelque chose en quelques lignes de code qui vous fera gagner beaucoup de temps. Jetons un coup d'œil à quelques recettes, ou "modèles", que vous pouvez réutiliser dans vos propres scripts.

Pourquoi les scripts Shell ?

Tout d'abord, commençons par définir le "shell scripting" comme l'écriture de scripts à exécuter dans le shell Bash. Techniquement parlant, d'autres langages de script tels que Powershell pourraient également être appelés "scripts shell". Mais pourquoi se concentrer sur les scripts shell en général, et les scripts Bash en particulier, en premier lieu ?

  • Avec l'introduction du sous-système Windows pour Linux, le shell Bash est désormais compatible avec toutes les principales plates-formes PC. (Il est également inclus sur macOS et à peu près toutes les distributions Linux par défaut.) Il est même disponible sur les téléphones Android avec un Termux, un téléchargement gratuit et open source sur Google Play.
  • Les scripts shell vous permettent de vous concentrer sur les principes fondamentaux de la programmation, car le plus gros du travail est fait pour vous par les commandes que vous incluez. Supposons que vous souhaitiez compresser certains fichiers dans une application de bureau traditionnelle écrite en C. Vous devrez soit écrire un peu de code pour utiliser une bibliothèque de logiciels compatible qui fera le travail, soit écrire beaucoup de code à partir de zéro pour faire réellement la compression. Dans un script shell, tout ce que vous avez à faire est d'exécuter le tar commande sur les fichiers souhaités.
  • Vous pouvez développer par petites étapes, de manière interactive. Pour continuer l'exemple ci-dessus, disons que vous avez décidé d'utiliser tar pour faire votre compression, mais vous ne savez pas encore laquelle de ses options vous voulez. Jouez simplement avec à l'invite jusqu'à ce que vous obteniez le résultat souhaité, puis copiez/collez la commande que vous avez utilisée dans votre script.

Avec ce qui précède à l'esprit, voici quelques idées de scripts shell utiles que vous pouvez assembler avec seulement quelques lignes de code. Nous allons créer quelques scripts pour améliorer les pouvoirs déjà considérables de l'utilitaire de conversion Pandoc.

1. Collecte de longues listes de paramètres

La façon la plus simple et la plus simple d'utiliser un script shell est de le faire comme un raccourci pour une commande existante. Certains programmes en ligne de commande ont une tonne d'indicateurs et leur syntaxe n'est pas toujours claire. Mais vous pouvez prendre l'une de ces commandes, avec toutes ses options compliquées, et les jeter dans un script shell avec un nom plus facile à saisir. Considérez la commande suivante, qui exécute le Pandoc sur un fichier Markdown et crée un fichier ODT à l'aide d'un fichier modèle :

pandoc -r markdown -w odt --reference-odt=/chemin/vers/dossier/contenant/mscript-template.odt -o manuscrit.odt manuscrit.md 

J'utilise Pandoc au quotidien, car je crée tout dans un balisage léger comme Markdown et Asciidoc. Et pourtant, lors de la conversion en ODT, je tape "odt-reference" au lieu de "reference-odt". Tous. Seul. Temps. De plus, le chemin d'accès au modèle ne se complétera pas automatiquement comme la plupart des commandes shell. La création d'un script simple peut éviter toutes ces fautes de frappe :

# ! /bin/bash 
pandoc -r docbook -w odt --reference-odt=/chemin/vers/dossier/contenant/mscript-template.odt -o $1.odt $1

La première ligne du script demande au système d'utiliser le shell Bash pour l'exécuter. Le suivant prend le premier argument de la ligne de commande ($1 ), et exécute Pandoc avec un ensemble d'indicateurs dessus. Il convient de noter qu'il existe d'autres moyens de le faire, comme l'utilisation de l'alias commande sur les systèmes Unix-ish. Mais créer de petits scripts shell signifie que vous pouvez les garder à portée de main (comme dans votre dossier ~/bin), les copier (ou les synchroniser) rapidement ailleurs et les modifier avec n'importe quel éditeur de texte. Enregistrez votre script avec un nom de fichier facile à mémoriser et à taper (par exemple "markdown2odt.sh"). N'oubliez pas de lui donner des autorisations exécutables.

2. Canaliser la sortie pour nettoyer le formatage HTML

La connexion de deux commandes de terminal avec un caractère pipe ("|") entraîne l'utilisation de la sortie de la première comme entrée de la seconde. (Si vous n'avez jamais vu cela auparavant, consultez notre guide rapide sur la ligne de commande.) Mais devoir taper deux commandes dans le bon ordre, avec les bons paramètres, ne fait qu'aggraver le problème dont nous venons de discuter. Envelopper cette double commande dans un script shell la rend encore plus pratique.

Une astuce que j'utilise avec Pandoc consiste à "nettoyer" le formatage HTML ou à supprimer tout style en ligne. Si vous avez déjà essayé d'exporter un document de traitement de texte vers HTML, vous pouvez voir qu'il existe une tonne de styles (span balises) qui sont ajoutées dans et parmi le texte.

Correction du formatage HTML à l aide de scripts shell simples

Le format Docbook XML n'a pas de convention pour les styles en ligne, donc si nous convertissons HTML en DocBook, tout ce formatage est rejeté. Ensuite, nous pouvons utiliser Pandoc pour convertir le DocBook retour en HTML, et nous obtenons un joli balisage que vous pouvez (par exemple) coller dans WordPress. Plutôt que de le faire avec des appels individuels à Pandoc, le script suivant les enchaîne pour :

  1. Convertir le fichier HTML exporté en DocBook, qui n'a pas de styles en ligne (avant le tube)
  2. Reconvertissez le DocBook dans ce qui est maintenant un format HTML agréable et propre (après le tube)
# ! /bin/bash 
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
Correction du formatage HTML à l aide de scripts shell simples

Expliquer les entrées/sorties standard

Ce qui précède tire parti des concepts terminaux d'"entrée standard" et de "sortie standard". Si vous deviez exécuter la première partie de la commande, vous obtiendrez tout un tas de XML affiché dans le terminal. La raison en est que nous n'avons donné à Pandoc aucune autre sortie (telle qu'un fichier) à utiliser. Il utilise donc la seule solution de secours dont il dispose :la sortie standard, dans ce cas le terminal.

D'autre part, le caractère tiret à la fin de la deuxième commande Pandoc signifie qu'il doit utiliser "l'entrée standard". Exécuté par lui-même, vous seriez accueilli par une invite, où le shell attendrait que vous fournissiez du texte via son entrée par défaut, en tapant sur le clavier. Lorsque nous les combinons, vous pouvez presque imaginer que la première commande crache un tas de XML vers le terminal où il est immédiatement redirigé vers la deuxième commande en tant qu'entrée.

Le résultat est que si vous le renommez en "clean-html.sh", vous pouvez l'exécuter sur n'importe quel fichier HTML pour vous débarrasser de ces styles gênants. La meilleure partie est que Pandoc lira le fichier, puis l'écrasera à la fin, ce qui signifie qu'il n'y a pas de fichiers temporaires éparpillés.

3. Exécution de programmes sur plusieurs fichiers HTML

Certains programmes vous permettent de spécifier des caractères génériques comme l'astérisque sur la ligne de commande. Cela vous permet, par exemple, de déplacer toutes les images JPG dans votre dossier "Images" :

mv *.jpg ~/Images 

Mais d'autres programmes ne prennent qu'un seul fichier à la fois en entrée, et Pandoc en fait partie. Que se passe-t-il lorsque nous avons un répertoire complet rempli de fichiers HTML exportés et que nous voulons nettoyer le formatage HTML ? Avons-nous besoin d'exécuter notre script "clean-html.sh" sur chacun d'eux manuellement ?

Non, car nous ne sommes pas des novices. Nous pouvons envelopper notre commande canalisée dans une boucle "for-each". Cela ira à chaque fichier HTML dans le répertoire courant à tour de rôle et effectuera l'opération de nettoyage dessus. Ajoutons aussi un petit message via l'écho déclaration pour nous faire savoir que tous les fichiers ont été pris en charge :

pour le nom de fichier dans ./*.html 
fais
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
echo "Travailler sur $1... HTML est propre !"
terminé

Maintenant, si vous avez un dossier plein de HTML "sale", vous pouvez exécuter ce script dessus et vous retrouver avec un formatage HTML impeccable.

Correction du formatage HTML à l aide de scripts shell simples

Où aller à partir d'ici

Si vous aimez bricoler, vous adorerez les scripts shell, car il y a toujours des ajustements à faire. Voici quelques idées sur la façon d'utiliser ces modèles comme base pour d'autres scripts :

  • Ajout de la prise en charge de la conversion directement à partir du fichier de traitement de texte, puisque Pandoc prend en charge les entrées ODT et DOCX (c'est-à-dire que la chaîne devient ODT/DOCX> DocBook XML> HTML).
  • Combinant les deux nettoyeurs HTML en un seul, de sorte que si un fichier est fourni, il le nettoie, sinon il nettoie automatiquement tout dans le répertoire courant (ajoute traitant des arguments de ligne de commande).
  • Fournir à l'utilisateur des options d'exportation supplémentaires telles que PDF (ajoute des choix basés sur l'entrée, via des instructions if-then ou case).

Comme vous pouvez le voir, avec les scripts shell, vous pouvez construire des choses petit à petit, en les testant à l'invite et en les ajoutant à vos scripts au fur et à mesure.

Qu'en dites-vous, les scripts shell semblent-ils un peu moins intimidants maintenant ? Êtes-vous prêt à vous essayer à l'automatisation de vos tâches les plus ennuyeuses ? Si vous décidez de vous lancer, faites-nous savoir comment cela se passe ci-dessous dans les commentaires !


[]