version avec contenu complété mais non corrigé
This commit is contained in:
parent
8fe69cfebf
commit
a3f7e35b26
22 changed files with 341 additions and 176 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Utiliser le langage de ligne de commande Bash
|
||||
|
||||
Mon outil préféré pour scripter des tâches que j'ai à effectuer de façon récurrente est Bash. C'est un langage de script qui est principalement utilisé sur les systèmes d'exploitation GNU/Linux et macOS.
|
||||
Mon outil préféré pour scripter des tâches que j'ai à effectuer de façon récurrente est [Bash](https://fr.wikipedia.org/wiki/Bourne-Again_shell). C'est un langage de script qui est principalement utilisé sur les systèmes d'exploitation GNU/Linux et macOS.
|
||||
|
||||
Il est aussi possible d'installer [MSYS2](https://www.msys2.org/) sur Windows pour obtenir accès à une multitude de logiciels créés initialement pour GNU/Linux, dont Bash.
|
||||
|
||||
|
@ -21,40 +21,13 @@ Le langage de script Bash permet d'interagir avec tous les logiciels présents s
|
|||
|
||||
Un exemple d'appel de logiciels que j'utilise souvent, c'est un court programme qui est écrit dans le langage Ruby qui permet de convertir récursivement en minuscules des noms des répertoires et des fichiers. Il est très utile pour s'assurer que les fichiers musicaux que je souhaite mettre sur mon téléphone Android soient bien reconnus.
|
||||
|
||||
Il peut être appelé depuis Bash comme suit:
|
||||
|
||||
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
|
||||
mon_code="Dir['*'].each { |p| File.rename(p, p.downcase) }"
|
||||
ruby -e ${mon_code}
|
||||
```
|
||||
|
||||
- Le script Bash écrit la chaîne de caractère qui contient le code Ruby dans la variable `mon_code`.
|
||||
- Ensuite, il envoie le contenu de `mon_code` à l'interpréteur du langage Ruby
|
||||
|
||||
### La manipulation de fichiers
|
||||
|
||||
Au lieu d'utiliser des fichiers complexes tels que ceux produits par les suites bureautiques tel que Microsoft Office, les environnements en ligne de commande préfèrent les fichiers simples au format texte. Ils excellent dans la manipulation de ceux-ci.
|
||||
|
||||
Souvent, les logiciels conçus pour la ligne de commande ont une interface très simple: ils reçoivent du texte, souvent par l'intermédiaire d'un fichier, et vont retourner du texte, souvent aussi dans un fichier. Dans les autres cas, le texte va voyager d'un programme à l'autre via les tubes.
|
||||
|
||||
Un exemple fréquent de manipulation de fichiers est la concaténation de fichiers pdf. On veut fusionner plusieurs fichiers ensemble en un seul document. Le logiciel pdftk permet de faire cette opération comme suit:
|
||||
|
||||
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
|
||||
pdftk \
|
||||
page_couverture.pdf \
|
||||
table_matieres.pdf \
|
||||
chapitre_1.pdf \
|
||||
chapitre_2.pdf \
|
||||
conclusion.pdf \
|
||||
cat output mon_ebook.pdf
|
||||
```
|
||||
|
||||
- On lance le logiciel `pdftk`
|
||||
- Ensuite, on énumère dans l'ordre tous les fichiers à concaténer
|
||||
- On spécifie l'action. Le mot `cat` est souvent utilisé pour la concaténation.
|
||||
- On spécifie le fichier de sortie après `output`. Ici, c'est `mon_ebook.pdf`
|
||||
|
||||
Petite note: la barre oblique `\` c'est pour couper les lignes pour les rendre plus faciles à lire !
|
||||
Un exemple fréquent de manipulation de fichiers est la concaténation de fichiers pdf. On veut fusionner plusieurs fichiers ensemble en un seul document. Le logiciel pdftk permet de faire cette opération.
|
||||
|
||||
### Les tubes
|
||||
|
||||
|
@ -62,20 +35,9 @@ Les tubes permettent d'utiliser la sortie d'un programme directement dans l'entr
|
|||
|
||||
Un exemple fréquent que j'utilise est pour effectuer la recherche de fichiers.
|
||||
|
||||
Le logiciel le plus courant sur GNU/Linux qui permet de listes tous les fichiers d'un répertoire se nomme `find`. Sa tâche est de listes tous les fichiers qui répondent à certaines conditions, par exemple une extension 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 utilise le logiciel grep qui filtre le texte qu'on lui fournis en entrée selon une expression régulière, qui est une syntaxe fréquemment utilisée dans la recherche de texte.
|
||||
Le logiciel le plus courant sur GNU/Linux qui permet de listes tous les fichiers d'un répertoire se nomme `find`. Sa tâche est de listes tous les fichiers qui répondent à certaines conditions, par exemple une extension précise comme `.pdf` pour les fichiers PDF.
|
||||
|
||||
Par exemple, si je veux trouver tous les livres sur le logiciel Spark qui se trouvent dans ma bibliothèque Nextcloud, la commande Bash correspondante prend la forme suivante:
|
||||
|
||||
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
|
||||
find "nextcloud/Livres" -type f | \
|
||||
grep -i "voyage|travel"
|
||||
```
|
||||
|
||||
- Le premier argument de find est le répertoire de recherche, ici c'est `nextcloud/Livres/Technical`.
|
||||
- Le premier paramètre est `type`, avec comme valeur `f`, pour rechercher uniquement les fichiers.
|
||||
- Ensuite, il y a un tube vers la commande `grep`
|
||||
- `grep` a un paramètre, `-i` qui spécifie que ce qui suit n'est pas sensible à la casse (an anglais *case insentitive*)
|
||||
- Enfin, il y a l'expression de recherche `voyage|travel` qui va retourner tous les noms de fichiers qui contiennent soit le mot `voyage`, soit le mot `travel`
|
||||
Si je veux filtrer plus précisément cette liste de fichiers avec d'autres attributs, je vais utilise le logiciel `grep` qui filtre le texte qu'on lui fournis en entrée selon une **expression régulière**, qui est une syntaxe fréquemment utilisée dans la recherche de texte.
|
||||
|
||||
### Les boucles
|
||||
|
||||
|
@ -90,25 +52,17 @@ Ce guide comprend 3 sections composées chacunes de 4 chapitres. Pour chaque cha
|
|||
Ensuite, j'utilise le logiciel `pdflatex` pour créer le document PDF que vous êtes actuellement en train de feuilleter.
|
||||
|
||||
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
|
||||
#!/bin/bash
|
||||
mkdir -p ./chapitres
|
||||
|
||||
for section in {1..3}
|
||||
do
|
||||
for chapitre in {1..4}
|
||||
do
|
||||
pandoc \
|
||||
-f markdown \
|
||||
-t latex \
|
||||
--listings \
|
||||
--top-level-division=chapter \
|
||||
-i chapitre_${section}_${chapitre}.md \
|
||||
-o ../chapitres/chapitre_${section}_${chapitre}.tex
|
||||
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
|
||||
|
||||
cd ../ # je change de repertoire, les fichiers pour LaTeX sont un niveau plus haut dans mon dossier de travail !
|
||||
pdflatex -synctex=1 -interaction=nonstopmode main.tex
|
||||
cd markdown # je reviens au repertoire d'origine
|
||||
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode main.tex
|
||||
```
|
||||
|
||||
Note: [Pandoc](https://pandoc.org/) est un logiciel vraiment utile pour les créateurs de contenu, il permet de tout faire en Markdown (qui est facile à maîtriser), puis de publier sous une multitude de formats. Je vous conseille fortement d'y jeter un oeil.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue