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:bash [08/11/2010 17:57] smolski |
doc:programmation:bash [11/11/2012 05:18] martin_mtl |
||
---|---|---|---|
Ligne 19: | Ligne 19: | ||
Objet : Le shell bas\\ | Objet : Le shell bas\\ | ||
Niveau requis : DEBUTANT\\ | Niveau requis : DEBUTANT\\ | ||
- | Commentaires : //Instructions en mode texte utilisant l'interface en// [[manuel:ldc | ligne de commande]]. | + | Débutant, à savoir : [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) |
===== Le Shell ===== | ===== Le Shell ===== | ||
Ligne 27: | Ligne 27: | ||
Il existe plusieurs shell, bien souvent par défaut, c'est le **Shell Bash** qui est utilisé. | Il existe plusieurs shell, bien souvent par défaut, c'est le **Shell Bash** qui est utilisé. | ||
- | Pour savoir quel shell vous utilisez, tapez : | + | Pour savoir quel shell vous utilisez par défaut, tapez : |
<code bash> | <code bash> | ||
user@debian-facile:~$ echo $SHELL | user@debian-facile:~$ echo $SHELL | ||
Ligne 39: | Ligne 39: | ||
</code> | </code> | ||
- | ===== Les commandes Linux ===== | + | ===== Quotes, apostrophe, guillemets et apostrophe inversée ===== |
- | * [[manuel:commande | Les commandes Linux]] | + | ==== Simple quote ou apostrophe ==== |
- | ===== Répertoires et chemins ===== | + | Les simples quotes : ' délimitent une chaîne de caractères. \\ |
- | + | Même si cette chaîne contient des commandes ou des variables shell, celles-ci ne seront pas interprétées. Par exemple : | |
- | + | ||
- | + | ||
- | + | ||
- | ==== TP01 - Préparation du terrain ==== | + | |
- | + | ||
- | Dans votre ///home/user//, placez-vous dans un nouveau dossier créé pour l'occasion. Exemple : | + | |
<code bash> | <code bash> | ||
- | $ cd | + | $ variable='secret' |
- | ~$ mkdir -p tmp/df_tp01/ | + | $ echo 'Mon mot de passe est $variable.' |
- | ~$ cd tmp/df_tp01/ | + | Mon mot de passe est $variable.</code> |
- | ~/tmp/df_tp01$ | + | |
- | </code> | + | |
- | On va maintenant créer les fichiers qui nous servirons pour la | + | ==== Doubles quotes ou guillements ==== |
- | suite. | + | |
- | Nous y créons les fichiers : | + | Les doubles quotes : " délimitent une chaîne de caractères, mais les noms de variable sont interprétés par le shell. Par exemple : |
<code bash> | <code bash> | ||
- | ~/tmp/df_tp01$ touch phaute_dorthografe | + | $ variable="secret" |
- | ~/tmp/df_tp01$ touch notes_temporaires | + | $ echo "Mon mot de passe est $variable." |
- | ~/tmp/df_tp01$ touch quisuisje | + | Mon mot de passe est secret.</code> |
- | ~/tmp/df_tp01$ | + | |
- | </code> | + | |
- | ==== Le répertoire courant, ou répertoire de travail ==== | + | Ceci est utile pour générer des messages dynamiques au sein d'un script. |
- | C'est ce qui est indiqué juste à gauche du ''$'' du prompt ''bash''. | + | Remarquez bien la différence entre : |
- | <code bash> | + | echo coucou tout le monde |
- | ~/tmp/df_tp01$</code> | + | Ici, le shell va se trouver à interpréter chaque argument séparément. |
- | Vous pouvez l'afficher en tapant la commande ''pwd'' : | + | Alors qu'ici : |
- | <code bash> | + | echo "coucou tout le monde" |
- | ~/tmp/df_tp01$ pwd | + | |
- | /home/captnfab/tmp/df_tp01 | + | |
- | </code> | + | |
- | On change de répertoire de travail avec [[commande:cd | la commande CD]]. | + | Le shell interprètera toute la chaîne comme un seul argument. |
- | Le répertoire de travail est également stocké dans la variable ''$PWD'' du shell. | + | ==== Anti-quote ou apostrophe inversée ==== |
- | <code bash> | + | |
- | ~/tmp/df_tp01$ echo $PWD | + | |
- | /home/captnfab/tmp/df_tp01 | + | |
- | </code> | + | |
- | ==== Chemin relatif / chemin absolu ==== | + | Bash considère que les anti-quotes (`) délimitent une commande à exécuter. \\ |
+ | Les noms de variable et les commandes sont donc interprétés. | ||
- | Pour identifier de manière unique un fichier sur un ordinateur sous Linux, on | + | Par exemple en mettant toute cette commande entre deux Anti-quotes((L'anti-quote s'obtient avec les 2 touches simultanées du clavier : ''AltGr 7'')) : |
- | donne ce qu'on appelle un chemin vers le fichier. Ce chemin peut être : | + | $ echo `variable="connu"; echo "Mon mot de passe est $variable."` |
- | * //absolu// | + | |
- | * ou //relatif//. | + | |
- | === Quelques chemins particuliers === | + | On obtiendra : |
+ | Mon mot de passe est connu. | ||
- | * ''..'' (deux points) désigne le répertoire parent d'un répertoire considéré | + | Autre exemple : |
- | * ''.'' (un point) désigne le répertoire considéré | + | <code bash> |
+ | echo `ls` </code> | ||
- | Exemples : | + | Cette commande affiche le contenu du répertoire courant à l'écran. \\ |
- | * ''/home/../var'' est un chemin pour le répertoire ''/var'' | + | Elle est strictement équivalente à ls. |
- | * ''ls .'' liste le répertoire courant | + | |
- | * ''.././././.'' est un chemin vers le dossier parent, équivalent à ''..'' | + | |
- | === Chemin absolu === | + | ===== Variables ===== |
- | Un **chemin absolu** est un chemin depuis la racine du système de fichier, ''/'' | + | ==== accolades ==== |
- | Exemples de chemin //absolu// : | + | Les accolades { } permettent de délimiter une variable d'une chaîne de caractères. \\ |
- | * ''/var/cache/apt/archives/'' qui est le dossier contenant les paquets téléchargés pour installation ou mise à jour par ''aptitude'', ou ''apt-get'', ou ''synaptic'' etc. | + | Par exemple : |
- | * ''/home/../var'' est aussi un chemin absolu puisqu'il donne le chemin depuis ''/'' | + | pour délimiter le nom de la variable ici on peut écrire : |
+ | VARIABLE1="${VARIABLE}RESTEDELACHAINE" | ||
- | === Chemin relatif === | + | Et si VARIABLE = "C'ESTLE", nous obtiendrons pour la signification de VARIABLE1 : |
+ | C'ESTLERESTEDELACHAINE | ||
- | Un **chemin relatif** est un chemin depuis le **répertoire de travail** : ''$PWD'' | + | //Merci à //**enikar**//, toujours vaillant sur l'irc df !// ;-) |
- | Exemple de chemin //relatif// : | + | ===== Source ===== |
- | * ''../../'' est un chemin relatif vers le dossier parent du dossier parent. | + | |
- | Si vous êtes toujours dans ''~/tmp/df_tp01/'', la commande | + | |
- | <code bash> | + | |
- | ls ../.. | + | |
- | </code> | + | |
- | doit vous lister votre //home//. | + | |
- | * ''./plouf/../tchac/'' est un chemin relatif vers le dossier ''$PWD/tchac'' | + | |
- | <note important>''Attention !'' : Virtuellement, un chemin relatif commence **toujours** par :''./''. \\ | + | * http://fr.wikibooks.org/wiki/Programmation_Bash/Notions_essentielles_du_shell_bash#Quotes.2C_apostrophe.2C_guillemets_et_apostrophe_invers.C3.A9e |
- | Cependant, en règle générale, on peut l'omettre.</note> | + | |
- | Exemple | + | //Merci à //**Haricophile**// qui prend bien de la peine à me dépatouiller des sites english, comme ici !// ;-) |
- | <code bash> | + | |
- | ls -lh quisuisje | + | |
- | </code> | + | |
- | + | ||
- | Signifie en fait : | + | |
- | <code bash> | + | |
- | ls -lh ./quisuisje | + | |
- | </code> | + | |
+ | ===== Les commandes Linux ===== | ||
+ | * [[manuel:ligne_de_commande_et_commandes#gnu_linux-_les_commandes | Les commandes Linux]] | ||
+ | ===== Répertoires et chemins ===== | ||
+ | * [[manuel:repertoire | Les répertoires et chemins]] | ||
===== Ligne de commmande ===== | ===== Ligne de commmande ===== | ||
- | Vous avez déjà sûrement utilisé des commandes à partir des définitions présentes à la page [[manuel:commande|Les commandes Linux]]\\ | + | Vous avez déjà sûrement utilisé des commandes à partir des définitions présentes à la page [[manuel:ligne_de_commande_et_commandes#gnu_linux-_les_commandes|Les commandes Linux]]\\ |
Voir : | Voir : | ||
- | * [[manuel:ldc | La ligne de commande]] | + | * [[manuel:ligne_de_commande_et_commandes | La ligne de commande]] |
===== Métacaractères ===== | ===== Métacaractères ===== | ||
- | Voir : | + | Débutant avisé, voir : |
- | * [[commande:les_metacaracteres|Les Métacaractères]] | + | * [[commande:les_metacaracteres|Les métacaractères, ou globs, ou encore patterns]] |
| | ||
===== Alias ===== | ===== Alias ===== | ||
- | Lorsque vous tapez plusieurs lignes de commande différentes et répétitives à la suite, il est intéressant de les rédiger toutes ensembles dans un seul texte (un [[commande:script]]) afin de les appeler d'un coup à l'aide d'un mot clé nommé : [[commande:alias|un alias]]. | + | Lorsque vous tapez plusieurs lignes de commande différentes et répétitives à la suite, il est intéressant de les rédiger toutes ensembles dans un seul texte (un //script//) afin de les appeler d'un coup à l'aide d'un mot clé nommé : [[commande:alias|un alias]]. |
Pour voir où et comment réaliser un tel script : | Pour voir où et comment réaliser un tel script : | ||
Ligne 168: | Ligne 139: | ||
Un **script** est la rédaction dans un fichier texte d'un ensemble de //commandes// et d'expressions régulières (caractères utilisés symboliquement) orientant les instructions données aux commandes. | Un **script** est la rédaction dans un fichier texte d'un ensemble de //commandes// et d'expressions régulières (caractères utilisés symboliquement) orientant les instructions données aux commandes. | ||
- | Pour les DÉBUTANTS AVISÉS, voir là : | + | Pour les DÉBUTANTS AVISÉS et anglophile, voir là : |
* [[scripts_bash | Des scripts à foison commentés en anglais]] | * [[scripts_bash | Des scripts à foison commentés en anglais]] | ||
+ | |||
+ | //Merci à //**cthuluh**// pour nous avoir proposé ce lien.// :-) | ||
+ | |||
+ | ===== Liens et remerciements ===== | ||
+ | |||
+ | //Merci à //**devpsp**// d'avoir initié cette page, et au //**captnfab**// qui de son site ici :// | ||
+ | * http://wiki.chezlefab.net/about/accueil | ||
+ | |||
+ | //Veille à nous éviter bien des ecueils !// ;-) |