logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [10/07/2014 11:38]
Hypathie [Comment créer et exécuter un script ?]
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [13/04/2015 19:41]
milou [Apprendre à rédiger des scripts sous bash]
Ligne 1: Ligne 1:
 ====== Apprendre à rédiger des scripts sous bash====== ====== Apprendre à rédiger des scripts sous bash======
  
 +  * Objet : Apprendre à rédiger des scripts sous bash
   * Niveau requis : {{tag>​débutant}}   * Niveau requis : {{tag>​débutant}}
 +  * Commentaires : FIXME
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>​à-placer}}+  * Suivi : 
     * Création par [[user>​Hypathie]] 18/03/2014     * Création par [[user>​Hypathie]] 18/03/2014
-    * Testé par <​Hypathie> le <Juin 2014>+    * Testé par [[user>Hypathie]] ​le <Juin 2014>
   * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=92203#​p92203|Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))   * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=92203#​p92203|Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
 +
 +
 +------
  
 **Nota : Les autres wiki :** **Nota : Les autres wiki :**
 +  * ;-)
   * [[atelier:​chantier:​script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]]   * [[atelier:​chantier:​script-bash-variables-arguments-parametres|script-bash-variables-arguments-parametres]]
   * [[atelier:​chantier:​script-bash-detail-sur-les-parametres-et-les-boucles|script bash : modification de variable et de paramètre]]   * [[atelier:​chantier:​script-bash-detail-sur-les-parametres-et-les-boucles|script bash : modification de variable et de paramètre]]
   * [[atelier:​chantier:​script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]]   * [[atelier:​chantier:​script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]]
-  * [[atelier:​chantier:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] +  * [[atelier:​chantier:​script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sortie-et-les-tests]] 
-  * [[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]] +  * [[doc:programmation:​bash:script:tableaux|script-bash-les-tableaux]] 
-  * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]]+  * [[doc:programmation:​bash:script:fonction|script-bash-les-fonctions]]
  
 Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Ligne 80: Ligne 86:
 ^ POSIX                                 ^ À éviter : bashisme ​                      ^ ^ POSIX                                 ^ À éviter : bashisme ​                      ^
 | if [ "​$toto"​ ''​=''​ "​$titi"​ ] ; then …  | if [ "​$toto"​ ''​==''​ "​$titi"​ ] ; then …   | | if [ "​$toto"​ ''​=''​ "​$titi"​ ] ; then …  | if [ "​$toto"​ ''​==''​ "​$titi"​ ] ; then …   |
-| diff -u ''​fichier.orig fichier.c'' ​    | diff -u ''​fichier.c{.orig,​}'' ​           |+| diff -u ''​fichier.orig fichier.c'' ​    | diff -u ''​fichier.{orig,​c}'' ​           |
 | mkdir ''/​tototiti /​tototutu'' ​         | mkdir ''/​toto{titi,​tutu}'' ​              | | mkdir ''/​tototiti /​tototutu'' ​         | mkdir ''/​toto{titi,​tutu}'' ​              |
 | ''​funcname()''​ { … }                   | ''​function funcname()''​ { … }            | | ''​funcname()''​ { … }                   | ''​function funcname()''​ { … }            |
Ligne 155: Ligne 161:
 echo -n "​Bonjour les copains" ​ echo -n "​Bonjour les copains" ​
 </​code>​ </​code>​
 +
   * Pour exécuter ce script il suffit d'​inscrire ''​bash nom-du-script''​ dans un terminal.   * Pour exécuter ce script il suffit d'​inscrire ''​bash nom-du-script''​ dans un terminal.
  
Ligne 176: Ligne 183:
 </​code>​ </​code>​
  
->La commande echo est une commande interne du shell ; la commande /bin/echo est une commande à part.\\+>La commande echo est une commande interne du shell ; la commande /bin/echo est une commande à part. 
 **merci [[user>​captnfab]]** 8-) **merci [[user>​captnfab]]** 8-)
 </​note>​ </​note>​
