0 Votes

Code source wiki de Scripts perso

Version 6.1 par john le 2026/09/20 20:02

Afficher les derniers auteurs
1 {{toc/}}
2
3 == Présentation ==
4
5 Cette section regroupe mes **scripts Bash et outils d’automatisation** développés ou adaptés pour mes besoins personnels.
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
25 Toujours commencer par le shebang :
26
27 {{code language="bash"}}
28 #!/bin/bash
29 {{/code}}
30
31 Mettre le script en mode strict :
32
33 {{code language="bash"}}
34 set -euo pipefail
35 IFS=$'\n\t'
36 {{/code}}
37
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
68 ----
69
70 == Liste des scripts disponibles ==
71
72 === 🔹 [[Sauvegarde automatique>>doc:.Sauvegarde.WebHome]] ===
73
74 Un script ##rsync## avec journalisation et gestion via ##cron##.
75 📌 //Idéal pour sauvegarder ses documents sans effort.//
76
77 === 🔹 [[Nettoyage de système>>doc:.Nettoyage.WebHome]] ===
78
79 Un script qui supprime caches, fichiers temporaires, et dépendances orphelines.
80 📌 //Parfait pour garder une machine légère et propre.//
81
82 === 🔹 [[Intégration Nautilus + Zenity>>doc:.NautilusZenity.WebHome]] ===
83
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.//
86
87 === 🔹 [[Organisation automatique de fichiers>>doc:.Classement.WebHome]] //(à venir)// ===
88
89 Trie automatiquement les fichiers dans des dossiers selon leur type, date ou nom.
90
91 ----
92
93 == Où placer mes scripts ? ==
94
95 * Personnel : ##~~/.local/bin/##
96 * Système : ##/usr/local/bin/## (nécessite ##sudo##)
97
98 Ajouter le dossier personnel au ##$PATH##, dans ##~~/.bashrc## :
99
100 {{code language="bash"}}
101 export PATH="$HOME/.local/bin:$PATH"
102 {{/code}}
103
104 Et rendre les fichiers exécutables :
105
106 {{code language="bash"}}
107 chmod +x monscript.sh
108 {{/code}}
109
110 ----
111
112 == Bonnes idées de scripts futurs ==
113
114 * Archivage automatique d’un dossier par date
115 * Extraction automatique de ##.tar.gz##
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
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
128
129 ----
130
131 == Liens internes ==
132
133 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]
134 * [[Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]]
135
136 ----
137
138 == Toutes les pages ==
139
140 {{children/}}