Code source wiki de ScriptsPerso
Masquer les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
![]() |
1.1 | 1 | {{toc/}} |
| 2 | |||
| 3 | == Présentation == | ||
| 4 | |||
![]() |
5.1 | 5 | Cette section regroupe mes **scripts Bash et outils d’automatisation** développés ou adaptés pour mes besoins personnels. |
![]() |
1.1 | 6 | Ils couvrent des tâches variées : sauvegardes, nettoyage de fichiers, interactions graphiques avec Zenity, organisation de fichiers, etc. |
| 7 | |||
| 8 | ---- | ||
| 9 | |||
| 10 | == Pourquoi écrire ses propres scripts ? == | ||
| 11 | |||
| 12 | Créer ses scripts permet de : | ||
| 13 | |||
| 14 | * **Automatiser les tâches répétitives** : sauvegardes, nettoyages, déploiements… | ||
| 15 | * **Réduire les erreurs humaines** | ||
| 16 | * **Adapter l’environnement à ses habitudes** | ||
| 17 | * **Documenter une procédure sous forme de code** | ||
| 18 | |||
| 19 | Un bon script, c’est une forme de documentation exécutée à la volée. | ||
| 20 | |||
| 21 | ---- | ||
| 22 | |||
| 23 | == Bonnes pratiques à suivre == | ||
| 24 | |||
![]() |
5.1 | 25 | Toujours commencer par le shebang : |
![]() |
1.1 | 26 | |
![]() |
5.1 | 27 | {{code language="bash"}} |
| 28 | #!/bin/bash | ||
| 29 | {{/code}} | ||
![]() |
1.1 | 30 | |
![]() |
5.1 | 31 | Mettre le script en mode strict : |
![]() |
1.1 | 32 | |
![]() |
5.1 | 33 | {{code language="bash"}} |
| 34 | set -euo pipefail | ||
| 35 | IFS=$'\n\t' | ||
| 36 | {{/code}} | ||
![]() |
1.1 | 37 | |
![]() |
5.1 | 38 | Documenter les fonctions : |
| 39 | |||
| 40 | {{code language="bash"}} | ||
| 41 | # Fonction : sauvegarde un répertoire | ||
| 42 | sauvegarde() { | ||
| 43 | rsync -av "$1" "$2" | ||
| 44 | } | ||
| 45 | {{/code}} | ||
| 46 | |||
| 47 | Utiliser ##getopts## pour gérer les options : | ||
| 48 | |||
| 49 | {{code language="bash"}} | ||
| 50 | while getopts ":s:d:" opt; do | ||
| 51 | case $opt in | ||
| 52 | s) source=$OPTARG ;; | ||
| 53 | d) dest=$OPTARG ;; | ||
| 54 | esac | ||
| 55 | done | ||
| 56 | {{/code}} | ||
| 57 | |||
| 58 | Vérifier la syntaxe avant de lancer un script, surtout après modification : | ||
| 59 | |||
| 60 | {{code language="bash"}} | ||
| 61 | bash -n monscript.sh | ||
| 62 | {{/code}} | ||
| 63 | |||
| 64 | {{warning}} | ||
| 65 | Dans une commande écrite sur plusieurs lignes, la barre oblique inverse de fin de ligne ne doit être suivie de rien, pas même d'un espace : sinon la ligne n'est plus continuée, et le script se comporte autrement sans erreur visible. Contrôle : ##cat -A monscript.sh##, la fin de ligne doit afficher ##\$##. | ||
| 66 | {{/warning}} | ||
| 67 | |||
![]() |
1.1 | 68 | ---- |
| 69 | |||
| 70 | == Liste des scripts disponibles == | ||
| 71 | |||
![]() |
5.1 | 72 | === 🔹 [[Sauvegarde automatique>>doc:.Sauvegarde.WebHome]] === |
![]() |
1.1 | 73 | |
![]() |
5.1 | 74 | Un script ##rsync## avec journalisation et gestion via ##cron##. |
| 75 | 📌 //Idéal pour sauvegarder ses documents sans effort.// | ||
![]() |
1.1 | 76 | |
![]() |
5.1 | 77 | === 🔹 [[Nettoyage de système>>doc:.Nettoyage.WebHome]] === |
![]() |
1.1 | 78 | |
![]() |
5.1 | 79 | Un script qui supprime caches, fichiers temporaires, et dépendances orphelines. |
| 80 | 📌 //Parfait pour garder une machine légère et propre.// | ||
![]() |
1.1 | 81 | |
![]() |
5.1 | 82 | === 🔹 [[Intégration Nautilus + Zenity>>doc:.NautilusZenity.WebHome]] === |
![]() |
1.1 | 83 | |
![]() |
5.1 | 84 | Ajoute des actions personnalisées au clic droit dans GNOME, via des boîtes de dialogue interactives. |
| 85 | 📌 //Super pour les utilisateurs moins à l’aise avec la ligne de commande.// | ||
![]() |
1.1 | 86 | |
![]() |
5.1 | 87 | === 🔹 [[Organisation automatique de fichiers>>doc:.Classement.WebHome]] //(à venir)// === |
![]() |
1.1 | 88 | |
| 89 | Trie automatiquement les fichiers dans des dossiers selon leur type, date ou nom. | ||
| 90 | |||
| 91 | ---- | ||
| 92 | |||
| 93 | == Où placer mes scripts ? == | ||
| 94 | |||
![]() |
5.1 | 95 | * Personnel : ##~~/.local/bin/## |
| 96 | * Système : ##/usr/local/bin/## (nécessite ##sudo##) | ||
![]() |
1.1 | 97 | |
![]() |
5.1 | 98 | Ajouter le dossier personnel au ##$PATH##, dans ##~~/.bashrc## : |
![]() |
1.1 | 99 | |
| 100 | {{code language="bash"}} | ||
![]() |
5.1 | 101 | export PATH="$HOME/.local/bin:$PATH" |
![]() |
1.1 | 102 | {{/code}} |
| 103 | |||
![]() |
5.1 | 104 | Et rendre les fichiers exécutables : |
![]() |
1.1 | 105 | |
![]() |
5.1 | 106 | {{code language="bash"}} |
| 107 | chmod +x monscript.sh | ||
| 108 | {{/code}} | ||
| 109 | |||
![]() |
1.1 | 110 | ---- |
| 111 | |||
| 112 | == Bonnes idées de scripts futurs == | ||
| 113 | |||
| 114 | * Archivage automatique d’un dossier par date | ||
![]() |
5.1 | 115 | * Extraction automatique de ##.tar.gz## |
![]() |
1.1 | 116 | * Notification de batterie faible |
| 117 | * Upload automatique vers Nextcloud | ||
| 118 | * Backup de base de données PostgreSQL/MariaDB | ||
| 119 | * Générateur de templates de page XWiki 🎯 | ||
| 120 | |||
| 121 | ---- | ||
| 122 | |||
| 123 | == Liens utiles == | ||
| 124 | |||
![]() |
5.1 | 125 | * [[explainshell.com>>https://explainshell.com/]] — comprendre une commande Bash ligne par ligne |
| 126 | * [[Bash Hackers Wiki>>https://wiki.bash-hackers.org/]] | ||
| 127 | * [[ShellCheck>>https://www.shellcheck.net]] — vérifier ses scripts en ligne | ||
![]() |
1.1 | 128 | |
| 129 | ---- | ||
| 130 | |||
| 131 | == Liens internes == | ||
| 132 | |||
| 133 | * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]] | ||
![]() |
5.1 | 134 | * [[Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]] |
| 135 | |||
| 136 | ---- | ||
| 137 | |||
| 138 | == Toutes les pages == | ||
| 139 | |||
| 140 | {{children/}} |
