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:shell:illustration-navigation-shell [11/02/2014 13:00] 127.0.0.1 modification externe |
doc:programmation:shell:illustration-navigation-shell [04/03/2014 10:04] captnfab [Chemin relatif ou absolu illustrés par quelques commandes] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>débutants}} | * Niveau requis : {{tag>débutants}} | ||
* Commentaires : //les bases du bash, rappels et exercices // | * Commentaires : //les bases du bash, rappels et exercices // | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Débutant, à savoir : |
- | * Suivi : {{tag>en-chantier}} - Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. | + | * [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) |
+ | * sur le shell : [[doc:programmation:shell:shell]] | ||
+ | * sur répertoires et chemins : [[doc:programmation:shell:repertoires#chemin-relatif|chemins relatif]] | ||
+ | * sur chemin relatif et absolu : [[doc:programmation:shell:repertoires]] | ||
+ | * sur système droits:fichiers : [[doc:systeme:droits-unix-bis?&#modification-des-droits]] | ||
+ | * sur la commande cd : [[doc:programmation:shell:cd| doc:programmation shell:cd]] | ||
+ | * sur les différentes commandes : [[doc:systeme:commandes:gnu_linux]] | ||
+ | * Suivi : {{tag>}} | ||
* Création par **Hypathie** 24/01/2014 | * Création par **Hypathie** 24/01/2014 | ||
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
Ligne 13: | Ligne 20: | ||
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 ! | ||
+ | |||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 20: | Ligne 28: | ||
S'exercer sur quelques commandes en vue d'assimiler les notions de **chemin relatif** et de **chemin absolu**.\\ | S'exercer sur quelques commandes en vue d'assimiler les notions de **chemin relatif** et de **chemin absolu**.\\ | ||
Ou se servir de différentes expressions syntaxiques pour écrire des commandes équivalentes. | Ou se servir de différentes expressions syntaxiques pour écrire des commandes équivalentes. | ||
- | ==== À voir :==== | ||
- | sur le shell : [[doc:programmation:shell:shell]] | + | ==== À savoir ==== |
- | sur répertoires et chemins : [[doc:programmation:shell:repertoires#chemin-relatif|chemins relatif]] | + | * **Le répertoire courant** est le répertoire dans lequel on se trouve. \\ |
- | + | * Attention à la confusion entraînée par l'utilisation de l'expression "son home", préférerez plutôt "**son répertoire personnel**". \\ | |
- | sur chemin relatif et absolu : [[doc:programmation:shell:repertoires]] | + | * À l'ouverture d'une session de terminal, le répertoire courant est notre répertoire personnel, \\ |
- | + | ||
- | sur système droits:fichiers : [[doc:systeme:droits-unix-bis?&#modification-des-droits]] | + | |
- | + | ||
- | sur la commande cd : [[doc:programmation:shell:cd| doc:programmation shell:cd]] | + | |
- | + | ||
- | sur système:commandes:gnu : [[doc:systeme:commandes:gnu_linux]] | + | |
- | + | ||
- | ==== À savoir :==== | + | |
- | + | ||
- | * **Le répertoire courant** est le répertoire dans lequel on se trouve. \\ | + | |
- | Attention à la confusion entraînée par l'utilisation de l'expression "son home", préférerez plutôt "**son répertoire personnel**". \\ | + | |
- | A l'ouverture d'une session de terminal, le répertoire courant est notre répertoire personnel, \\ | + | |
comme nous l'indique le prompt de l'utilisateur ''toto'' ci-dessous: | comme nous l'indique le prompt de l'utilisateur ''toto'' ci-dessous: | ||
- | <code=user> toto@debian:~$ </code> | + | <code>toto@debian:~$</code> |
Mais ici : | Mais ici : | ||
- | <code=user> toto@debian:~/Documents$ </code> | + | <code>toto@debian:~/Documents$</code> |
le prompt indique que le répertoire courant est le fichier de type répertoire "Documents" situé dans le répertoire personnel de l'utilisateur "toto" : | le prompt indique que le répertoire courant est le fichier de type répertoire "Documents" situé dans le répertoire personnel de l'utilisateur "toto" : | ||
Ligne 50: | Ligne 45: | ||
=> Après l'ouverture du terminal entrez la commande **ls** puis validez votre commande en tapant sur la touche "entrée" : vous obtiendrez la liste des fichiers contenus dans votre répertoire personnel. | => Après l'ouverture du terminal entrez la commande **ls** puis validez votre commande en tapant sur la touche "entrée" : vous obtiendrez la liste des fichiers contenus dans votre répertoire personnel. | ||
- | Puis en entrant: cd "Documents" (sans les guillemets sur Documents) et en validant votre saisie par la touche "entrée", le **répertoire courant** sera alors le répertoire "Documents". | + | Puis en entrant: ''cd "Documents"'' et en validant votre saisie par la touche "entrée", le **répertoire courant** sera alors le répertoire "Documents". |
- | + | ||
- | * **Le tilde : ~/** est une variable de l'interpréteur de commande **bas** qui sera interprété, s'il n'est pas entouré de guillemets ou d'apostrophes, comme le répertoire personnel de l'utilisateur qui a lancé la commande. Ainsi, par exemple, l'utilisateur ''toto'' pourra utiliser le caractère tilde dans une ligne de commande en remplacement du chemin absolu de son répertoire personnel : **/home/toto** | + | * **Le tilde : ~/** est une variable de l'interpréteur de commande **bash** qui sera interprété, s'il n'est pas entouré de guillemets ou d'apostrophes, comme le répertoire personnel de l'utilisateur qui a lancé la commande. Ainsi, par exemple, l'utilisateur ''toto'' pourra utiliser le caractère tilde dans une ligne de commande en remplacement du chemin absolu de son répertoire personnel : **/home/toto** |
Il permet donc d'écrire dans les commandes le chemin relatif à son répertoire personnel d'un fichier de type-répertoire ou d'un fichier-ordinaire ((Cette distinction parce que sous Linux tout est "fichier", mais en pratique, on peut dire fichier de type-répertoire pour désigner les fichiers qui peuvent contenir d'autres fichiers ; tandis que fichier-ordinaire renvoie aux fichiers dans lesquels on peut écrire du texte, par exemple. | Il permet donc d'écrire dans les commandes le chemin relatif à son répertoire personnel d'un fichier de type-répertoire ou d'un fichier-ordinaire ((Cette distinction parce que sous Linux tout est "fichier", mais en pratique, on peut dire fichier de type-répertoire pour désigner les fichiers qui peuvent contenir d'autres fichiers ; tandis que fichier-ordinaire renvoie aux fichiers dans lesquels on peut écrire du texte, par exemple. | ||
Ligne 64: | Ligne 57: | ||
en utilisant un chemin absolu (pour un utilisateur "toto") | en utilisant un chemin absolu (pour un utilisateur "toto") | ||
- | <code=user> cd /home/toto/Documents</code> | + | <code user>cd /home/toto/Documents</code> |
ou | ou | ||
- | <code=user> cd ~/Documents </code> | + | <code user> cd ~/Documents</code> |
- | <code user>~$ echo ~ | + | <code user>echo ~</code> |
- | /home/toto</code> | + | <code>/home/toto</code> |
(//Pour aller plus loin, voir// [[doc:programmation:shell:tilde]]) | (//Pour aller plus loin, voir// [[doc:programmation:shell:tilde]]) | ||
Ligne 90: | Ligne 83: | ||
**cd /** : permet d'aller à la racine du système de fichier. | **cd /** : permet d'aller à la racine du système de fichier. | ||
+ | <note>Si l'on lance une commande en root, le chemin relatif du répertoire personnel de l'utilisateur toto (représenté par ~) ne fonctionnera pas. Il faudra alors utiliser le chemin absolu.\\ | ||
+ | Et cela, parce que le répertoire "Documents" fait partie du compte de l'utilisateur toto, mais ne fait pas partie au compte root.\\ | ||
+ | Ainsi par exemple, pour déplacer un fichier-ordinaire du fichier-répertoire "Bureau" | ||
+ | au fichier-répertoire "Documents", la commande suivante fonctionnera : | ||
+ | <code root>mv /home/toto/Bureau/fichier-ordinaire /home/toto/Documents/fichier-ordinaire</code> | ||
+ | Et la commande suivante ne fonctionnera pas en root, mais seulement en user: | ||
+ | <code user> mv ~/Bureau/fichier-ordinaire ~/Documents/fichier-ordinaire</code> | ||
+ | </note> | ||
===== Énoncé des questions ci-dessous ===== | ===== Énoncé des questions ci-dessous ===== | ||
Ligne 95: | Ligne 96: | ||
le prompt à l'ouverture du terminal est alors : | le prompt à l'ouverture du terminal est alors : | ||
- | <code=user> toto@debian:~$ </code> | + | <code> toto@debian:~$ </code> |
- | <code=user> toto@debian:~$ pwd </code> | + | <code>pwd </code> |
- | + | <code>/home/toto</code> | |
- | <file txt retour de la commande pwd>/home/toto </file> | + | |
<note> vocabulaire : Ce n'est pas le prompt qui répond, il ne sert que d'indicateur. C'est le programme de la commande qui retourne le texte affiché.\\ | <note> vocabulaire : Ce n'est pas le prompt qui répond, il ne sert que d'indicateur. C'est le programme de la commande qui retourne le texte affiché.\\ | ||
Ligne 106: | Ligne 106: | ||
====Soit la création dans ce répertoire personnel d'un fichier de type répertoire nommé essai1==== | ====Soit la création dans ce répertoire personnel d'un fichier de type répertoire nommé essai1==== | ||
- | <code=user> mkdir essai1</code> | + | <code user> mkdir essai1</code> |
==== Soit la création d'un autre fichier de type répertoire nommé « essai2 » ==== | ==== Soit la création d'un autre fichier de type répertoire nommé « essai2 » ==== | ||
Ligne 112: | Ligne 112: | ||
__1) pour avancer dans l'arborescence et créer « essai2 » dans « essai1 »__ | __1) pour avancer dans l'arborescence et créer « essai2 » dans « essai1 »__ | ||
- | <code=user>cd essai1</code> | + | <code user>cd essai1</code> |
<note>À remarquer : le prompt est alors\\ | <note>À remarquer : le prompt est alors\\ | ||
- | toto@debian:~/essai1$ []</note> | + | <code>toto@debian:~/essai1$</code></note> |
après **pwd** le lieu indiqué est bien : | après **pwd** le lieu indiqué est bien : | ||
- | <file txt retour de la commande>/home/toto/essai1</file> | + | <file>/home/toto/essai1</file> |
__2) Pour créer un fichier de type répertoire « essai2 » depuis son répertoire parent ("essai1")__ | __2) Pour créer un fichier de type répertoire « essai2 » depuis son répertoire parent ("essai1")__ | ||
Entrez alors : | Entrez alors : | ||
- | <code=user> mkdir essai2</code> | + | <code user>mkdir essai2</code> |
<note> Depuis "essai1" on aurait pu créer "essai2" en faisant\\ | <note> Depuis "essai1" on aurait pu créer "essai2" en faisant\\ | ||
- | <code user> cd /home/toto/essai1/essai2</code> | + | <code user>cd /home/toto/essai1/essai2</code> |
</note> | </note> | ||
Ligne 134: | Ligne 134: | ||
depuis le répertoire parent « essai1 » du fichier "lili" on peut faire : | depuis le répertoire parent « essai1 » du fichier "lili" on peut faire : | ||
- | <code=user>cd essai2/</code> | + | <code user>cd essai2/</code> |
depuis le répertoire parent « essai1 » du fichier "lili" on aurait pu faire aussi : | depuis le répertoire parent « essai1 » du fichier "lili" on aurait pu faire aussi : | ||
- | <code=user>cd /home/toto/essai1/essai2/</code> | + | <code user>cd /home/toto/essai1/essai2/</code> |
<note>Remarquez le changement du prompt qui indique le répertoire actuel comme étant "essai2"\\ | <note>Remarquez le changement du prompt qui indique le répertoire actuel comme étant "essai2"\\ | ||
- | toto@debian:~/essai1/essai2$ [] </note> | + | <code>toto@debian:~/essai1/essai2$</code> </note> |
Pour créer le fichier ordinaire "lili", dans le répertoire "essai2" :\\ | Pour créer le fichier ordinaire "lili", dans le répertoire "essai2" :\\ | ||
<note> utilisez la commande echo selon la syntaxe suivante\\ | <note> utilisez la commande echo selon la syntaxe suivante\\ | ||
(avec ou sans les guillemets sur le mot "bonjour") : \\ | (avec ou sans les guillemets sur le mot "bonjour") : \\ | ||
- | <code> echo "texte à écrire dans un fichier" > /chemin-absolu-du-fichier-à-créer/nom-du-fichier-créé</code> | + | <code user> echo "texte à écrire dans un fichier" > /chemin-absolu-du-fichier-à-créer/nom-du-fichier-créé</code> |
+ | On notera que le texte peut contenir des retours à la ligne, il doit alors impérativement être entouré de guillemets. | ||
</note> | </note> | ||
- | <code>echo bonjour > lili</code> | + | <code user>echo bonjour > lili</code> |
Ou encore | Ou encore | ||
- | <code user> echo bonjour > /home/hypathie/essai1/essai2/lili</code> | + | <code user>echo bonjour > /home/hypathie/essai1/essai2/lili</code> |
__4) Retour au niveau dans son répertoire personnel en faisant :__ | __4) Retour au niveau dans son répertoire personnel en faisant :__ | ||
- | <code=user>cd ~ </code> | + | <code user>cd ~ </code> |
====À la place de ce long énoncé==== | ====À la place de ce long énoncé==== | ||
On aurait pu créer en une seule commande les deux répertoires "essai1" et "essai2" ainsi | On aurait pu créer en une seule commande les deux répertoires "essai1" et "essai2" ainsi | ||
- | <code=user>mkdir -p /home/toto/essai1/essai2</code> | + | <code user>mkdir -p /home/toto/essai1/essai2</code> |
puis pour créer le fichier ordinaire "lili" | puis pour créer le fichier ordinaire "lili" | ||
- | <code=user> echo "bonjour" > /home/toto/essai1/essai2/lili</code> | + | <code user>echo "bonjour" > /home/toto/essai1/essai2/lili</code> |
Ligne 175: | Ligne 176: | ||
En faisant : | En faisant : | ||
- | <code=user>mkdir -p ~/essai1/essai2</code> | + | <code user>mkdir -p ~/essai1/essai2</code> |
puis | puis | ||
- | <code=user>echo "Bonjour" > ~/essai1/essai2/lili</code> | + | <code user>echo "Bonjour" > ~/essai1/essai2/lili</code> |
====2) Comment aller directement (sans une succession de cd, puis de cd ..) de son répertoire personnel à "lili", puis retourner du répertoire contenant "lili" à son répertoire personnel ?==== | ====2) Comment aller directement (sans une succession de cd, puis de cd ..) de son répertoire personnel à "lili", puis retourner du répertoire contenant "lili" à son répertoire personnel ?==== | ||
Ligne 185: | Ligne 186: | ||
__a) si on connaît où est "lili" : utiliser l'autocomplétion (touche tabulation) :__ | __a) si on connaît où est "lili" : utiliser l'autocomplétion (touche tabulation) :__ | ||
- | <code=user>cd essai1/essai2/</code> | + | <code user>cd essai1/essai2/</code> |
<note> le prompt est maintenant: | <note> le prompt est maintenant: | ||
- | toto@debian:~/essai1/essai2$ []</note> | + | <code>toto@debian:~/essai1/essai2$</code></note> |
Ligne 198: | Ligne 199: | ||
mais une base de données, mise à jour régulièrement par le programme "updatedb") : | mais une base de données, mise à jour régulièrement par le programme "updatedb") : | ||
- | <code root> updatedb && locate lili</code> | + | <code root>updatedb</code> |
+ | <code user>locate lili</code> | ||
- | <file txt retour de la commande>/home/toto/essai1/essai2/lili</file> | + | <file>/home/toto/essai1/essai2/lili</file> |
</note> | </note> | ||
**Puis du répertoire contenant "lili" à mon répertoire personnel ?** | **Puis du répertoire contenant "lili" à mon répertoire personnel ?** | ||
- | <code=user> | + | <code>toto@debian:~$ cd essai1/essai2/ |
- | toto@debian:~$ cd essai1/essai2/ | + | toto@debian:~/essai1/essai2$ cd ~ |
- | toto@debian:~/essai1/essai2$ cd ~ </code> | + | toto@debian:~$</code> |
==== 3) Corriger la faute d'orthographe sur "bonjour" en écrasant "lili", depuis son home ? ==== | ==== 3) Corriger la faute d'orthographe sur "bonjour" en écrasant "lili", depuis son home ? ==== | ||
Ligne 214: | Ligne 216: | ||
<note> On est au niveau de son répertoire personnel\\ | <note> On est au niveau de son répertoire personnel\\ | ||
le prompt est \\ | le prompt est \\ | ||
- | toto@debian:~$ []</note> | + | <code>toto@debian:~$ </code></note> |
- | <code=user> | + | <code user>echo Bonjour > ~/essai1/essai2/lili |
- | echo Bonjour > ~/essai1/essai2/lili | + | |
</code> | </code> | ||
==== 4) Trouvez deux façons d'écrire le chemin relatif de la commande ci-dessus ? ==== | ==== 4) Trouvez deux façons d'écrire le chemin relatif de la commande ci-dessus ? ==== | ||
- | <code=> | + | <code user>cd /home/toto/essaie1/essai2</code> |
- | cd /home/toto/essaie1/essai2 | + | |
- | </code> | + | |
=> | => | ||
- | <code=> | + | <code>cd ~/essaie1/essai2</code> |
- | cd ~/essaie1/essai2 | + | |
- | </code> | + | |
- | <code> | + | <code user>cd ./essaie1/essai2</code> |
- | ./essaie1/essai2 | + | |
- | </code> | + | |
===== Écritures équivalentes d'une commande ===== | ===== Écritures équivalentes d'une commande ===== | ||
==== 1) Pour aller du home à la racine avec cd puis avec l'usage des points ?==== | ==== 1) Pour aller du home à la racine avec cd puis avec l'usage des points ?==== | ||
- | <code=user>cd /</code> | + | <code user>cd /</code> |
puis | puis | ||
- | <code=user>pwd</code> | + | <code user>pwd</code> |
- | <file txt retour de cette commande>/</file> | + | <file>/</file> |
<note> Et le prompt ! \\ | <note> Et le prompt ! \\ | ||
- | toto@debian:/$ []</note> | + | <code>toto@debian:/$</code></note> |
ou encore | ou encore | ||
- | <code=user>cd ../..</code> | + | <code user>cd ../..</code> |
- | <code=user>pwd</code> | + | <code user>pwd</code> |
- | <file txt retour de cette commande>/</file> | + | <file>/</file> |
==== 2) Retourner dans son home depuis la racine à l'aide du tilde ? ==== | ==== 2) Retourner dans son home depuis la racine à l'aide du tilde ? ==== | ||
- | <code=user>cd ~</code> | + | <code user>cd ~</code> |
ou | ou | ||
- | <code=user>cd ~</code> | + | <code user>cd ~</code> |
<note>le prompt ! \\ | <note>le prompt ! \\ | ||
- | toto@debian:~$ []</note> | + | <code>toto@debian:~$</code></note> |
==== 3) Utiliser le point avec une autre commande que cd :==== | ==== 3) Utiliser le point avec une autre commande que cd :==== | ||
Ligne 266: | Ligne 261: | ||
**en absolu :** | **en absolu :** | ||
- | <code=user> | + | <code user>cp /home/toto/essai1/essai2/lili /home/toto/essai1/lili |
- | cp /home/toto/essai1/essai2/lili /home/toto/essai1/lili | + | |
</code> | </code> | ||
**en relatif (depuis n'importe où) : ** | **en relatif (depuis n'importe où) : ** | ||
- | <code=user> | + | <code user>cp ~/essai1/essai2/lili ~/essai1/lili</code> |
- | cp ~/essai1/essai2/lili ~/essai1/lili | + | |
- | </code> | + | |
**en relatif (depuis son répertoire personnel) : ** | **en relatif (depuis son répertoire personnel) : ** | ||
- | <code=user> | + | <code user>cp ./essai1/essai2/lili ./essai1/lili</code> |
- | cp ./essai1/essai2/lili ./essai1/lili | + | |
- | </code> | + | |