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 →
Ci-dessous, les différences entre deux révisions de la page.
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:14] Hypathie [Comment créer et exécuter un script ?] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [14/07/2014 07:47] Hypathie [Apprendre à rédiger des scripts sous bash] |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
**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]] | * [[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]] | ||
* [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]] | * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]] | ||
Ligne 155: | Ligne 156: | ||
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. | ||
+ | |||
>Comme on le fait pour une commande. | >Comme on le fait pour une commande. | ||
+ | |||
<note important> | <note important> | ||
Attention, il faut penser à se déplacer dans le répertoire parent de ce script avant de lancer l'exécution. | Attention, il faut penser à se déplacer dans le répertoire parent de ce script avant de lancer l'exécution. | ||
Ligne 173: | Ligne 177: | ||
/bin/echo -n "Bonjour les copains" | /bin/echo -n "Bonjour les copains" | ||
</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 196: | Ligne 202: | ||
</code> | </code> | ||
- | <note> | + | <note important> |
- | Il faut là aussi se trouver dans le répertoire parent du script pour l'exécuter de cette façon. | + | Il faut là aussi se trouver dans le répertoire parent du script pour l'exécuter de cette façon.\\ |
+ | Mais il est à noter que l'écriture ''./fichier'' désigne un fichier exécutable, donc des scripts.\\ | ||
+ | Dans les wiki de façon générale, lorsqu'il s'agit d'un script on utilise ''./fichier'' afin de savoir de quoi on parle, sans avoir à se soucier de la configuration du fichier ''~/.bashrc'' des lecteurs. | ||
</note> | </note> | ||
Ligne 204: | Ligne 212: | ||
À 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 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 : |
+ | - 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, par exemple en dernière ligne, ''PATH=$PATH":$HOME/MesScripts''. | ||
- | * Les scripts que l'on crée sont ceux de l'utilisateur | + | ===Application=== |
- | 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); | + | |
- | - et en y ajoutant à la fin la ligne ''PATH=$PATH":$HOME/MesScripts''. | + | |
* 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 225: | Ligne 232: | ||
</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 232: | Ligne 246: | ||
</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 244: | Ligne 259: | ||
</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 250: | Ligne 265: | ||
</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 265: | Ligne 281: | ||
<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 278: | Ligne 294: | ||
/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) ; |