Skip Navigation Links
Accueil
Java Standard EditionExpand Java Standard Edition
Java EE 5Expand Java EE 5
Visual Basic .Net 2005Expand Visual Basic .Net 2005
Visual C++ .Net 2005Expand Visual C++ .Net 2005
Visual C# .Net 2005Expand Visual C# .Net 2005
Cours ASP .Net 2.0Expand Cours ASP .Net 2.0
PostgresqlExpand Postgresql
LinuxExpand Linux
Visual Studio 2008Expand Visual Studio 2008
ASP 3.0 ClassiqueExpand ASP 3.0 Classique
Cours Javascript - DOM - DHTMLExpand Cours Javascript - DOM - DHTML
Cours AjaxExpand Cours Ajax
VBAExpand VBA
AssembleurExpand Assembleur
PerlExpand Perl
MembresExpand Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Accueil > Linux > Le Shell Unix( Linux, Ubuntu)
____________________________________________________________________________________________________
Connexion

LE SHELL UNIX( linux, ubuntu )

I) GENERALITES

   Le problème principal du shell Unix est la syntaxe( on s’y perd). La solution est de comprendre d’abord le fonctionnement de la syntaxe. On se prend un exemple de commande pour comprendre la syntaxe du shell, prenons la commande find. Cette phase de généralisations sur la syntaxe shell est, à mon avis, une étape indispensable pour arriver à une bonne compréhension du shell.

La commande find pour comprendre la syntaxe du shell

Find /home/sabri –name “*prog.*”

I.1) L’objectif de la commande

   Toute commande est dédiée à une tache bien précise. Il faut donc d’abord bien comprendre ce que la commande fait, ce qui n’est pas si évident que cela.

Objectif de find : trouver un ou plusieurs fichiers. Ceci est un besoin qui peut arriver, d’où la présence d’une telle commande dans le shell. Car les commandes sont là pour servir, c’est leur seule raison d’être, même si certaines peuvent paraître mystérieuses.

I.2) La description de ce que la commande fait

   Toute commande se comporte d’une façon particulière. Ici, par exemple, on peut dire que, par défaut, le find est récursif( logique : besoin le plus courant).

Autre exemple de description du find : selon la façon dont on a formulé le répertoire de recherche( absolu /home/sabri ou relatif ex. : . (point) ), le résultat sera relatif ou absolu. A mon avis, c’est juste un moyen de connaître le choix de l’utilisateur à ce sujet, pas une contrainte technique pour la commande.

I.3) Deux types d’arguments

   Deux types d’arguments : les arguments obligatoires, comme le /home/sabri. Et les arguments à options, comme -name. C’est tout ce qu’on peut avoir comme arguments.

I.4) Les options: le – (le tiret)

   Ici l’option est –name. L’ordre des options dans la commande n’a pas d’importance. En effet, cela se comprend car les options ont un nom, donc l’interpréteur de ligne de commande peut comprendre de quoi il s’agit.

a) Remarque sur ce que j’appelle « les paramètres des options »

   Ici, après l’option, on a un paramètre de l’option. Avec un espace de séparation. Ce paramètre de l’option est un paramètre obligatoire. Il y a des commandes qui ont des options qui ne demandent pas plus de précisions derrière :
Exemple : ifconfig –a . Dans le cas précédent, le –name demande un argument obligatoire derrière, qui est le nom du fichier.

I.5) Les arguments obligatoires

   Tout-de-suite après le find : le répertoire de la recherche. L’ordre des arguments obligatoires a une importance. En effet, comme on n’indique pas le nom du type d’argument, au contraire des options, l’interpréteur de ligne de commande ne pourrait pas savoir de quel argument il s’agit.
L’argument immédiatement après le –name est aussi un argument obligatoire( obligatoire quand l’option –name est présente, bien sûr). On doit mettre le nom du fichier derrière. Ce nom de fichier est ce que j’ai appelé ci-dessus un paramètre d’une option.

I.6) Pourquoi les “ ”

   Les guillemets doubles servent à empêcher une mauvaise interprétation du shell des caractères spéciaux.

I.7) L’option –print

-print : affichage du résultat sur la console. Par défaut, est activée dans le find

I.8) L’option –type

   Pour préciser un type voulu.

a) -type f :

-type f signifie qu’on veut que les fichiers. Ici, après l’option, on a un paramètre de l’option. Avec un espace de séparation, bien sûr. Ce paramètre de l’option est un paramètre obligatoire, je le rappel.

I.9) Classer les commandes en catégories : exemple des commandes qui vont regarder le contenu de fichiers

