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 [15/10/2015 17:44]
milou atelier:chantier:debuter-avec-les-scripts-shell-bash renommé en doc:programmation:shells:debuter-avec-les-scripts-shell-bash (Page taguée à placer, sortie du chantier)
Ligne 1: Ligne 1:
 ====== Apprendre à rédiger des scripts sous bash====== ====== Apprendre à rédiger des scripts sous bash======
  
-  * Niveau requis : {{tag>​débutant}}+  ​* Objet : Apprendre à rédiger des scripts sous bash 
 +  ​* Niveau requis : {{tag>​débutant ​avisé}} 
 +  * 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 !))
 +
 +
 +Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
 +------
  
 **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 ! 
  
 ===== Introduction : éviter les bashismes===== ===== Introduction : éviter les bashismes=====
Ligne 24: Ligne 31:
   * [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
   * [[doc:​programmation:​shell:​shell|Le shell pour tous]]   * [[doc:​programmation:​shell:​shell|Le shell pour tous]]
-  * [[atelier:chantier:​bash-les-differents-caracteres-speciaux|Bash : Introduction]]+  * [[doc:programmation:​shells:​bash-les-differents-caracteres-speciaux|Bash : Introduction]]
  
   * pour s'​exercer sur la question de chemin relatif et absolu : [[doc:​programmation:​shell:​illustration-navigation-shell]]   * pour s'​exercer sur la question de chemin relatif et absolu : [[doc:​programmation:​shell:​illustration-navigation-shell]]
-  * un résumé : [[atelier:chantier:​la-page-man-bash-les-caracteres-speciaux#​les-caracteres-symboliques|caractères symboliques]]+  * un résumé : [[docs:programmation:​shells:​la-page-man-bash-les-caracteres-speciaux#​les-caracteres-symboliques|caractères symboliques]]
  
  
Ligne 50: Ligne 57:
 Pour décortiquer les bashismes : http://​rgeissert.blogspot.fr/​search/​label/​bashisms **Merci [[user>​captnfab]]** ^_^)) est un standard :  Pour décortiquer les bashismes : http://​rgeissert.blogspot.fr/​search/​label/​bashisms **Merci [[user>​captnfab]]** ^_^)) est un standard : 
 Utiliser ''#​!/​bin/​sh''​ permet de tenir compte du standard sh de POSIX.\\ ​ Utiliser ''#​!/​bin/​sh''​ permet de tenir compte du standard sh de POSIX.\\ ​
 +
 Voici un PDF assez complet pour apprendre à utiliser le shell sh : http://​igm.univ-mlv.fr/​~masson/​Teaching/​PIM-INF3/​shell.pdf\\ Voici un PDF assez complet pour apprendre à utiliser le shell sh : http://​igm.univ-mlv.fr/​~masson/​Teaching/​PIM-INF3/​shell.pdf\\
  
Ligne 80: Ligne 88:
 ^ 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 106: Ligne 114:
 </​code>​ </​code>​
  
-  ​Coucou+<file config retour de la commande>​Coucou</​file>​
  
   * Pour aller plus loin :   * Pour aller plus loin :
Ligne 132: Ligne 140:
 </​code>​ </​code>​
 Si l'on a exécuté cette commande à l'​ouverture de son terminal, le fichier "​mon-script"​ est alors placé dans son répertoire courant.\\ ​ Si l'on a exécuté cette commande à l'​ouverture de son terminal, le fichier "​mon-script"​ est alors placé dans son répertoire courant.\\ ​
-Et oui une script est un simple fichier texte dont le contenu (une suite de commandes et d'​instruction) est exécutable. :-D +Et oui un script est un simple fichier texte dont le contenu (une suite de commandes et d'​instruction) est exécutable. :-D 
        
   * Puis donnons à ce fichier les droits d'​exécution :\\    * Puis donnons à ce fichier les droits d'​exécution :\\ 
Ligne 155: Ligne 163:
 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 ​dans un terminal. 
 +<​code>​bash nom-du-script</​code>​
  
 >Comme on le fait pour une commande. >Comme on le fait pour une commande.
Ligne 166: Ligne 176:
 bash mon-script bash mon-script
 </​code>​ </​code>​
-<code>+<file config retour de la commande>
 Bonjour les copainsutiliateur@debian:​~$ Bonjour les copainsutiliateur@debian:​~$
-</code>+</file>
  
 <​note>​ <​note>​
Ligne 176: Ligne 186:
 </​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 184: Ligne 195:
 bash --posix mon-script bash --posix mon-script
 </​code> ​ </​code> ​
-<code>+<file config retour de la commande>
 Bonjour les copainsutilisateur@debian:​~$ Bonjour les copainsutilisateur@debian:​~$
-</code>+</file>
  
 ====Le sha-bang et ./​mon-script ==== ====Le sha-bang et ./​mon-script ====
Ligne 207: Ligne 218:
 ==== Exécuter son script depuis n'​importe où !==== ==== Exécuter son script depuis n'​importe où !====
  
-À voir : [[atelier:chantier:​la-page-man-bash-les-caracteres-speciaux#​modifier-durablement-la-valeur-de-la-variable-d-environnement-path]] ​ +À voir : [[docs:programmation:​shells:​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+
  
->C'​est-à-dire dans l'un des répertoires ''/​bin'',​ ''/​usr/​bin''​ ou ''/​usr/​local/​bin''​+  * 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''​
  
-  * Les scripts que l'on crée sont ceux de l'​utilisateur +  * mais à notre niveau, les 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 ​
-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 240:
 </​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 254:
 </​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 267:
 </​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 273:
 </​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 269: Ligne 288:
 </​code>​ </​code>​
  
-<​code>​ +docs:​programmation:​shells:​la-page-man-bash-les-caracteres-speciaux 
-Coucou tout le monde +yep coucou
-</code>+</file>
  
 <​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 280: Ligne 299:
 echo $PATH echo $PATH
 </​code>​ </​code>​
-<​code>​+docs:​programmation:​shells:​la-page-man-bash-les-caracteres-speciaux
 /​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+</file
 +  * 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) ;
Ligne 333: Ligne 340:
 </​code>​ </​code>​
  
-> <espace> avant le point virgule, puis antislash ​''​\'', ​accolé au point virgule ​''​;'', ​puis <retour à la ligne> (espace ou non avant la nouvelle commande).+> <key>​Espace</​key> avant le point virgule, puis antislash ​<key>\</​key> ​accolé au point virgule ​<key>;</​key> ​puis <key>​Entrée</​key> (espace ou non avant la nouvelle commande).
  
 **Merci à [[user>​captnfab]] et [[user>​LeDub]] pour cette information !** **Merci à [[user>​captnfab]] et [[user>​LeDub]] pour cette information !**
Ligne 343: Ligne 350:
 scriptx scriptx
 </​code>​ </​code>​
- +<file config retour de la commande>
-Retour : +
-<code>+
 Un nouveau script toto ? Son nom :  Un nouveau script toto ? Son nom : 
-</code>+</file>
  
 >Lors de l'​exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom du nouveau script que vous voulez créer. >Lors de l'​exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom du nouveau script que vous voulez créer.
Ligne 357: Ligne 362:
 On peut éditer ce dernier, et y ajouter ​ On peut éditer ce dernier, et y ajouter ​
   * soit cette ligne : ''​PATH=$PATH":​."​ ''​   * soit cette ligne : ''​PATH=$PATH":​."​ ''​
 +
   * soit cette ligne : ''​PATH=$PATH":​$HOME/​."​ ''​   * soit cette ligne : ''​PATH=$PATH":​$HOME/​."​ ''​
  
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