Ligne 209: Ligne 217:
 À voir : [[atelier:​chantier:​la-page-man-bash-les-caracteres-speciaux#​modifier-durablement-la-valeur-de-la-variable-d-environnement-path]] ​ À voir : [[atelier:​chantier:​la-page-man-bash-les-caracteres-speciaux#​modifier-durablement-la-valeur-de-la-variable-d-environnement-path]] ​
  
-  * Il faut pour cela placer le chemin absolu de son script dans le Path+  * Il faut pour cela placer le chemin absolu de son script dans le Path,\\ C'​est-à-dire dans l'un des répertoires ''/​bin'',​ ''/​usr/​bin''​ ou ''/​usr/​local/​bin''​
  
->​C'​est-à-dire dans l'un des répertoires ''/​bin''​''/​usr/​bin''​ ou ''/​usr/​local/​bin''​ +  * mais à notre niveaules scripts que l'on crée sont ceux de l'​utilisateur.\\ On peut donc simplement ​ajouter le chemin du répertoire dans lequel on range ses scripts ​
- +
-  * Les scripts que l'on crée sont ceux de l'​utilisateur +
-On peut donc ajouter le chemin du répertoire dans lequel on range ses scripts ​+
   - en éditant le fichier ''​~/​.bashrc''​ qui est un fichier caché du répertoire courant de l'​utilisateur (son répertoire personnel); ​   - en éditant le fichier ''​~/​.bashrc''​ qui est un fichier caché du répertoire courant de l'​utilisateur (son répertoire personnel); ​
-  - et en y ajoutant ​à la fin la ligne ''​PATH=$PATH":​$HOME/​MesScripts''​.+  - et en y ajoutant, par exemple en dernière ​ligne''​PATH=$PATH":​$HOME/​MesScripts''​. 
 + 
 +===Application===
  
   * Créons un fichier de type répertoire nommé par exemple "​MesScripts"​ :   * Créons un fichier de type répertoire nommé par exemple "​MesScripts"​ :
Ligne 230: Ligne 237:
 </​code>​ </​code>​
  
-  * Pour y ajouter, en dernière ligne : ''​PATH=$PATH":​$HOME/​MesScripts"​ ''​+  * Pour y ajouter, en dernière ligne : ''​PATH=$PATH":​$HOME/​MesScripts"​ ''​
 +<note tip> 
 +Sans éditer, le fichier ''​~/​.bashrc'',​ on peut y ajouter cette ligne en faisant : 
 +<code user> 
 +echo '​PATH=$PATH":​$HOME/​MesScripts"'​ >> ~/.bashrc 
 +</​code>​ 
 +Merci à phlinux pour cette remarque 8-) 
 +</​note>​
  
   * Créons le fichier "​mon-script"​ avec le sha-bang :   * Créons le fichier "​mon-script"​ avec le sha-bang :
Ligne 237: Ligne 251:
 </​code>​ </​code>​
  
-<​code>​ +  * Contenant les lignes : 
-##​!/​bin/​bash + 
-echo "Coucou tout le monde !"+<​code ​bash
 +#​!/​bin/​bash 
 +printf ​"yep coucou!\n"
 </​code>​ </​code>​
->Il s'agit là du contenu du fichier "​mon-script"​. 
  
   * Donnons à "​mon-script"​ les droits d'​exécution :   * Donnons à "​mon-script"​ les droits d'​exécution :
Ligne 249: Ligne 264:
 </​code>​ </​code>​
  
-  * et placer ​"​mon-script"​ dans le répertoire MesScripts (dont le chemin est ajouté au PATH) :+  * et plaçons ​"​mon-script"​ dans le répertoire MesScripts (dont le chemin est ajouté au PATH) :
    
 <code user> <code user>
Ligne 255: Ligne 270:
 </​code>​ </​code>​
  
-  * Relancer ​Bash+  * Il ne reste plus qu'à réinitialiser le shell Bash, en fermant puis en ré-ouvrant son terminal, ou en exécutant l'une de ces deux commandes équivalentes :
 <code user> <code user>
 source ~/.bashrc source ~/.bashrc
 </​code>​ </​code>​
-ou un équivalent :+  ​
 <code user> <code user>
 . ~/.bashrc . ~/.bashrc
 </​code>​ </​code>​
-Et voilà pour exécuter son script, il suffit de tapez dans le terminal le nom de son script !+ 
 +>Et voilà pour exécuter son script, il suffit ​maintenant ​de tapez dans le terminal le nom de son script !
  
 <code user> <code user>
Ligne 270: Ligne 286:
  
 <​code>​ <​code>​
-Coucou tout le monde !+yep coucou!
 </​code>​ </​code>​
  
 <​note>​ <​note>​
-Vous pouvez voir maintenant votre répertoire dans la liste des répertoires du Path.+  * Vous pouvez voir maintenant votre répertoire dans la liste des répertoires du Path.
 Fermez et ré-ouvrez le terminal; puis tapez : Fermez et ré-ouvrez le terminal; puis tapez :
    
Ligne 283: Ligne 299:
 /​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games:/​home/​utilisateur/​MesScripts /​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games:/​home/​utilisateur/​MesScripts
 </​code>​ </​code>​
 +  * Concernant la commande ''​source ~/​.bashrc''​\\(ou son équivalent ''​. ~/​.bashrc''​):​\\ ​ notons que cela ne fonctionne que pour faire prendre en compte un ajout dans le fichier ''​~/​.bashrc''​.\\ Si au contraire, on dé-commente une ligne de ce fichier, il faudra fermer puis ré-ouvrir le terminal pour que le changement soit effectif.
 </​note>​ </​note>​
  
 Pas si difficile que ça ;-) Pas si difficile que ça ;-)
  
-Voyons pour finir la méthode qui vérifie la compatibilité de son script avec la norme POSIX : 
- 
-<​code>​ 
-nano ~/​MesScripts/​mon-script 
-</​code>​ 
-<​code>​ 
-#​!/​bin/​bash ​ 
-set -o posix 
-echo -n "​Bonjour $USER" 
-</​code>​ 
- 
-Le prompt vous dira "​bonjour"​ avec l'​option -n ! 
  
 ====Un petit script pour lancer un script depuis n'​importe où ! ==== ====Un petit script pour lancer un script depuis n'​importe où ! ====
-Pas d'​inquiétude si vous ne comprenez pas tout ; vous en en serez capable après avoir suivi ce wiki et consulté ​ses liens. ;-)+Pas d'​inquiétude si vous ne comprenez pas tout ; vous en en serez capable après avoir suivi les wiki sur les scripts, ​et consulté ​leurs liens. ;-)
 Il faut : Il faut :
   - avoir créé un fichier de type répertoire (ex: MesScripts) ;   - avoir créé un fichier de type répertoire (ex: MesScripts) ;
doc/programmation/shells/debuter-avec-les-scripts-shell-bash.txt · Dernière modification: 20/08/2022 08:35 par paskal

Pied de page des forums

Propulsé par FluxBB