111 lines
4.3 KiB
Markdown
111 lines
4.3 KiB
Markdown
|
### 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"
|
||
|
```
|