guide-preparation-vacances/overflow/overflow.md

111 lines
4.3 KiB
Markdown
Raw Normal View History

### L'appel de logiciels
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
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 !
### Les tubes
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`
### cron sur Linux et macOS
Il est aussi possible de mettre le script à exécuter dans un des 4 répertoires suivants
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
```
Le comportement par défaut est d'exécuter le script à chaque minute. Ensuite, si on veut réduire la fréquence, on spécifie à quel moment exécuter le script.
### Planificateur de tâches sur Windows
Une fois la commande exécutée, nous obtenons cette réponse:
```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
TaskPath TaskName State
-------- -------- -----
\ cocktail-aleatoire Ready
```
### Tester avant d'exécuter
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
rsync -av \
--dry-run \
--progress \
--delete \
/source/mondossier \
/destination/mondossier
```
### Fin de l'exécution
Lorsque la commande est terminée, ça va produire un sommaire comme suit:
```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
sent 391,414,597 bytes received 16,270 bytes 46,050,690.24 bytes/sec
total size is 391,253,238 speedup is 1.00
```
Afin de valider que la sauvegarde est bien réussie, il suffit d'exécuter à nouveau la commande. Si aucun fichier n'est synchronisé, alors c'est le cas !
## Sur Windows
Voici le code pour installer cette extension
```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
Install-Module PSWindowsUpdate
```
Une fois installée,
Nous allons configurer les mises à jour pour qu'elles s'installent chaque jour à 2h du matin.
```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
$action = New-ScheduledTaskAction -Execute 'Get-WindowsUpdate -AcceptAll -Install -AutoReboot'
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "mise-a-jour-nocturne"
```