👩‍🔬 En mars, soulignons le mois de l'histoire des femmes 🙋‍♀️

Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Automatiser des tâches récurrentes avec Bash

1,091 mots - Temps de lecture estimé: 6 minutes

Je préfère utiliser Bash pour automatiser des tâches à effectuer de façon récurrente.

Pour identifier les tâches candidates, j'ai une règle bien simple. Si tu es capable de le faire en écoutant un podcast, c'est automatisable !

En automatisant certaines tâches, tu libères du temps pour effectuer celles qui nécessitent de la réflexion ou des interactions sociales, ou encore pour prendre du temps pour toi !

🌘 Utiliser le langage de ligne de commande Bash pour automatiser

Bash est un langage de programmation de type shell disponible sur les environnements de la famille Unix. On utilise ce langage de script principalement sur les systèmes d'exploitation GNU/Linux et macOS.

Il est également possible d'installer le Windows Subsystem for Linux (WSL2) sur Windows, ce qui me permet d'accéder à une multitude de logiciels créés pour GNU/Linux, dont Bash, à travers le terminal de Windows.

digraph ActionsBash {
    node[shape=oval, style=filled, fillcolor="#c9e4ca", color="black"];
    title[label="Actions Bash", shape=box, style=filled, fillcolor="#f7f2d5"];

    A[label="Lancer un programme"]
    B[label="Manipuler des fichiers"]
    C[label="Utiliser les tubes"]
    D[label="Exécuter des boucles"]

    title -> A [dir=forward]
    title -> B [dir=forward]
    title -> C [dir=forward]
    title -> D [dir=forward]
}

Voici quelques-uns des usages fréquents de Bash:

Maintenant, je vais aller plus en détail sur chacune d'elles avec des exemples !

🌘 Appeler des logiciels

Les systèmes de type Unix, tels que Linux et macOS, sont composés d'un ensemble de logiciels qui fonctionnent à peu près indépendamment. Le langage Bash te permet d'interagir avec eux. Il te permet entre autres de créer des séquences de tâches exécutées les unes après les autres en suivant des conditions spécifiques.

Bref, c'est un moyen pour ton ordinateur de travailler à ta place ! Une grosse partie du travail de développement en informatique c'est de faire travailler l'ordinateur pour nous.

🌘 Manipuler des fichiers

Au lieu d'utiliser des fichiers binaires comme ceux produits par les suites bureautiques telles que Microsoft Office, les environnements en ligne de commande préfèrent le format texte.

Souvent, les logiciels destinés à la ligne de commande sont conçus pour s'interfacer de manière très simple en recevant du texte, généralement issu d'un fichier, et en retournant du texte dans un autre fichier.

Dans les autres cas, les données circulent entre programmes soit via des tubes, soit par l'intermédiaire de la sortie standard, ce qui est affiché à l'écran.

Tu peux souvent manipuler des fichiers de cette manière. Par exemple, fusionner des fichiers PDF en un seul document. Le logiciel pdftk permet d'arriver à ce résultat.

pdftk document1.pdf document2.pdf document3.pdf cat output merged_document.pdf

En passant, le lien pointe sur Framalibre, qui est un répertoire génial d'applications libres, toutes en français !

🌘 Utiliser les tubes (ou pipes)

Les tubes permettent d'utiliser la sortie d'un programme directement dans l'entrée d'un autre programme, sans devoir écrire un fichier. Ils sont représentés par la barre verticale |.

Un exemple fréquent que je utilise est pour effectuer la recherche de fichiers.

Le logiciel le plus courant sur GNU/Linux qui permet de lister tous les fichiers d'un répertoire se nomme find. Il peut répondre à certaines conditions, par exemple une extension de fichier précise comme .pdf pour les fichiers PDF.

Si je veux filtrer plus précisément cette liste de fichiers avec d'autres attributs, je vais utiliser le logiciel grep. Ce dernier recourt à une expression régulière, une syntaxe fréquemment utilisée dans la recherche de texte.

🌘 Exécuter des boucles

Les boucles permettent de contrôler l'exécution répétée du code.

Généralement, il s'agit d'une section d'un programme qui effectue une seule, ou ça le devrait ! Celles-ci permettent de répéter des tâches identiques ou très similaires pour de multiples valeurs en entrée.

Par exemple, si je veux produire un rapport chaque jour de la semaine, les boucles peuvent m'aider à y arriver. L'élément de code qui permet de répéter du code un nombre déterminé de fois est nommé for.

Il existe aussi les boucles while et until qui sont basées sur une condition. On va les utiliser lorsqu'on ne connait pas le nombre de répétitions à l'avance.

Je peux utiliser ces boucles pour effectuer des tâches spécifiques, comme par exemple la manipulation de fichiers ou la collecte d'informations.

🌘

🌘 Un exemple pratique : automatisation de création de documents avec Bash

je te partage ici un usage fréquent du langage Bash pour automatiser ma création de documents.

Pour créer un guide, je vais utiliser les langages Markdown et LaTeX, deux systèmes de conception de documents.

On utilise Markdown pour du texte léger, tel que des blogues et de la documentation. On utilise LaTeX davantage pour la création de documents scientifiques ou officiels.

Comme j'ai souvent besoin de convertir d'un à l'autre, puis en PDF pour la publication, je vais écrire un script Bash et utiliser les logiciels Pandoc et pdflatex pour automatiser cette tâche.

Conseil important : Pandoc est sérieusement à considérer pour les créatrices et créateurs de contenu, il permet de produire ses textes avec la syntaxe Markdown, puis de publier sous une multitude de formats. Je vous recommande fortement d'y jeter un oeil.

Supposons que je divise mon guide en 3 sections, chacune va contenir 4 chapitres distincts.

Pour chaque section et chaque chapitre, il y a un fichier Markdown que je souhaite convertir vers le format LaTeX. J'aurai donc besoin de répéter ce processus pour chaque section (soit 3 fois) et pour chaque chapitre (soit 4 fois). Je vais donc exécuter le code 12 fois.

Ensuite, j'utiliserai le logiciel pdflatex pour générer un document PDF en incluant les 12 sections produites à l'étape précédente.

Si tu veux aller plus loin dans la création de documents, je t'invite à regarder ma fabrique à documents, parce que je l'ai construite sur le même principe, mais avec le langage Python au lieu de Bash, comme c'est une application web.

mkdir -p ./chapitres

for section in {1..3}
do
    for chapitre in {1..4}
    do
        pandoc -F pandoc-minted \
            -f markdown+fenced_code_attributes+tex_math_dollars \
            -t latex \
            --listings \
            --top-level-division=chapter \
            -i "chapitre_${section}_${chapitre}.md" \
            -o "./chapitres/chapitre_${section}_${chapitre}.tex"
    done
done

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode main.tex
Abonne-toi au flux RSS pour ne rien manquer.

Étiquettes