Certaines commandes peuvent être rangées dans la même catégorie. Cette classification facilite la compréhension des commandes.

Prenons par exemple les commandes qui vont regarder le contenu de fichiers( pas comme find qui est « externe » ). Find ne fait pas partie de ce groupe de commandes, car il ne regarde pas à l’intérieur de fichiers ; il a une action externe. Par contre, la commande diff va regarder le contenu des fichiers.

a)La commande diff

Exemple dans un script C-Shell :

diff $f1 $f2 >> /dev/null

Définition du diff: « compare files line by line ». Il s’agit d’une comparaison ligne par ligne de deux fichiers passés en paramètres.

Utile notamment pour vérifier que 2 fichiers contiennent la même chose.

Options :
-q : dit uniquement si les fichiers sont différents, mais ne dit pas les différences.
-b : ignore les différences dues à des espaces.
-B : ignore les différences dues à des lignes blanches.

Dans un script C-Shell, on utilise $status, et on le compare à 0 pour savoir si les 2 fichiers sont égaux.

aa) Le caractère >>

Le >> va faire un append. Il va donc indiquer qu’il faut ajouter le résultat trouvé à la fin du fichier indiqué juste après.

ab)Le caractère $ ( script C-Shell)

Remarque : le caractère $ est indispensable ici, car sinon le « f1 » serait pris comme un nom de fichier, alors qu’il s’agit d’une variable.

I.10) L’invite de commande

Penchons-nous sur l’invite de commande. Bien comprendre l’invite de commande est une bonne manière d’avoir moins peur du shell.

Prenons l’exemple de l’invite d’ubuntu :
sabri@sabri-desktop:~$ find /home/sabri –name “*prog.*”


donc login@ordi:chemin courant$($ est le prompt)+espace

I.11) Emacs

Emacs est un éditeur de texte, avec lequel vous pouvez par exemple saisir des scripts shell.
Exemple: emacs fichier.txt &

I.12) Le pipe |

Le caractère |, appelé pipe.

f1 | f2 équivaut à
f1 > fich
f2 < fich
savoir ceci facilite la compréhension du pipe.

I.13) Les variables prédéfinies

Les variables prédéfinies sont les variables globales( noms en majuscules, exemple HOME) + les variables locales( ex. argv, ou home( en minuscules) des scripts C-Shell).

I.13.a) Les variables globales

Exemple : $HOME , PATH, PWD. Elles sont écrites en majuscules.
On peut y accéder à partir d’un terminal, par opposition aux variables locales( exemple home en minuscules), qui ne sont pas accessibles à partir d’un terminal.

Essayez pour home : il ne connaît pas la variable locale home dans le terminal, mais il connaît $HOME !

I.13.b) Les variables locales ou variables shell

Les variables locales( appelées aussi variables shell).
Elles sont utilisables dans un script shell(C-Shell par exemple) , par exemple home en minuscules, mais ne sont pas accessibles à partir d’un terminal. Exemple :
essayez par exemple $cwd : ne marche pas dans un terminal, mais marche dans un script.

- cwd(chemin absolu du répertoire de travail)
- home
- status : retourne le statut de la dernière commande exécutée( 0 si tout s’est bien passé ).
Exemple dans un script C-Shell :
if ( $status == 0 ) then etc

- argv : les arguments de la ligne de commande( indicé à partir de 1). C’est un tableau de string
$argv[1]: le premier agurment passé( pas de $argv[0]).
Exemple dans un script C-Shell :

set rep = $argv[1]
echo $argv: ca sait afficher tout, séparé par un espace!

I.13.ba) Les variables locales homonymes

Par exemple, home est appelée variable locale homonyme, car il existe une variable globale HOME.

II) Liste des commandes

1) find

Vu ci-dessus

2) diff

Vu ci-dessus

3)grep

Recherche de chaînes de caractères dans des fichiers textes:

grep chaine_obligatoire fichier1 fichier2 …

grep affiche la ligne qui contient la chaine. Par défaut, la chaine peut être dans un mot( pas obligé mot entier).

4)sort

sort : tri des lignes d’un fichier.

cat name

martin
dupont
durant

sort name

dupont
durant
martin

5)touch

La commande touch permet de créer un fichier vide.

touch nom_fichier
si le fichier existe déjà, touch modifie son heure de dernier accès, et met l’heure courante.

6)uniq

uniq : affichage d’un fichier ligne par ligne , sans les doublons(contigues).
uniq nom_fic

RETOUR HAUT