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.
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 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.
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.
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.
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 :
# ! /bin/bash
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
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.
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.
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 :
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 !