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 [15/09/2010 07:12] smolski |
doc:programmation:bash [08/11/2010 18:18] smolski |
||
---|---|---|---|
Ligne 17: | Ligne 17: | ||
\\ | \\ | ||
- | Objet : Les lignes de commande (bash)\\ | + | Objet : Le shell bas\\ |
Niveau requis : DEBUTANT\\ | Niveau requis : DEBUTANT\\ | ||
- | Commentaires : | + | Commentaires : //Instructions en mode texte utilisant l'interface en// [[manuel:ldc | ligne de commande]]. |
- | *Instructions en mode texte utilisant l'interface en ligne de [[manuel:commande|commande]]. | + | |
- | *Le bash, les scripts pas à pas… | + | |
- | + | ||
===== Le Shell ===== | ===== Le Shell ===== | ||
- | Le Shell est un interpréteur (ou interface) de lignes de [[manuel:commande|commandes]], ce programme fonctionne à partir d'instructions en mode texte saisies dans la/le [[manuel:terminal|console/terminal]]. | + | Le Shell est un interpréteur (ou interface) de lignes de commande, ce programme fonctionne à partir d'instructions en mode texte saisies dans la/le [[manuel:terminal|console/terminal]]. |
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é. | ||
Ligne 43: | Ligne 39: | ||
</code> | </code> | ||
- | ===== Ligne de commmande ===== | + | ===== Les commandes Linux ===== |
- | Vous avez déjà sûrement utilisé des commandes à partir des définitions présentes à la page [[manuel:commande|Les commandes Linux]]\\ | + | * [[manuel:commande | Les commandes Linux]] |
- | ==== Exemples : ==== | + | ===== Répertoires et chemins ===== |
- | Utilisons [[commande:ls | la commande ls]] | ||
- | Sans option, tapez : | + | |
+ | |||
+ | ==== TP01 - Préparation du terrain ==== | ||
+ | |||
+ | Dans votre ///home/user//, placez-vous dans un nouveau dossier créé pour l'occasion. Exemple : | ||
<code bash> | <code bash> | ||
- | user@debian-facile:~$ ls | + | $ cd |
- | 2010-02-26--10.13.22 fstab phpmyadmin.png | + | ~$ mkdir -p tmp/df_tp01/ |
- | caisse_060810.ods gparted1.png resilier-sfr | + | ~$ cd tmp/df_tp01/ |
+ | ~/tmp/df_tp01$ | ||
</code> | </code> | ||
- | Une commande peut être suivie d'un paramètre ou non, avec des options éventuelles. | + | On va maintenant créer les fichiers qui nous servirons pour la |
+ | suite. | ||
- | Avec une seule option ''(-l)'', tapez : | + | Nous y créons les fichiers : |
<code bash> | <code bash> | ||
- | user@debian-facile:~$ ls -l | + | ~/tmp/df_tp01$ touch phaute_dorthografe |
- | total 16308 | + | ~/tmp/df_tp01$ touch notes_temporaires |
- | -rw-r--r-- 1 mattux users 85680 fév 19 18:45 1024x7683.jpg | + | ~/tmp/df_tp01$ touch quisuisje |
- | drwx------ 2 mattux users 4096 fév 19 20:25 amsn_received | + | ~/tmp/df_tp01$ |
- | drwxr-xr-x 2 mattux users 4096 fév 16 15:13 bin | + | </code> |
- | -rw-r--r-- 1 mattux users 603999 fév 19 22:13 capture1.png | + | |
- | drwx------ 2 mattux users 4096 fév 20 02:56 Desktop | + | |
- | drwx------ 2 mattux users 4096 fév 16 15:13 Documents</code> | + | |
- | Avec des options combinées ''(-lh)'', tapez : | + | ==== Le répertoire courant, ou répertoire de travail ==== |
+ | |||
+ | C'est ce qui est indiqué juste à gauche du ''$'' du prompt ''bash''. | ||
<code bash> | <code bash> | ||
- | user@debian-facile:~$ ls -lh | + | ~/tmp/df_tp01$</code> |
- | total 16308 | + | |
- | -rw-r--r-- 1 mattux users 85,6 fév 19 18:45 1024x7683.jpg | + | |
- | drwx------ 2 mattux users 4,0 fév 19 20:25 amsn_received | + | |
- | drwxr-xr-x 2 mattux users 4,0 fév 16 15:13 bin | + | |
- | -rw-r--r-- 1 mattux users 603,9 fév 19 22:13 capture1.png | + | |
- | drwx------ 2 mattux users 4,0 fév 20 02:56 Desktop | + | |
- | drwx------ 2 mattux users 4,0 fév 16 15:13 Documents</code> | + | |
- | ===== Métacaractères ===== | + | Vous pouvez l'afficher en tapant la commande ''pwd'' : |
+ | <code bash> | ||
+ | ~/tmp/df_tp01$ pwd | ||
+ | /home/captnfab/tmp/df_tp01 | ||
+ | </code> | ||
- | Plusieurs combinaisons de commandes dans une seule ligne de commande : [[commande:les_metacaracteres|Les Métacaractères]] | + | On change de répertoire de travail avec [[commande:cd | la commande CD]]. |
- | Exemple : | + | Le répertoire de travail est également stocké dans la variable ''$PWD'' du shell. |
+ | <code bash> | ||
+ | ~/tmp/df_tp01$ echo $PWD | ||
+ | /home/captnfab/tmp/df_tp01 | ||
+ | </code> | ||
- | Utilisons [[commande:find | la commande find]] combinée avec la [[commande:wc | la commande wc]] : | + | ==== Chemin relatif / chemin absolu ==== |
+ | |||
+ | Pour identifier de manière unique un fichier sur un ordinateur sous Linux, on | ||
+ | donne ce qu'on appelle un chemin vers le fichier. Ce chemin peut être : | ||
+ | * //absolu// | ||
+ | * ou //relatif//. | ||
+ | |||
+ | === Quelques chemins particuliers === | ||
+ | |||
+ | * ''..'' (deux points) désigne le répertoire parent d'un répertoire considéré | ||
+ | * ''.'' (un point) désigne le répertoire considéré | ||
+ | ** | ||
+ | Exemples :** | ||
+ | * ''/home/../var'' est un chemin pour le répertoire ''/var'' | ||
+ | * ''ls .'' liste le répertoire courant | ||
+ | * ''.././././.'' est un chemin vers le dossier parent, équivalent à ''..'' | ||
+ | |||
+ | === Chemin absolu === | ||
+ | |||
+ | Un **chemin absolu** est un chemin depuis la racine du système de fichier, ''/'' | ||
+ | |||
+ | Exemples de chemin //absolu// : | ||
+ | * ''/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. | ||
+ | * ''/home/../var'' est aussi un chemin absolu puisqu'il donne le chemin depuis ''/'' | ||
+ | |||
+ | === Chemin relatif === | ||
+ | |||
+ | Un **chemin relatif** est un chemin depuis le **répertoire de travail** : ''$PWD'' | ||
+ | |||
+ | Exemple de chemin //relatif// : | ||
+ | * ''../../'' est un chemin relatif vers le dossier parent du dossier parent. | ||
+ | Si vous êtes toujours dans ''~/tmp/df_tp01/'', la commande | ||
<code bash> | <code bash> | ||
- | user@debian-facile:~$ find developpement/django/certif -name '*.py' -exec wc -l {} \+ | + | ls ../.. |
- | 1 developpement/django/certif/__init__.py | + | </code> |
- | 0 developpement/django/certif/acronym/__init__.py | + | doit vous lister votre //home//. |
- | 48 developpement/django/certif/acronym/models.py | + | * ''./plouf/../tchac/'' est un chemin relatif vers le dossier ''$PWD/tchac'' |
- | 82 developpement/django/certif/acronym/tools.py | + | |
- | 13 developpement/django/certif/acronym/urls.py | + | <note important>''Attention !'' : Virtuellement, un chemin relatif commence **toujours** par :''./''. \\ |
- | 42 developpement/django/certif/acronym/views.py | + | Cependant, en règle générale, on peut l'omettre.</note> |
- | .../...</code> | + | |
- | + | Exemple | |
+ | <code bash> | ||
+ | ls -lh quisuisje | ||
+ | </code> | ||
+ | |||
+ | Signifie en fait : | ||
+ | <code bash> | ||
+ | ls -lh ./quisuisje | ||
+ | </code> | ||
+ | |||
+ | ==== Exemple pour renommer des fichiers ==== | ||
+ | |||
+ | Lorsque l'on veut renommer un fichier, on utilise [[commande:mv | la commande MV]] qui prend deux arguments : | ||
+ | * un **chemin** vers le fichier à déplacer | ||
+ | * le nouveau **chemin** du fichier. | ||
+ | |||
+ | Ce chemin peut être : | ||
+ | - soit //absolu// | ||
+ | - soit //relatif//. | ||
+ | |||
+ | Dans la construction des fichiers d'exemple, nous pouvons exécuter [[commande:mv | la commande MV]] : | ||
+ | |||
+ | === Soit avec deux chemins relatifs : === | ||
+ | |||
+ | <code bash> | ||
+ | ~/tmp/df_tp01/$ mv ./phaute_dorthografe ./faute_dorthographe | ||
+ | </code> | ||
+ | |||
+ | qui signifie donc : | ||
+ | <code bash> | ||
+ | mv $PWD/./phaute_dorthografe $PWD/./faute_dorthographe | ||
+ | </code> | ||
+ | |||
+ | === Soit avec un chemin relatif et un chemin absolu === | ||
+ | |||
+ | <code bash> | ||
+ | ~/tmp/df_tp01/$ mv ./notes_temporaires /tmp/notes_temporaires.txt | ||
+ | </code> | ||
+ | |||
+ | qui signifie : | ||
+ | <code bash> | ||
+ | ~/tmp/df_tp01/$ mv $PWD/./notes_temporaires /tmp/notes_temporaires.txt | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== 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]]\\ | ||
+ | |||
+ | Voir : | ||
+ | * [[manuel:ldc | La ligne de commande]] | ||
+ | |||
+ | ===== Métacaractères ===== | ||
+ | |||
+ | Voir : | ||
+ | * [[commande:les_metacaracteres|Les Métacaractères]] | ||
+ | |||
===== Alias ===== | ===== Alias ===== | ||