Vous êtes sur la page 1sur 48

1/48

Sommaire de tous les articles publiés par MacPlus dans la série Passez la commande.

Leçon n° 47 : l’éditeur vi Leçon n° 23 : cmp

Leçon n° 46 : les variables d’environnement Leçon n° 22 : find et locate

Leçon n° 45 : les variables & la commande echo Leçon n° 21 : touch

Leçon n° 44 les caractères spéciaux Leçon n° 20 : Cut

Leçon n° 42 : le shell Leçon n° 19 : le pipe

Leçon n° 41 : Commandes utiles Leçon n° 18 : les flux

Leçon n° 40 : bc Leçon n° 17 : Cat et More

Leçon n° 39 : df et du Leçon n° 16 : l’alias

Leçon n° 38 : uniq Leçon n° 15 : archivage &


compression

Leçon n° 37 : tr Leçon n° 14 : Mount et Umount

Leçon n° 36 : sort Leçon n° 13 : les joker

Leçon n° 35 : head et tail Leçon n° 12 : umask

Leçon n° 34 : wc Leçon n° 11 : chown

Leçon n° 33 : qlmanage Leçon n° 10 : le root

Leçon n° 32 : uptime Leçon n° 9 : chmod

Leçon n° 31 : fg et bg Leçon n° 8 : les droits

Leçon n° 30 : sleep Leçon n° 7 : ln

Leçon n° 29 : split et cat Leçon n° 6 : l’inode

Leçon n° 28 : kill Leçon n° 5 : mv

Leçon n° 27 : top Leçon n° 4 : cp

Leçon n° 26 : ps Leçon n° 3 : mkdir et rmdir

Haut de page
2/48

Leçon n° 25 : grep Leçon n° 2 : cd et ls

Leçon n° 24 : diff Leçon n° 1 : man

Haut de page
3/48

Le Terminal

Leçon n°1 : man

Mac OS X étant basé sur un système Unix, vous pouvez trouver dans le
dossier Utilitaires, lui-même situé dans le dossier Applications, une
application nommée Terminal. Pour résumer, elle sert d’interface avec la
couche Unix de votre Mac et permet de lui passer des ordres sous forme de
commandes.

Toutes les semaines nous nous pencherons sur une commande Unix,
d’abord les plus simples, ensuite les plus sérieuses. Autant que possible,
nous tenterons de rester à la portée de tous ceux qui voudraient s’y initier.
N’hésitez pas à solliciter l’aide des utilisateurs les plus expérimentés dans
les forums.

Penchons-nous sur la première commande que tout débutant se doit de


connaître s’il souhaite se lancer dans l’utilisation du Terminal : la
commande man. Abréviation de manuel, elle permet d’obtenir de l’aide
concernant un grand nombre de commandes utilisables dans le Terminal et
s’utilise en tapant man suivi de la commande sur laquelle on souhaite
obtenir de l’aide. Par exemple, si vous souhaitez obtenir des informations
concernant l’utilisation de la commande man, après avoir lancé le Terminal,
vous pouvez taper : man man

Il est implicite que toutes les commandes tapées dans le Terminal seront
validées par pression de la touche entrée ou retour chariot.

Une fois l’aide affichée, oui, bon... en anglais, vous pouvez naviguer en
utilisant les flèches haut et bas. Pour revenir tout en haut des explications,
tapez g et pour quitter l’aide : tapez la lettre q. A vous de découvrir la
suite...

Exercice : comment rechercher un mot dans le manuel affiché ?

-> /toto recherche la chaîne toto dans le résultat du man

-> Ensuite utiliser n pour trouver l'instance suivante de toto et shift-n pour trouver la
précédente.
De plus la navigation ligne par ligne avec les flèches peut être un peu fastidieuse.
On peut utiliser la barre d'espace pour avancer d'une page.

-> on peut aussi faire : man toto > ~/Documents/manToto.txt

Haut de page
4/48

on a le résultat dans le fichier texte manToto du répertoire Documents que l'on peut
tranquillement visualiser avec textedit.

Leçon n°2 : cd et ls

Quotidiennement lorsque vous naviguez dans l’arborescence de vos


fichiers, vous ouvrez et fermez plusieurs de vos dossiers à travers le Finder.
Chaque double-clic est repéré par l’interface graphique de Mac OS qui
signale à la composante Unix du système qu’il faut ouvrir un dossier. Les
commandes utilisées par ce dernier sont cd (change directory) pour ouvrir
le dossier, puis ls pour lister le contenu du dossier.

Vous pouvez tester directement l’utilisation de cette commande après avoir


lancé le Terminal (que vous trouverez dans le dossier Applications, puis
Utilitaires). Par défaut, le Terminal vous place dans le dossier utilisateur qui
vous est assigné. Sous le Finder, il est reconnaissable par l’icône
représentant une maison. Sous le Terminal, il est abrégé par le symbole
tilde (alt+n au clavier).
Pour naviguer dans votre arborescence de fichiers, il faut avoir quelques
informations :

en permanence, le dossier dans lequel vous vous trouvez, se nomme


point : .

en permanence, le dossier parent du dossier dans lequel vous vous


trouvez se nomme point point : ..

sous Mac OS X, la traduction en français des noms de dossiers en anglais


se fait à la volée par le Finder, donc dans le Terminal, lorsque vous listez le
contenu de votre dossier maison, vous verrez apparaître les noms anglais
de vos dossiers

il existe deux manières de définir l’emplacement d’un fichier ou d’un


dossier : le chemin relatif qui le nomme par rapport au dossier dans lequel
vous vous trouvez et le chemin absolu qui le nomme par rapport au dossier
"/" (aussi appelé la racine) qui contient tous les dossiers de votre
ordinateur. La commande pwd peut être utilisée pour afficher ce chemin.

Exemple, après ouverture du Terminal, vous êtes dans votre dossier


maison.

Pour lister le contenu du dossier courant, tapez : ls

Pour vous rendre dans votre dossier Public, tapez : cd Public

Pour lister le contenu de ce dossier Public, tapez : ls


Haut de page
5/48

Pour revenir dans votre dossier maison, tapez : cd ..

A noter que lorsque vous faites glisser un dossier ou un fichier sur une
fenêtre du Terminal, son chemin absolu apparaît dans le Terminal.

Exercice : si l’on considère que / représente le dossier situé en haut de


l’arborescence des dossiers et qu’il contient tous les autres dossiers
présents sur votre disque dur, quelles sont les commandes permettant de
l’atteindre, puis de lister son contenu ? Existe-t-il une commande qui
permette de lister le contenu de / sans s’y rendre au préalable comme c’est
obligatoire avec une interface graphique ?

-> cd /
ls
Si on s trouve dans le dossier maison, on peut aussi faire:
cd ../..
ls
ls peut prendre un chemin absolu ou relatif en argument. Donc quelque soit le
dossier courant, on peut lister le contenu de la racine, sans s'y rendre au préalable,
avec:
ls /

-> juste avec "cd" sans argument ont retourne dans le $HOME de l'utilisateur donc
en administrateur ce sera /Users/administrateur

-> Et ne pas oublier la touche TABULATION qui complète le nom :

cd Pub[TAB]
donne :
cd Public

-> Et la flèche haut pour refaire une commande sans la retaper !

Leçon n°3 : mkdir et rmdir

Avec le Finder, il est aisé de créer un dossier n’importe où puis de l’effacer.


Avec le Terminal, ce n’est pas beaucoup plus difficile. C’est la commande
mkdir qui permet de créer un dossier avec le Terminal (abréviation de make
directory). Pour l’effacer, il faudra utiliser la commande rmdir (abréviation
de remove directory). Attention bien sûr à ne commettre aucune bêtise, par
défaut le Terminal ne laisse aucune chance et ne demande aucune
confirmation.

Haut de page
6/48

Une fois ouvert le Terminal (dossier Applications puis Utilitaires), vous


pouvez tester l’utilisation de cette commande. Pour être sûr de commettre
aucun acte irréparable, créez via le Finder dans votre dossier maison, un
dossier nommé test (pomme+shift+n). Une fois le Terminal ouvert, entrez
dans ce dossier avec cd test.

Pour tester l’utilisation des commandes du jour :

tapez mkdir essai


comme le Terminal ne renvoie pas la confirmation que la commande a
bien été exécutée, on peut vérifier la création de ce dossier avec la
commande vu précédemment : ls
pour effacer le dossier essai, faites rmdir essai
puis ls pour vérifier que le dossier à bien été supprimé.

Une fois votre séance d’essai terminée, revenez sous le Finder et effacez le
dossier test par l’intermédiaire de la Corbeille de Mac OS X.

Exercice 1 : Dans le cas ou un dossier A contient un dossier B, quelle


commande faut-il utiliser pour supprimer le dossier A (et donc le dossier
B) ?

-> A noter, rmdir ne place pas le dossier à la corbeille. Il le supprime directement.


Par ailleurs, rmdir ne supprime qu'un dossier vide, pour supprimer un dossier
contenant quelque chose il faut utiliser la commande rm (qui sert normalement à
supprimer un fichier) avec l'argument -r. Cela donne donc :
CODE
rm -r Test (pour le dossier uniquement vide)
rm -rf Test (pour le dossier et tout ce qu'il contient)

-> Attentions aux tests... Si vous avez le malheur d'ajouter un "/" par erreur
(personne n'est à l'abris d'une faute de frappe, alors votre test ne se fera pas dans
votre dossier "test"... mais à la racine :-)

ex :

mkdir test <= yopla j'ai créé mon dossier test


cd test/ <= super je suis dedans
mkdir etc <= je me créé un dossier etc parce que je sais pas comment l'appeler
rmdir /etc/ <= mince, j'ai ajouté un slash avant ce qui veut dire que je parle du
dossier "etc" qui se trouve à la racine de mon disque dur

-> Ça m'étonnerait que ça fasse quoi que ce soit, même en administrateur (sans
sudo) car :

Haut de page
7/48

ls -l /etc
donne
lrwxr-xr-x 1 root admin 11 Aug 18 15:31 /etc -> private/etc
Mais de toutes façons, il vaut mieux effacer le dossier /etc que le dossier ~/Music
car on a plus vite fait de réinstaller le système que de ripper tous nos CDs. Bon, je
sais, tout les monde fait des sauvegardes ;-)

-> sudo rm -rf /*


ne fera rien si on est sur un compte standard.

-> de manière générale, il faut être extrêmement prudent pour utiliser la commande
'rm', il faut donc être sûr de ce que l'on supprime, pas d'autre solution dans
l'utilisation de 'rm'. Il ne faut, aussi, en aucun cas mettre un alias 'rm -i' par défaut,
car des fichiers système pourraient être perturbés et ne plus fonctionner. "Prudence
est mère de sûreté" ;-)

Exercice 2 : Quelle commande utiliser pour se voir demander une


confirmation avant effacement ?

-> Je ne suis pas sur que l'on puisse demander confirmation avant d'effacer un
dossier avec rmdir. Avec rm il suffit d'utiliser l'argument -i :

CODE
rm -ri Test (pour un dossier vide)
rm -rfi Test (pour l'ensemble : dossier et son contenu)

ex : rm -rfi Test
examine files in directory Test/? y
remove Test//.DS_Store? y
examine files in directory Test//Test? y
remove Test//Test? y
remove Test/? y

Leçon n°4 : cp

Point question aujourd’hui de retourner au primaire, quoiqu’il s’agisse


d’une base dans l’utilisation du Terminal, la commande cp permet à
l’utilisateur de copier un fichier dans un endroit choisi. Cette commande
utilise la syntaxe suivante :

cp fichier-d-origine fichier-de-destination

Par exemple, si vous mettez dans votre dossier maison, un fichier texte
(test.txt) sans importance puis si dans le Terminal (Applications puis

Haut de page
8/48

Utilitaires), vous souhaitez le dupliquer, vous devrez utiliser la commande


suivante :

cp test.txt test2.txt Il est ensuite possible de vérifier que tout s’est bien
passé avec ls.

Exercice : Quelle syntaxe doit-on utiliser si l’on souhaite que la copie de ce


fichier situé dans le dossier maison se fasse dans le dossier Documents ?

-> cp test.txt ~/documents/test2.txt

Leçon n°5 : mv

Dans le Finder, il est relativement aisé de déplacer un fichier en le faisant


glisser à l’aide de la souris. Mais que se passe-t-il réellement dans le
système lorsque vous relâchez votre fichier dans son nouvel emplacement ?

Le système utilise la commande mv. Elle permet de déplacer un fichier ou


un dossier d’un endroit à un autre. La syntaxe de cette commande est la
suivante :

mv fichierDepart dossierArrivée

Pour essayer cette commande dans le Terminal, placer via le Finder un


fichier test.txt dans votre dossier maison. Ouvrez le Terminal puis déplacez
le fichier vers le dossier Documents :

mv test.txt Documents

puis vous pouvez vérifier la réussite de la commande avec cd Documents


puis ls.

Exercice 1 : Comment faire pour copier un fichier d’un endroit à un autre,


sans être placé dans le dossier du fichier (ce qui est impossible par le
Finder) ?

-> Il faut préciser le chemin vers le fichier. Supposons que l'utilisateur titi ai un
fichier test.txt dans son dossier Séquences (Movies en anglais et donc dans le
terminal). Il ouvre le terminal et se trouve donc dans son dossier maison. Pour
mettre le fichier test.txt dans Documents il a plusieurs possibilités dont :

utiliser un chemin relatif (c'est à dire définit par rapport au dossier courant) :

CODE
mv Movies/test.txt Documents/
Haut de page
9/48

utiliser un chemin absolu (défini à partir de la racine) :

CODE
mv /Users/titi/Movies/test.txt Documents/

Exercice 2 : Comment faire pour obtenir à la fin de la copie, une


confirmation de la réussite de l’opération ?

-> Pour beaucoup de commandes du Terminal, l'option -v (qui veut dire verbose)
permet d'afficher des informations lors de l'exécution de la commande. Ex :

CODE
titi$ mv -v test.txt Documents
test.txt -> Documents/test.txt

Exercice 3 : Cette commande permet également de renommer un fichier.


Quelle est la syntaxe à utiliser ?

-> En plus ou à la place du dossier de destination, préciser le nouveau nom du


fichier.

Renommer le fichier sans le déplacer :

CODE
mv test.txt toto.txt

Déplacer le fichier dans Documents et changer son nom en même temps :

CODE
mv test.txt Documents/toto.txt

Leçon n°6 : l’inode

Dans le système de fichier unix utilisé par Mac OS X chaque fichier possède
diverses informations associées qui sont regroupées dans une structure de
donnée appelée inode, contraction des termes index et node (nœud en
français). Un inode est repéré par un nombre.

Un fichier régulier respectant la norme POSIX possède les attributs suivants


dont un certain nombre sont visibles dans le Finder avec Lire les
informations du menu Fichier :

- taille du fichier en octets,


- identifiant du périphérique contenant le fichier,
Haut de page
10/48

- identifiant du propriétaire du fichier,


- identifiant du groupe auquel appartient le fichier,
- numéro d’inode qui identifie le fichier dans le système de fichier,
- mode du fichier,
- date de dernière modification de l’inode,
- date de dernier accès,
- et compteur indiquant le nombre de liens physiques sur cet inode.

Exercice : Quelle option de la commande ls (cf. la leçon n°2) peut-on utiliser


pour visualiser le numéro d’inode ?

-> ls -i pour voir l'inode

Leçon n°7 : ln

Il existe en unix la possibilité de créer des liens entre les fichiers : les liens
physiques et les liens symboliques.

C’est le numéro inode (cf. leçon n°6) qui permet de réaliser le premier des
deux types de lien. Cette possibilité n’est pas offerte par l’interface
graphique de Mac OS X. Elle permet d’associer à deux fichiers, le même
numéro d’inode : virtuellement, il existe deux fichiers, mais sur le disque, il
n’existe qu’un seul emplacement où sont inscrites les données : c’est le lien
physique.
Un fichier essai.txt peut être lié physiquement à un fichier essai_lien.txt
(pas encore créé) en utilisant la commande suivante dans le Terminal :

ln essai.txt essai_lien.txt

En utilisant la commande ls -i, on vérifie que les deux fichiers possèdent le


même numéro inode. Si l’un des deux fichiers est modifié, l’autre le sera de
fait puisqu’ils ne correspondent en fait qu’à un seul emplacement physique
en mémoire. Si l’on supprime le fichier essai.txt, le contenu du fichier sera
toujours accessible par ouverture du fichier essai_lien.txt.

Un second type de lien entre deux fichiers existe : c’est le lien symbolique.
Son concept est repris dans Mac OS X sous le nom d’alias. La création d’un
tel lien entraîne la création d’un fichier contenant une référence du fichier
lié. La commande associée est une option de la commande ln :

ln -s essai.txt essai_lien_symb.txt

Dans le Finder, on peut vérifier que le fichier essai_lien.txt est bien du type
alias. Mais contrairement au lien physique, si l’on supprime le fichier

Haut de page
11/48

essai.txt, son contenu ne sera plus accessible, le fichier essai_lien_symb.txt


ne contenant plus que l’endroit où était situé essai.txt avant d’être effacé.
Exercice : Créez un dossier dans le Finder et à l’intérieur un fichier essai.txt,
rendez-y vous avec la commande cd (cd. leçon n°2) puis liez le fichier de
manière symbolique et physique comme vu au dessus.
Comment est symbolisé chaque type de lien après utilisation de la
commande ls -li ?

-> ~/Desktop/Term stefd$ ls -li essai.txt


2931589 -rw-r--r-- 2 stefd stefd 17 Feb 26 14:51 essai.txt
-> ~/Desktop/Term stefd$ ls -li essai_lien.txt
2931589 -rw-r--r-- 2 stefd stefd 17 Feb 26 14:51 essai_lien.txt
-> ~/Desktop/Term stefd$ ls -li essai_lien_symb.txt
2931774 lrwxr-xr-x 1 stefd stefd 9 Feb 26 16:00 essai_lien_symb.txt -> essai.txt

Leçon n°8 : les droits

En tant qu’utilisateur de Mac OS X, il est difficile de passer à côté du fait


qu’il existe un système de gestion des droits sur les fichiers. Qui ne sait
jamais vu conseillé de réparer les autorisations lorsqu’un
dysfonctionnement intervient dans le système ? Concrètement, ces droits
permettent de limiter les personnes ayant un accès à un fichier et les
opérations possibles sur celui-ci. Souvent considéré comme performant
aujourd’hui, il n’était lors de sa conception pas jugé excellent, mais face à
la déferlante Windows, il a tout de même su s’imposer.

Avant d’aller plus loin, il convient d’expliquer qu’il existe deux types de
droit sur les fichiers et les dossiers (qui ne sont, notons-le, que des fichiers
particuliers).

On distingue d’une part les droits de possessions : les utilisateurs sont


classés en trois catégories : le propriétaire du fichier u, les membres d’un
groupe auquel appartient le propriétaire g et le reste des utilisateurs o.

D’autre part, il existe des droits d’accès (ou d’utilisation) sur les fichiers,
ils portent sur trois opérations de base : la lecture r, l’écriture w et
l’exécution x.

On peut résumer ces droits de la manière suivante grâce aux lettres r, w et


x, précédés de la lettre d lorsqu’il s’agit d’un dossier :

rwx rwx rwx


utilisateur groupe autres

Haut de page
12/48

Par exemple, un fichier dont les droits sont résumés par rwxrwxrwx
autorise toutes les actions en lecture écriture et exécution pour tous les
utilisateurs. Pour limiter ces droits au seul possesseur du fichier, on
utilisera les droits suivants : rwx------. Mais si l’on souhaite que les
personne de son groupe puisse au moins voir le contenu des fichiers, on
octroiera la permission de lecture en utilisant la séquence d’autorisation
suivante : rwxr-----. A l’inverse, pour éviter des problèmes de
modification sur un fichier important, on pourrait autoriser la lecture pour
tous, mais interdire l’écriture et l’exécution en utilisant : r--r--r--.

Il est possible de visualiser ces autorisations via le Terminal en utilisant la


commande vue en première leçon : ls accompagné de l’option -l : ls -l. Ces
droits peuvent également être vus (et modifiés) via le Finder et l’option Voir
les informations du menu Fichier.

Nous l’avons vu, il est facile d’autoriser à un utilisateur l’accès à un fichier


tout en interdisant l’accès de ce même fichier à un autre, c’est ce que
permet la commande chmod dont nous parlerons la semaine prochaine.

Leçon n°9 : chmod

Dernière la couche Unix de Mac OS X il est permis de définir des droits


d’accès sur les fichiers pour limiter l’utilisation de ceux là en fonction de
l’utilisateur pour des opérations de lecture, écriture, exécution.
Pour modifier ces droits d’accès autrement qu’en passant par le panneau
d’information du Finder, on peut utiliser le Terminal et la commande
chmod.

Il existe plusieurs moyens d’utiliser la commande. La plus simple est


d’utiliser les abréviations évoquées la semaine dernière :

chmod mode nom_fichier

Par exemple pour retirer les droits de lecture d’un dossier créé avec la
commande mkdir test à toutes les personnes qui ne font pas partie du
groupe de l’utilisateur, on utilisera la syntaxe suivante :

chmod o-r test

avec o pour le groupe autre, - pour le retrait du droit et r pour le droit de


lecture. Pour le rétablir, on utilisera la commande :

chmod o+r test

Haut de page
13/48

Exercice 1 : Quelle commande peut-on utiliser pour retirer les droits de


lecture aux autres pour un dossier donné ? Quelle commande peut-on
utiliser pour retirer tous les droits aux utilisateurs du groupe et aux
autres ?

Exercice 2 : Nous avons vu le mode textuel d’utilisation de la commande


chmod. Il existe un mode octal qui en utilisant la conversion des lettres en
chiffres (1 pour l’exécution, 2 pour l’écriture, 4 pour la lecture). Quelle
serait la commande à utiliser pour attribuer tous les droits à l’utilisateur et
rien au groupe ni aux autres ? tous les droits à l’utilisateurs et les droits de
lecture au groupe et aux autres et enfin tous les droits à tout le monde ?

Leçon n°10 : le root


Le fait d’avoir des droits sur les fichiers pose le problème de la maîtrise
d’une machine doté d’un système gérant ses permissions de la manière
évoquée la semaine dernière. Pour permettre à une personne de garder la
main sur sa machine, le concept d’administrateur a été créé. Avec un
unique mot de passe, il peut avoir accès à tous les fichiers de son
ordinateur, quelque soit l’utilisateur qui possède le fichier et les droits qui
lui sont associés.
On comprend alors aisément pourquoi les auteurs de programmes hostiles
comme les virus ou chevaux de Troie cherchent à tout prix à obtenir un
accès de type administrateur et pourquoi de très nombreuses failles
découvertes dans les systèmes permettent d’obtenir illégalement des
privilèges d’administrateur à partir d’un simple compte utilisateur.

Sous Mac OS X, dans les préférences systèmes, menu Comptes, on trouve


une liste des utilisateurs de la machine avec comme précision le niveau
d’accès à la machine que possède chaque utilisateur. Ceux qui possèdent
un accès administrateur possèdent un niveau d’accès qui se rapproche du
root.

Les personnes qui possèdent un compte administrateur peuvent réaliser


des opérations habituellement interdites aux utilisateurs de base. Par
exemple, pour utiliser une commande qui nécessite de posséder des droits
spéciaux, on utilise la commande sudo (traduction de "super utilisateur
fait") avant la commande à utiliser. Par exemple, pour effacer un fichier sur
lequel on ne possède pas les droits, cela donne :

sudo rm monfichier.txt

Le Terminal invite alors l’utilisateur à fournir son mot de passe pour

Haut de page
14/48

exécuter l’opération. Attention, ni le mot de passe ni des étoiles


n’apparaissent à l’écran lorsqu’il est entré.

Leçon n°11 : chown


Il existe une sorte de super-utilisateur dans les systèmes basés sur Unix. A
contrario, il est possible de créer des comptes n’ayant pas ces privilèges et
ne dominant que ses propres fichiers et non ceux de la machine.

Aujourd’hui voyons l’utilisation de la commande chown qui permet de


changer le possesseur d’un fichier sur un système unix. Sa syntaxe, très
simple, est la suivante :

chown nom_utilisateur nom_fichier

Pour tester une telle commande, après avoir créé un dossier de test placez-
y un fichier texte puis par l’intermédiaire de Lire les informations du Finder,
changer le propriétaire du fichier. Vous pouvez ensuite vous rendre dans ce
dossier test par le Terminal et vous rétablir comme propriétaire, en utilisant
si nécessaire la commande sudo comme vu la semaine dernière :

sudo chown utilisateur test.txt

Exercice : Cette commande fonctionne aussi sur des fichiers spéciaux : les
dossiers. Comment faire dans ce cas pour changer le propriétaire de tous
les fichiers et dossiers inclus

-> sudo chown -R utilisateur dossier

Leçon n°12 : umask

Pour clore cette série d’introduction au fonctionnement des droits sous


Unix et donc sous Mac OS X, intéressons nous à la commande umask. Elle
permet de définir les droits attribués par défaut à la création d’un fichier.
En effet lorsqu’une application souhaite créer un fichier pour son
fonctionnement par exemple, elle n’est pas censée pouvoir attribuer tous
les droits à son fichier. La commande umask permet donc de définir une
limite sur les droits des fichiers créés.

Elle s’utilise de manière très simple avec le mode octal inversé de la


définition des droits. On utilisera la commande unix touch nom_du_fichier
qui nous permettra de créer rapidement un fichier avec des droits par
défaut pour tester cette fonction umask. Par exemple, si l’on souhaite que
Haut de page
15/48

les fichiers par défaut soient lisibles et modifiables par le propriétaire mais
seulement lisibles par le groupe et les autres (soit 755 en mode octal et
donc 022 en mode inversé), la syntaxe de umask sera la suivante :

umask 022

On peut vérifier qu’un fichier créé avec touch essai.txt aura bien les droits
définis par le umask en utilisant la commande ls -l.

Exercice : En cas de difficulté de compréhension du mode octal, il est


possible d’afficher la valeur de l’umask en mode texte avec les lettres r, w
et x vu précédemment. Quelle est l’option pour obtenir un tel affichage.

Leçon n°13 : les joker

Après avoir vu plusieurs commandes de base, Nous allons aborder les


caractères joker. Ces caractères sont très utilisés pour faire de recherches,
travailler sur des ensembles de fichiers rapidement ou encore éditer des
scripts. Il en existe deux particuliers à connaître pour faciliter l’utilisation
du terminal.

Le premier est le point d’interrogation : ?. Il remplace un caractère unique.


Par exemple, on souhaite lister les fichiers contenant dans mes dossiers
nommés MacPlus1 à MacPlus9. Il faut mettre une commande en suivant la
syntaxe suivante :

ls -name MacPlus?

Il s’affichera alors la liste des fichiers contenu dans les dossiers MacPlus1 à
MacPlus9, mais seulement, puisque le "?" ne remplace qu’un seul caractère.

Le deuxième est le *. Il remplace une chaîne de caractères. Il est beaucoup


plus vaste dans la recherche et il faut l’utiliser à bon escient. Exemple, si
l’on souhaite copier tous les fichiers mp3 dans un dossier. Il suffit d’utiliser
le joker de cette manière :

cp /Dossier1/*.mp3 /Dossier2

Ainsi, le * prendra tous les noms se terminant par .mp3. On peut bien
entendu utiliser le joker dans n’importe quel endroit du nom de fichier.
Exemple : la notation mac*plus prendra tous les fichiers commençant par
"mac" et se terminant par "plus".

Haut de page
16/48

Exercice :

Quels sont le ou les caractère(s) à inclure(nt) pour que les caractères joker
ne soient pas pris en compte lors d’une commande quelconque ?

Si l’on souhaite supprimer de son ordinateur les fichiers commençant par


"mac" et étant des fichiers textes. Quelles est la commande pour ce faire ?

Au vu de toutes les commandes vues jusqu’à présent, il peut être


intéressant de faire une revue de celles pour lesquelles l’utilisation d’un
joker facilitent leur usage.

Leçon n°14 : Mount et Umount


Nous allons aborder le problème de "mount" et "umount".

"Mount", pour monter un volume ou un périphérique ou un accès réseau, et


"umount", pour le démonter. La commande "mount" est très complète et de
multiples précisions peuvent lui être donnée. Sous MacOS X, on monte un
volume dès que l’on branche une connectique à l’ordinateur, que ce soit
USB ou CD, comme une gestion de protocole réseau. tous les volumes créés
et montés sont dans le répertoire /Volumes. Essayer de faire un "ls" dans ce
répertoire, vous devriez voir apparaître les différents disques utilisés dont
Macintosh HD.

Voici un exemple pour monter un volume réseau avec un autre ordinateur


Macintosh. Le protocole par défaut sous mac est nommé afp (pour apple
file protocol), on rentre donc la commande suivante :

sudo mkdir /Volumes/disque1

Ceci permet de créer le dossier dans lequel le volumes sera monté

sudo mount_afp afp ://user:pass@adresse/Macintosh\ HD /Volumes/


disque1

Cette commande monte en elle même le réseau. Ici on choisit de monter le


volume directement sur la racine de l’ordinateur cible, on peut bien
entendu préciser un autre dossier sur le disque. Maintenant si vous décider
d’aller regarder le dossier /Volumes/disque1 vous devriez voir le disque de
votre hôte. Attention de ne pas oublier le "sudo" pour vous donner les
autorisations root !

Pour démonter et se déconnecter, rien de plus simple, il suffit de rentrer


dans le terminal l’antagoniste de la commande précédente :

sudo umount /Volumes/disque1


Haut de page
17/48

Même si cette commande paraît simple, plein de paramètres peuvent la


modifier, il faut aussi bien connaître les différents réseaux pour s’estimer
autonome sur ce genre de commande.

Exercice : Pouvez vous monter un disque formaté en HFS ? et si oui quelle


est la commande a utiliser ?
il existe une commande nommée "hdutil", à quoi sert-elle ? Pouvez vous à
l’aide de cette commande ouvrir une image disque distante sans la
télécharger ?

Leçon n°15 : archivage et compression


Depuis les débuts de l’informatique, l’espace disque a toujours été un
problème pour archiver des données complètes, c’est pour cela qu’a été
inventé l’archivage et la compression de fichiers. Ces moyens sont
maintenant utilisés essentiellement pour rendre accessibles plus
rapidement au téléchargement des fichiers quelconques, archiver des
données, regrouper en peu d’espace des fichiers de manière simple. L’un
des points forts secondaires est aussi la sauvegarde de données sécurisées.
Bref, ces commandes sont essentielles pour qui veut faire de la sauvegarde.
De plus, la plupart des fichiers circulant sur la toile sont eux-même
compressés.

C’est ainsi qu’intervient l’archivage, qui sert donc à stocker des fichiers
dans un seul fichier. La fonction principale de l’archivage est celle du tar de
l’anglais Tape ARchiver, ce que l’on pourrait traduire par "archiveur pour
bande". Le tar, n’a pas comme but le gain de place, mais le regroupement
de données dans un seul et même fichier, pouvant contenir toute une
arborescence. Exemple simple de l’utilisation du tar :

tar -cv archive1.tar fichier1

Ici, vous archivez le fichier1 dans l’archive1.tar, vous pouvez indiquer le


chemin ou l’archive1 sera créée. L’option "-c" consiste à définir qu’il faut
créer une nouvelle archive, et l’option "-v", donne le mode "verbose" c’est à
dire que tar indiquera à la fin de l’opération les fichiers regroupés dans
l’archive. Vous pouvez aussi archiver plusieurs fichiers d’un coup, il suffit
pour cela de les séparer par un espace, ce qui donne :

tar -cv archive1.tar fichier1 fichier2 fichier3

La compression est la même chose que l’archivage, avec la compression en


plus, c’est à dire que le regroupement total prendra moins de place que les
fichiers libres sur un espace disque de départ. Il existe plusieurs types de
compressions et d’algorithmes définissant des compressions sans perte,

Haut de page
18/48

avec pertes, etc. Nous ne rentrerons pas dans les détails ici. Exemple de
commande simple :

gzip -v fichier1

Il sera alors créé un nouveau fichier archivé et compressé nommé


fichier1.gz. la fonction gzip est la même chose que le zip, mais en version
libre (le G pour le GNU, regroupement de projet libre tournant sur des
systèmes types Unix). Mais il est possible aussi de compresser directement
à partir de la fonction tar, comme ceci

tar -zcvf archive1.tar.gz fichier1

Ici nous avons simplement rajouté deux options, "-z" pour définir la
compression type gzip, et le "-f" pour l’autorisation d’écrire et lire les
fichiers compressés. Nous avons maintenant regroupé les fichiers, mais
comment faire pour les dés-archiver/décompresser, il suffit d’utiliser
comme d’habitude une commande antagoniste :

Pour la commande tar, il faut utiliser :

tar -xv archive1.tar

Le "-x" pour extraire tout simplement les fichiers de l’archive

Pour la commande gzip, il faut alors utiliser :

gunzip fichier1.tar.gz

Voilà, vous disposez maintenant de la base pour compresser ou archiver


simplement vos données, il existe bien entendu d’autres options sur ces
commandes. Mais faisons place aux exercices pour vous orienter dans votre
recherche.

Exercice : pouvez-vous lister les différentes commandes de compression/


archivage ? Quelles sont les différences entre ces diverses commandes ?
Quelle serait une commande possible pour archiver des fichiers sur un
ordinateur distant ?

Leçon n°16 : l’alias


Nous allons étudier une commande très utile pour configurer un peu plus
son Terminal. En effet, la commande alias permet de simplifier l’utilisation
de commandes, souvent redondantes, et modifiables par l’utilisateur.
L’alias permet donc de définir un raccourci pour une commande plus
complexe. Exemple ci-dessous avec la commande ls. Comme vous le savez,
la commande ls permet de lister le contenu d’un répertoire. A cette

Haut de page
19/48

commande, on peut ajouter des options pour afficher les fichiers de


différentes manières. Pour s’affranchir de taper à chaque fois des options
que l’on utilise tout le temps, il est possible de définir un alias de la
manière suivante :

alias lg="ls -al"

Ainsi, lorsque dans le terminal vous tapez lg, il affichera en fait le résultat
de la commande ls -al. Vous pouvez décliner à l’infini ces commandes
suivant votre utilisation. Pour retrouver tous les alias créés, il suffit de taper
dans le terminal la commande suivante :

alias

En conclusion, cette commande est simple, mais utile pour ceux utilisant
les shells tous les jours.

Astuce : lorsque vous créez un alias, il sera retenu seulement pour la


session en cours sur votre terminal, il faudra le re-configurer à chaque fois
que la session sera redémarré, il existe une alternative simple pour
sauvegarder ces nouveaux alias (pour toujours ), il suffit d’utiliser le
fichier .profile se trouvant dans le dossier /~/Utilisateur. Quelles sont les
procédures pour ce faire ?

Exercice : Comment faire pour modifier un alias déjà créé ? Que se passe-t-
il si on renomme un alias sur une commande du terminal existant déjà ?

Leçon n°17 : Cat et More


La commande cat permet d’afficher dans votre terminal le contenu d’un
fichier et notamment un fichier texte. Elle permet seulement de l’afficher et
non de l’exploiter, ceci dit, cette commande est très pratique associée à
d’autres commandes comme head ou tail pour afficher rapidement un
listing ou tout autre chose.
Elle est très simple, il faut taper la commande suivi du fichier :

cat fichier.txt

Maintenant, que se passe-t-il, si le fichier dépasse de votre écran en taille


de lecture ? Il faut faire défiler à l’aide du clavier ligne par ligne le
contenu... pas évident. C’est à ce moment qu’entre en jeu la commande
more.

La commande more présente trois options principales qui sont :

Haut de page
20/48

-s pour supprimer les lignes vides successives,


-d pour l’affichage d’un invité explicite en bas de page
et -c force le programme à effacer la page pour afficher la suivant.

On peut aussi afficher le fichier à une ligne précise avec more. Voyons les
exemples :

more -sn 12 /Desktop/fichier.txt, affichera le texte à la ligne douze, sans


vous montrer les interlignes.

Si vous maîtrisez ces commandes, il sera alors facile pour vous de retrouver
une ligne de code php ou HTML sur une page web ou pour tout autre fichier
à l’aide du Terminal. Cela permet aussi d’avoir un bon aperçu sans être
obligé d’ouvrir le fichier par un logiciel tiers.

Exercice : Si je souhaite savoir ce que mon fichier /.profile contient à la


ligne 2, quelle est la commande à effectuer ? Comment puis-je re-diriger le
résultat de ma recherche vers un fichier texte contenu dans mon répertoire
home, avec en outre, le numéro des lignes ?

Leçon n°18 : les flux


Nous avons vu la semaine dernière la commande cat. Cette commande
nous servira de support aujourd’hui pour comprendre les flux. Il existe en
effet différents type de flux, d’abord la sortie standard, par défaut c’est
l’écran du terminal. Il existe aussi la sortie d’erreur, dans notre cas c’est
aussi le terminal, mais selon l’application, cette sortie pourra être utilisée
différemment. Ces flux peuvent re-dirigés en fonction des besoin.

Si par exemple, la commande more fichier1.txt affiche sur l’écran le


contenu de fichier1.txt, il est possible de re-diriger cet affichage du
contenu du fichier 1 (la sortie donc) dans un fichier 2 :

more fichier1.txt > fichier2.txt

Si le fichier 2 n’existe pas, il est créé. S’il existe, son contenu est remplacé
par celui du fichier 1. Si l’on souhaite, au contraire, ajouter le contenu du
premier fichier au second, on utilise :

more fichier1.txt >> fichier2.txt

On peut aussi, quelque soit la commande, re-diriger sa sortie vers un


fichier en ajoutant après la commande X>Y, X représentant le flux à re-

Haut de page
21/48

diriger (1 est le flux standard, 2 est le flux d’erreur) et Y représentant la


nouvelle destination de ce flux. Pour l’exemple, si l’on souhaite re-diriger
la liste du contenu d’un dossier, on utilisera :

ls 1>fichier.txt

Pour vérifier que la liste des fichiers et dossiers est bien dans fichier.txt, on
utilisera la commande more ou cat.
Pour re-diriger, un flux d’erreur, même principe. Exemple avec une
commande qui n’existe pas, le flux d’erreur est re-dirigé de la sortie
standard vers un fichier :

sdqsd 2>fichier.txt

Pour finir on peut aussi re-diriger un flux vers un autre, par exemple, le
flux d’erreur vers le flux standard avec 2>&1 ou inversement le flux
standard vers le flux d’erreur 2>&1.

Exercice : Quelle commande permet de re-diriger un flux d’erreur vers un


fichier à la suite de son contenu ? Que permet la re-direction 1>/dev/null ?
Pour enchaîner deux commandes, il est possible de re-diriger le flux de
sortie standard vers une autre commande (nous le verrons la semaine
prochaine). connaissez-vous la syntaxe pour ce faire ?

Leçon n°19 : le pipe

Nous allons étayer l’utilisation du pipe, que l’on peut traduire par tube en
français. Historiquement, le pipe est né avec le Bourne_shell pour re-diriger
des flux vers une autre sortie, comme dans un tube, d’où son nom. Il est
représenté par ce symbole :"|" et s’obtient sous Mac en combinant les
touches "shift+alt+l" sur le clavier. Cette fonction permet de re-diriger une
sortie de commande standard vers une entrée d’autre commande standard
et se note ainsi :

commande1 | commande2

Ainsi, la commande1 va être exécutée et son résultat envoyé vers la


commande2 se qui donnera son résultat à partir de celui de la première.
Un exemple sera plus précis, si l’on veut lire sur un fichier texte seulement
les lignes 10 à 12, il suffit, ainsi avec l’aide du pipe de noté ceci :

head -12 fichier.txt | tail -3

Haut de page
22/48

Avec head, on sélectionne les douze première lignes et avec la commande


tail, on ne trie que les trois dernières lignes du fichier sur les douze lignes
déjà sélectionnées !
Les données sont envoyées depuis la première commande par paquets au
fur et à mesure de leur production.
Il est nécessaire de maîtriser le pipe pour pouvoir progresser dans le
Terminal et de comprendre son essence, car c’est une des principales
commande qui en fait sa puissance. Ainsi, en une ligne de commande, vous
pouvez réunir plusieurs fonctions et faciliter beaucoup de vos
manipulations qui seraient longues et redondantes sur le Finder.

Exercice : Comment faire pour trouver dans un fichier texte un mot


particulier ? Toujours dans un même texte, comment faire pour compter le
nombre de mots sur les dix premières lignes seulement ?

Leçon n°20 : Cut


Passons la commande cut au crible. Cette commande permet de
sélectionner une partie d’un fichier ou d’un listing contenu dans un fichier.
On peut sélectionner avec diverses options de la commande, le type de "tri"
et de capture possible d’une source. Elle s’utilise simplement et trouve son
utilité dans les scripts essentiellement ou associée avec le pipe pour
augmenter la précision de la commande.
On repère trois principales options :

-c qui délimite une position d’un caractère


-d sert à délimiter un champ de caractère
-f pour un listing complet, à utiliser avec -d par exemple.

Appliquons la commande : pour connaître une partie d’un fichier, la


colonne 2 à 6 par exemple, il faut utiliser :

cut -c2-6 nom_fichier

Cette commande m’affichera alors les caractères 2 à 6 d’un listing.

Pour être plus clair, prenons un autre exemple, soit le listing suivant dans
un fichier :

ABCDEFGHIJKL
ABCDEFGHIJKL
ABCDEFGHIJKL

Avec la commande précédente, le résultat afficher sera :

BCDEF
BCDEF
Haut de page
23/48

Pour spécifier plusieurs parties ou plages de différentes colonnes, on doit


séparer le tout d’une virgule, ce qui donne :

cut -c1-2,4-6 nom_fichier

Affichant alors les colonnes 1 à 2 et les colonnes 3 à 6.

On comprend alors assez vite l’intérêt, d’autant plus si la commande est


intégrée à un script. Mais passons à la pratique avec les exercices, à vos
claviers !

Exercice : quelle est la commande pour afficher directement un fichier d’une


colonne à la dernière sans connaître le nombre de colonne du fichier ?
Quelle est la commande pour afficher un champ particulier de caractère ?
Comment faire pour re-diriger le résultat vers un autre fichier ?

Leçon n°21 : touch


La commande touch présente deux fonctions principales. La première de
ces deux fonctions est celle de changer le timbre horaire du fichier, c’est à
dire qu’à l’aide de touch, on peut actualiser la date et l’horaire de création
de fichier. La deuxième fonction est celle de pouvoir créer un fichier ou un
ensemble de fichiers directement dans l’interpréteur de commande qu’est
le terminal. Bien entendu, le fichier créé possédera les droits par défaut,
ceux définit par votre umask. Cette commande touch n’est certes pas une
commande que l’on utilise régulièrement, on l’a retrouve bien entendu dans
les scripts et peut-être d’une aide précieuse pour éviter les re-compilation
longue lors de la modification d’un fichier sur un programme.

Voyons maintenant quelques exemples de son utilisation :

touch fichier1

Cette commande créée alors un nouveau fichier dans votre répertoire


home. On peut rajouter une extension pour directement avoir un fichier
texte par exemple.

Imaginons maintenant que l’on possède un fichier sur le bureau nommé


fichier2, l’on notera en chemin relatif comme suit :

touch Desktop/fichier2

Que se passe-t-il alors ? Si vous effectuez un ls -l avant puis après la


commande, vous remarquerez que le timbre horaire du fichier est alors
actualisé. Passons aux exercices, qui vous ferons manipuler les options de
cette commande.

Haut de page
24/48

Exercice : Quelle est l’option permettant de ne pas créer de fichier à l’aide


de la commande touch si ce fichier n’existe pas sur votre disque ?
Comment changer manuellement la date en imposant celle désirée sur un
fichier ? Comment créer un ensemble de fichier directement dans un
répertoire ? Et un petit rappel, quelles seront les permissions d’un fichier
par défaut si vous n’avez pas modifier l’umask

Leçon n°22 : find et locate

Si Spotlight ne suffit pas, voici pour continuer notre série Passez la


commande, deux commandes ayant pour vocation la recherche de fichiers :
find et locate.

Find fonctionne “à l’ancienne”, il parcourt et explore votre système de


fichiers à la recherche de résultats correspondant aux critères donnés. Il
faut préciser l’emplacement et le terme de recherche, par exemple :

find ˜/ -name "*peaches*"


Le résultat affichera tous les fichiers dont le nom contient "peaches" de
votre dossier personnel.

Locate, lui, se sert d’une base de données, à la manière de Spotlight. Celle-


ci est mise à jour régulièrement, mais pas de manière permanente, donc un
fichier récent ne sera pas trouvé. En revanche, les résultats de recherche
sont, à la manière de Spotlight, instantanés. Sa syntaxe est encore plus
simple que pour find, il suffit de faire suivre la commande du nom
recherché :

locate peaches

Exercice : Comment rechercher tous les fichiers ne terminant pas par "txt"
et datant d’après la création d’un hypothétique fichier ˜/document1.rtf ?
Comment forcer la mise à jour de la base de données locate ?
Comment faire en sorte que le terme de recherche ne soit pas sensible à la
case ?

Leçon n°23 : cmp


Cette semaine, c’est au tour de la commande cmp d’être décrite. Cmp vient,
pour la petite histoire de l’anglais "compare", voulant dire comparer. Ce
filtre permet donc, comme son nom l’indique, de comparer deux fichiers au
niveau de leurs contenus. Voyons un exemple, plus concret :

Haut de page
25/48

cmp fichier1 fichier2

Que s’affiche-t-il alors ? Si vous avez sélectionné deux fichiers texte, cmp
vous affichera alors le nombre de caractères et de lignes différant de l’un à
l’autre. Par contre si les fichiers sont identiques, rien ne sera affiché.

Deux options sont possibles pour cette commande :

la première, la plus complète, est l’option -l, permettant d’afficher octet


par octet les différences ainsi que la valeur de chacune d’entre elles.
La deuxième, l’option -s, n’affiche que les codes de retour.

Maintenant que vous connaissez les bases, place aux exercices de la


semaine, qui j’espère vous occuperont bien .

Exercice :

Comment désigner simplement l’entrée standard, et non un nom de


fichier ?
Comment renvoyer le stdout vers un autre fichier pour cette commande ?
Que désigne ici le terme "filtre" ?
Quels sont les codes retours de ce filtre ?

Leçon n°24 : diff

Nous allons passer au crible la commande diff.


Ce filtre permet de comparer deux fichiers ligne par ligne et possède pour
ce faire plusieurs options particulières. Diff peut aussi bien comparer deux
fichiers, que deux répertoires différents.
Nous allons ici détailler les principales options puis donner quelques
exemples d’utilisation.

les options principales sont les suivantes :

-a : permet de considéré les deux fichiers comme du texte (pratique lors


de la comparaison de fichiers binaires).

-b : permet de ne pas tenir compte des espaces dans le fichier.

-c : affiche seulement les changements ente les deux fichiers comparés

-d : permet l’affichage des lignes supprimées entre le fichier1 et le


fichier2

-r : permet de parcourir les sous-répertoires d’un répertoire initial

Haut de page
26/48

Prenons un exemple d’utilisation : je souhaite comparer deux fichiers, cela


donne :

diff fichier1 fichier2

Je rajoute au gré de mes désirs les options comme pour toute commande
UNIX normale permettant d’afficher diverses informations et d’en tirer une
lecture plus claire et précise. Je peux aussi renvoyer le résultat vers un
autre fichier comme vous avez pu le voir dans les précédentes leçons.

Exercice :

Comment notifier le sortie standard pour cette commande ?

Que signifie les rapports diff fournit lors de l’exécution de ce filtre ?

Quelle est l’option possible pour n’afficher que les différences du


fichier1 ?

Inversement, quelle est celle pour n’afficher que les différences du


fichier2 ?

Leçon n°25 : grep

Cette commande importante mais néanmoins complexe dans son


utilisation, qui permet une navigation efficace dans le shell.

Nous allons donc étudier la commande : grep, qui est plus précisément un
filtre. Pour la petite histoire, grep proviendrait de l’éditeur de texte ed et
signifierait : "global regular expression print", soit en français : "recherche
globale d’expression rationnelle”

(contribution provenant de forum -> recherche globale d'expression


régulière : [grep est un filtre qui permet de rechercher toutes les lignes d'un
fichier qui contiennent une certaine forme de texte[)". Ce qui voudrait dire en
langage moins barbare, que ce filtre permet de rechercher des expressions
dans un fichier.)

Donnons un exemple simple :

Je souhaite retrouver dans un fichier contenant du texte, un nom, ou une


ligne contenant une information, je tape alors :

grep nom fichier


Haut de page
27/48

Cela parait simple, pourtant si l’on pousse un peu la recherche et que l’on
veut étayer un peu plus, et utiliser par exemple des expressions telles les
jokers ou autres, cela se corse... Voici tout de suite un petit exemple de
cette utilisation possible :

grep ^[a-g] fichier

Le résultat de la commande n’affichera alors que les caractères de "a" à "g"


contenu dans le fichier. Mais ne vous inquiétez pas, nous aborderons grep
plus en détail dans une session prochaine.

(contribution provenant de forum -> Contrairement à ce qui est dit dans


la leçon, la commande "grep ^[a-g] fichier" affiche les lignes de "fichier" qui
commencent par une des lettres minuscules de 'a' à 'g'.)

Allez, parce que l’on est de bonne humeur, on vous donne quelques
options de ce filtre :

-c : affiche le nombre de lignes contenant la recherche.

-l : affiche les fichiers contenant la recherche.

-x : affiche la ligne correspondant exactement à la recherche.

Vous voilà parés pour les exercices, sachant qu’il vous reste à savoir utiliser
grep avec les expressions régulières (cf. ci-dessus) , ce qui n’est pas rien.

Exercice : Quelles sont les variantes possible de cette commande ? Quelles


sont les expressions régulières utilisables avec grep ?

contribution provenant de forum ->

Exemple pratique : la machine a l'air de fonctionner mais l'interface


graphique est en rade... que faire ? Arracher la prise de courant et la re-
brancher ? Ou appuyer 5 secondes sur le bouton d'allumage pour l'éteindre
puis la rallumer (même effet que précédemment).

Et bien, non, je me connecte en ssh à partir d'une autre machine (il faut
avoir une autre machine et le ssh ouvert...) et je tue le « loginwindow » avant
de redémarrer la machine proprement (parce que je suis feignant et que je
ne veux pas laisser des process orphelins). Mais comment trouver le
longinwindow en question ? Et bien avec un (le « auc » n'est pas obligatoire...)

ps -aucx | grep loginwindow

Haut de page
28/48

Donc, le grep me sert à sélectionner dans le résultat de la commande, ce qui


m'intéresse a priori. A faire aussi avec un ls quand on a un répertoire bien
fourni !

Leçon n°26 : ps

ps est une commande permettant d’afficher les processus en cours


d’utilisation ou non sur votre ordinateur, ainsi que les utilisateurs et les
ayant droits sur les permissions d’exécutions. Cette commande dispose de
beaucoup d’options permettant de compléter au mieux la demande de sa
recherche.

Mais des exemples valent toujours mieux que 10 paragraphes explicatifs :

Exemple premier, commençons par le début :

ps

J’obtiens alors un résultat de la sorte :

Que signifie les éléments présent :

PID : Processus IDentification , il définit le numéro d’identification du


processus en cours, il sert ainsi à nommer le processus, pour par exemple
le killer, ou limiter son utilisation (nous reviendrons plus en détails sur ces
opérations dans un cours postérieur).

TT : correspond au nom donné au terminal, parfois nommé tty (ce qui


donne TTYP1 par exemple).

STAT : définit son mode d’utilisation, par un code abrégé de lettre. Ce


code est disponible directement dans le man, soit sur internet et se
compose de beaucoup de lettre. En gros, il sert à savoir si le processus
utilise ou non la mémoire vive, son mode d’utilisation, s’il est en attente
d’information... Ce n’est en général, pour un débutant, pas ce qui nous
intéresse ici.

Time : C’est le temps d’utilisation processeur écoulé depuis l’ouverture


du processus.

Command : C’est le nom du processus .

Haut de page
29/48

Avec les diverses options, on peut ou non, rajouter plus de processus dans
l’analyse, ou plus de détails dans l’utilisation de la mémoire, du processeur,
de l’espace disque virtuel.... Bref tout savoir sur ce qui tourne sur votre
machine.

Exemple numéro deux :

une des commandes souvent utilisée pour avoir un aperçu complet des
processus en cours est la suivante :

ps -auxc

J’obtiens alors ceci ce genre d’informations :

Vous remarquerez que cette commande-ci est bien plus complète que le
simple ps.

Les options rajoutées sont les suivantes :

-a : affiche les informations de tous les utilisateurs suivant les


autorisations que vous avez.

-u : associe tous les termes que vous voyez en titre (c’est à dire USER, PID,
%CPU, %MEM, etc), et trie l’informations par l’utilisation du processeur.

-c : la colonne "command" affiche seulement le nom des exécutables, et


non le nom complet.

-x : affiche les informations de processus contrôlés en dehors du


Terminal.

Que signifie alors les termes utilisés en titre ? Nous avons en avons vu
quelques-uns déjà qui s’affiche avec la simple commande ps, quels sont les
nouveaux.
User : définit l’utilisateur.

PID : cf. plus haut.

%CPU : pourcentage d’utilisation du processeur.

%MEM : pourcentage d’utilisation mémoire.

VSZ : utilisation de la mémoire virtuelle.

Haut de page
30/48

RSS : la taille exacte de la mémoire utilisée par le processus.

TT : cf. plus haut.

STAT : plus complexe, permet de définir en gros où en est le processus


dans son utilisation (utilisé, en pause, zombie...).

Started : date de la création du processus.

Time : cf. plus haut.

Command : cf. plus haut.

Vous trouverez aussi parfois la notion de PPID, cela signifie tout


simplement le numéro du processus père, c’est à dire celui qui a lancé son
utilisation. Justement quel est le nom du processus qui n’a pas de PPID ?

Certes, je comprends que cet article vous bombarde un peu d’informations


et de listing, mais dans son utilisation il est très simple de voir ainsi quel
programme pose problème, ou au contraire, quel programme tourne
correctement.

Un exemple simple, je trouve que mon ordinateur, suite à un quelconque


problème rame un peu, devient lent... Inadmissible, me direz-vous, puisque
vous venez d’acquérir le tout dernier MacPro du moment. Avec la
commande ps, il est alors aisé de constater que parfois certains processus
peuvent prendre bon nombre de ressources suite à quelque problème. On
apprendra dans le futur grâce au dossier "Passez la commande" comment
gérer ces fauteurs de troubles.

Quoiqu’il en soit c’est un bon début d’aller faire un tour dans les processus
pour comprendre comment fonctionne sa machine et voir justement quelles
sont les utilisations en ressources de vos programmes.

C’est fini pour cette semaine, n’hésitez pas à utiliser le forum pour discuter
de vos trouvailles !

Exercice : Comment faire pour lancer un processus en tache de fond (il


existe deux possibilités au moins, quelles sont elles ?). Quelle commande
peut on utiliser pour lancer un processus en différé ? Quelles sont les
autres options possible ?

Haut de page
31/48

Leçon n°27 : top


Nous allons encore parler des processus en cours sur votre ordinateur, en
abordant la commande top. Cette commande permet, telle ps et ses options
d’afficher tout ce qui tourne, mais en temps réel. Passons tout de suite à un
exemple concret.

Ouvrez le Terminal, et tapez ceci :

top

Vous devriez alors apercevoir ceci :

Vous remarquerez que les valeurs changent constamment, normal, le calcul


se fait en temps réel. Vous pouvez comme d’habitude rajouter des options,
telles que :
-u : permet de classer les processus par utilisation du processeur.
1234 : vous devriez ne voir alors que le PID correspondant au nombre
tapé.

Pour quitter la fenêtre top, il faut appuyer sur la touche "q", ou effectuer un
"ctrl-c", ce qui coupe court à la commande en cours.

Enfin, pour conclure, nous faisons place aux exercices, qui cette semaine
vous ferons travailler les méninges .

Exercice : avec vos connaissances et le cours bien complet de la semaine


dernière, essayer de trouver à quoi correspond les titres des colonnes
(n’oubliez pas d’utiliser le man). Quelles sont les différences entre la
commande ps et top ?

Leçon n°28 : kill


Après avoir vu comment voir la liste des processus en cours, nous allons
cette semaine étudier la commande permettant de quitter ou de fermer ces
processus.
La commande principale pour ce faire est : kill.

Kill permet de "tuer" un processus, pour cela il existe plusieurs sortes de


niveaux, allant de 1 à 9 (pour information le niveau 3 correspond à un
Haut de page
32/48

pomme+Q, et le niveau 9 à un "forcer à quitter"). Pour définir le processus à


terminer, il suffit d’utiliser son PID.

Exemple d’utilisation, un des programmes refuse de se quitter


normalement, au lieu de passer par la fenêtre "forcer un programme à
quitter" que l’on obtient par alt+cmd+esc, on peut, rapidement par le
terminal de cette manière :

1 - identifier le processus à l’aide des commandes vu précédemment.


2 - le tuer de cette manière : kill -9 PID (remplacer PID par le numéro ad
hoc).

Attention : la commande kill ne s’exécute qu’en mode super-utilisateur.

Exercice : Comment peut-on programmer dans le temps un kill ? Que


signifie la commande kill -KILL ? Et pour finir, que définit la commande
killall ?

Cette semaine, nous vous conseillons une lecture très complète sur cette
commande écrit par Fabien Conus chez nos amis de Cuk (http://
www.cuk.ch/articles/3635).

Leçon n°29 : split et cat


Ou comment diviser et reconstituer des fichiers simplement. La commande
split coupe un fichier en plusieurs selon la longueur désirée.

Par défaut, la coupure se fait toutes les 1000 lignes. Autant dire que pour la
plupart des fichiers que l’on peut souhaiter couper, c’est une valeur
dérisoire comparés à des centaines de mégaoctets.

Par contre :

split -b 2048m fatfile.iso

Découpera le volumineux fichier en parts de 2 Go, la dernière part, elle,


faisant la taille restante. Les fichiers qui sont crées se nomment xaa, xab,
xac, etc. dans l’ordre alphabétique.

Pour un nom plus commun, on peut utiliser la syntaxe :

split -b 10m projet_entier.mov partie_pojet.

Haut de page
33/48

Le point de la fin est important, cela produira des fichiers de 10 Mo


nommés partie_projet.aa, partie_projet.ab, … jusqu’au dernier.
Ensuite pour reconstituer les bouts, la commande cat (cours n°17) qui se
contente d’afficher le contenu d’un fichier suffit largement.
En indiquant au terminal de créer un fichier à partir de ce que lit cat, les
différentes parties sont reconstituées.

cat xaa xab xac xad > fatfile.iso

Et l’on obtient le même fichier que l’original.

Exercice : Comment reconstituer un fichier découpé en partie.aa, partie.ab,


…, partie.bx, sans écrire les noms de chaque pièce ?

Leçon n°30 : sleep


La commande sleep permet de mettre en pause un processus ou encore de
lui faire attendre un certain temps avant de se lancer. Cette commande est
assez simple et peut s’avérer pratique pour le lancement d’un programme
en différé ou encore lors de l’exécution de scripts.

Elle s’utilise de cette manière :

sleep 10 ; echo bonjour

Où "10" signifie le temps en secondes d’attente avant de lancer la


commande echo bonjour. Ainsi au bout du temps requis, la commande
s’exécutera et vous verrez alors s’afficher "bonjour" sur votre fenêtre du
terminal.

Exercices : Que signifie ici le " ;" ? Que signifie l’affichage de ">0" dans
votre terminal lors de l’exécution d’une commande incluant sleep ?
Comment faire pour lancer cette commande en arrière plan ? Pour la faire
revenir au premier plan ? Et pour finir, comment faire pour stopper cette
commande le cas échéant ?

Haut de page
34/48

Leçon n°31 : fg et bg
Nous allons étudier quelques éléments de gestion des processus. Un ou
plusieurs processus peuvent tourner en arrière-plan ou en avant-plan.
Quelle différence ? En arrière-plan, le processus tourne, mais laisse libre le
prompt du terminal, il tourne donc en arrière, on ne le voit pas s’exécuter.
En avant-plan, c’est l’inverse, en ce sens que le terminal nous laissera la
main une fois la tache du processus fini. Prenons ici les exemples de fg
(pour foreground) et bg (pour background).

Tout d’abord, il faut stopper la commande en cours (la mettre sur pause),
utilisé alors le raccourcis clavier ctrl+z. Ceci met en pause le processus.

Vous devez ensuite écrire ceci :

bg

Ceci passe alors le processus en arrière-plan. Pour le faire revenir au


premier plan, rien de plus simple, il suffit de taper cette commande dans le
terminal :

fg

Faisant alors apparaître le processus en avant-plan.


Comment faire pour choisir un des processus lancer en arrière-plan si vous
en avez lancé plusieurs ? Il existe une commande, nommée jobs (rien à voir
avec Steve) qui permet d’afficher les processus en exécution dans un shell
(et seulement le shell sélectionné).

jobs

Cela affiche alors les commandes en cours d’exécution. Il suffit alors de


taper :

fg Numéro_du_jobs (ici le numéro est entre crochets).

Le processus correspondant au numéro du jobs s’affichera alors en avant-


plan.
Exemple en image avec la commande sleep :

Haut de page
35/48

N’oubliez pas alors les différentes commandes pour visualiser les processus
en cours pour optimiser votre gestion.
Exercices : Il existe différentes manière d’obtenir le même résultat par des
raccourcis claviers.... Quels sont-ils ?
Que signifie le symbole "&" placé en fin de commande ? Et les symboles
"&&" toujours placés en fin de commande ? Que signifie la commande jobs
exactement et quelles sont ses différentes options ?

Leçon n°32 : uptime


Nous allons voir une commande toute simple, mais pratique, Uptime.
Uptime permet en effet de voir le temps écoulé depuis le dernier démarrage
de votre ordinateur. Elle se tape comme suit :

uptime

S’affiche alors à l’écran, l’heure, le temps écoulé depuis le dernier


démarrage de votre machine, le nombre d’utilisateur(s) et, se compose de 3
derniers chiffres indiquant une moyenne.

Exercice : de quelle moyenne s’agit-il concernant les trois derniers chiffres ?


Indiquer par le résultat de la commande uptime ? Cette commande
dispose-t-elle d’options, et si oui, lesquelles ? A quoi peut-on relier uptime
à la commande w ?

Leçon n°33 : qlmanage


Confrontation de la belle et de la bête. Le Terminal, à l’aide de la
commande qlmanage, peut demander l’aperçu Quick Look (ou Coup d’œil)
présent dans Leopard d’un document indiqué.

qlmanage -p monfichier.psd aura pour effet d’ouvrir rapidement l’image


dans le petit encadré transparent de Leopard.

D’autres options sont disponibles, comme celle pour afficher une miniature
plutôt qu’un aperçu (-t), ou pour préciser manuellement le type du fichier
(-c) ou encore le générateur (moteur de lecture de Quick Look) à utiliser (-
g).

La commande affiche également dans le Terminal des informations sur le


chargement du document, et ne se termine qu’une fois la fenêtre Coup
d’oeil fermée.

Haut de page
36/48

Exercice :

Comment rendre la commande silencieuse et pouvoir continuer d’utiliser


son Terminal sans pour autant fermer l’aperçu ?

Leçon n°34 : wc
Nous allons traiter d’une petite commande qui peut être bien utile et qui
est toute simple. C’est le filtre wc, qui permet de compter au choix, les
octets, les mots, les lignes de vos fichiers contenant un minimum de texte.

La commande s’utilise comme suit :

wc fichier1

Il s’affiche alors une série de chiffre (nombre de lignes, de mots, d’octets),


puis le nom du fichier. Il existe plusieurs options pour faciliter la lecture.
Quelles sont ces options (il en existe au moins trois très utilisées) ?

Exercice : Comment transférer le résultat de cette commande sur un fichier


texte ? Comment faire pour calculer le nombre de lignes sur plusieurs
fichiers en même temps ? Et comme c’est Noël, comment découvrir ce qu’il
y a sous les papiers cadeaux à l’aide de votre Terminal :langue ?

Leçon n°35 : head et tail


C’est aux filtres head et tail de se dévoiler. Ces deux commandes toutes
simples permettent l’affichage d’un début de fichier pour head, et une
d’une fin de fichier pour tail. Elles s’utilisent comme ceci :

tail -24 fichier.txt

Cela retournera alors les 24 dernières lignes du fichier.txt. A l’inverse, avec


la fonction head :

head -24 fichier.txt

qui affichera alors les 24 premières lignes de ce fichier. Couplés avec des
commandes telles que grep, ces deux filtres peuvent s’avérer efficaces pour
la recherche et la visualisation rapide de documents à travers le terminal.

Exercice : Combien de lignes s’affichent si on ne précise pas leurs nombres


dans la commande ? Quelles sont les options possibles via ces
commandes ? Comment retourner le résultat d’une de ses commandes dans
un fichier quelconque ?

Haut de page
37/48

Leçon n°36 : sort


La commande sort, que nous allons étudier, permet de trier les lignes et le
contenu d’un fichier. Ainsi dans une liste de données, il vous sera facile de
lire le contenu dans un ordre chronologique, lexical, numérique, et autres.
Exemple de son utilisation :

sort fichier1

S’affiche alors le contenu du fichier, ligne par ligne, dans l’ordre


alphabétique. Vous devenez alors aisément qu’il existe de multiples options
à ce filtre. En voici quelques unes, qui peuvent vous être utiles :

r : inverse l’ordre de tri,


b : ignore les espaces placées en début de champ,
f : Non prise en compte des majuscules ou des minuscules.

Exercice : Sort, peut-il être utilisé pour trier des fichiers de type XML ?
Quelles sont les options possibles de cette commande ? A quoi sert l’option
k dans ce filtre et comment s’utilise-t-elle ?

Leçon n°37 : tr
Pour cette nouvelle leçon, nous allons encore aborder un nouveau filtre. Ce
filtre est tr, qui permet de faire une conversion de chaînes de caractères.
Elle s’utilise avec les outils de redirection tels que > ou <. Exemple
suivant :

Je souhaite convertir tout simplement les " :" par des "-" que contient mon
fichier. Je tape alors la commande suivante :

tr " :" "-" < fichier1

S’affiche alors, dans le prompt du terminal votre résultat. Vous pouvez


aussi convertir des chaînes plus complète, comme ceci :

tr ’[A-Z]’ ’[a-z]’ < fichier2

Ceci converti alors toutes les majuscules en minuscules du fichier.

Quelques options sont disponibles, en voici quelques unes :

Passez la commande (38) : uniq d : efface la caractère spécifié de la liste

s : Efface le caractère si il se répète plusieurs fois.


c : tous les caractères non définis dans la première chaîne sont convertis
suivant la seconde chaîne.
Haut de page
38/48

Exercice : Comment faire pour enregistrer vos modifications ? Qu’est-ce


que la notation octale (des caractères ASCII) et que représente alors ce sigle
\012 ? Comment faire pour se débarrasser de la ponctuation ?

Leçon n°38 : uniq


Uniq est la commande de la semaine. Ce filtre permet de supprimer les
occurrences récurrentes. Elle est très simple et s’utilise comme suit :

Ceci est le fichier sur lequel nous allons utiliser uniq, il se compose de mots
récurrents plus ou moins différents.

Voici le résultat avec la commande uniq.

Vous remarquerez ainsi que pour vérifier le contenu d’une liste cette
commande peut-être très pratique. Quelques options sont disponibles,
notamment :

c : permet d’afficher l’occurrence d’un mot.

Exercice : Comment compter l’occurrence de chaque mot contenu dans un


fichier à l’aide de tr, de sort, d’uniq et du pipe ?

Haut de page
39/48

Leçon n°39 : df et du
Nous allons aborder quelques commandes concernant le disque dur. Par df,
et du ; vous pourrez ainsi juger de l’état de la mémoire des disques ou de
leurs utilisation. df tout d’abord, concernant l’espace disque. Cette
commande toute simple se présente comme-suit :

df

S’affiche alors les tailles des disques, les différents points de montage ...
Voyons un peu plus en détails : sans options particulières, la place indiquée
sera en blocs de données. Le bloc est la plus petite unité de stockage de
votre disque. Ce concept dépend du type de formatage du disque (FAT,
NTFS et pour Unix, Ext3, mais il en existe d’autres encore). Dans tous les
cas, c’est difficilement abordable pour un utilisateur lambda. La solution
consiste donc à utiliser une petite option qui est la suivante :

df -h

Cela convertira les résultats en Mo, ou Go suivant l’espace (note d’humour


de la part des développeurs : le h désigne "human readable"). Vous pouvez
aussi utiliser l’option -k pour convertir les données en Ko (moins pratique
si l’on possède de gros disques durs). On note aussi qu’il existe plusieurs
points de montages, en effet sous Unix il existe des points de montage
pour les clef USB, les lecteurs optiques, les images .dmg, ou encore les
accès réseaux. Essayez de les reconnaître pour vous entraîner.

Il existe ensuite une autre commande permettant de visualiser la place prise


sur le disque dur pour chaque répertoires et sous-répertoires.

du

Affiche alors un résultat d’une longueur innommable si vous possédez


beaucoup de fichier au point de montage (ce qui est souvent le cas).
Comme df, les options h ou k permettent une lecture plus aisée. Ainsi pour
voir un répertoire on note :

du -h /repertoire1/repertoire2

Comme vous avez du le constater, ces commandes cachent en faites de


nombreuses options qui donnent tout leurs intérêts aux commandes.

Exercice : Analysez les diverses options de ces commandes et essayez de


les comprendre. Quelle commande dois-je taper à l’aide de du, sort et de
head pour trouver facilement les 5 plus gros fichiers de mon disque dur ?

Haut de page
40/48

Sur le Forum :

Ne pas oublier l'option « depth » qui permet de limiter la profondeur de la


recherche d'information. Donc, par exemple :

du -d 1 -h

Leçon n°40 : bc
C’est au tour de la commande bc. Cette commande permet tout simplement
d’effectuer des calculs via l’interprèteur de commandes qu’est le terminal.
bc permet aussi d’effectuer des calculs avec des entiers relatifs, ce que ne
permet pas le shell bash. Ainsi bc est souvent utilisé par les scripts
requérant des opérations numériques plus précises.

bc

En tapant ceci dans votre terminal, vous observerez alors que vous basculez
non plus sur le prompt du terminal, à votre habitude, mais à une ligne où
vous tapez directement votre calcul.

par exemple : 8*4, qui affichera alors 32.

Vous pouvez alors calculer tout ce que vous voulez, aussi longtemps que
vous le souhaitez.

Pour quitter cet interprèteur, il suffit de taper "quit" suivi de la touche


entrée.

Exercice : Que signifie sqrt(x) où x est un nombre entier ? Existe t-il


d’autres commandes permettant d’effectuer des calculs à partir du
terminal ?

Sur le Forum :

bc permet aussi d’effectuer des calculs avec des entiers relatifs, ce que ne permet
pas le shell bash.

CODE
Cronos:~ bruno$ bash
bash-3.2$ let i=-76
bash-3.2$ let j=6
bash-3.2$ echo $((i+j))
-70

Haut de page
41/48

bash-3.2$ echo $((i*j))


-456

bc permet surtout de réaliser des calculs en précision arbitraire (est-ce le bon terme
en français Exercices ?) alors que bash a une précision limité et ne donne donc pas
le bon résultat sur les gros nombres.

CODE
bash-3.00$ bc
1578954615864899 * 2493113483933876215
3936513043332413563653907829477285
quit
bash-3.00$ let i=1578954615864899
bash-3.00$ let j=2493113483933876215
bash-3.00$ echo $((i*j))
6862909958053416869

Leçon n°41 : Commandes utiles

Quelques commandes au goût du jour qui vont terminer cette session. En


effet, nous entamerons l’initiation aux interpréteurs de commandes, aux
scripts, et aux commandes plus complexes.

Tout d’abord, la commande clear qui a pour seul but de nettoyer l’écran de
votre terminal, vous redonnant un prompt propre et clair, sans rien au
dessus. Pratique pour se remettre les idées en place et repartir sur de
bonnes bases.

Elle s’utilise comme ceci :

clear

Ensuite, la commande who. Elle s’utilise comme la précédente et montre


comme résultat quelles sont les personnes connectées à votre système et
depuis quand. Elle possède quelques options permettant de connaître le
shell utilisé et autres. Elle s’utilise surtout en tant qu’administrateur réseau
pour surveiller et savoir qui est connecté à l’instant “ T ” sur un terminal.
Haut de page
42/48

Ensuite, quelques options de caractères peuvent s’avérer bien pratique. Tel


le "&" (l’éperluette). Ceci se met en fin de commande. Cela permet de lancer
l’application et de redonner la main au prompt.
JPEG - 8.3 ko

Exemple sur cette image

on lance l’application VLC en ligne de commande avec l’éperluette en fin,


cela indique le PID, pour contrôler le processus, puis rend la main
directement (l’exécutable se trouve dans le paquet VLC.app).

La commande man regorge aussi de petites options utiles. Ainsi

man -k connect

indiquera la liste des commandes qui contiennent le mot "connect".

Exercice : Essayez de trouver par vous même quelques commandes utiles et


de manipuler votre Mac qu’à partir de terminal.

Leçon n°42 : le shell

L’interprèteur de commandes est contenu dans chaque système


d’exploitation et permet un langage qui interagit directement avec la
machine, à partir de là, tout (ou presque) étant dit...

Sur Mac OS X, basé sur un système Unix de la famille des BSD, le shell
(autre nom de l’interprèteur de commande) permet comme vous l’avez
compris la discussion directe avec la machine, et, est de type Bash (Bourne
SHell) depuis Mac OS X 10.3.

L’avantage de ce genre de programme, est le fait que l’on puisse avoir


différents langages de scripts tel le Perl, ou le Python. Ils peuvent être
simples, comme très complexes et permettent de faciliter des tâches plus
Haut de page
43/48

ou moins redondantes. Il peut ainsi s’avérer efficace d’aller faire un tour


dans le Terminal pour comprendre une erreur sur une application.

A travers ce “ shell “ se trouvent plusieurs variables pré-définies. Ainsi, on


note la présence importante de PATH, indiquant le chemin d’accès de vos
programmes pour un lancement directement à partir du terminal. Pour
afficher ce "chemin", tapez :

$PATH

La semaine prochaine, après avoir récupéré nos oeufs de Pâques, nous


commencerons à utiliser ce shell dans des programmations plus
complexes. Il est donc utile de se familiariser avec les différents
interprèteurs de commandes et de bien saisir leurs différentes utilisations.

Exercice : Essayez de trouver les différents types de shell que votre Mac
peut vous fournir et de trouver les caractéristiques qui différencient chacun
d’eux. Comment faire pour changer d’interprèteur dans ce cas ? Quelles
sont les autres variables nécessaire pour le shell à l’instar de PATH ?

Leçon n° 44 : caractères spéciaux

Les caractères spéciaux ont un usage particulier dans le terminal. En effet,


lorsque vous donnez à un dossier un nom avec espace ou avec un accent, le
terminal l’interprétera différemment. Ainsi, il est important de les connaître
et de savoir les neutraliser.

L’espace : lorsqu’un nom contient un espace, il conviendra de le noter


comme-ceci dans le terminal :

nom\ dossier

Dans vos scripts, il faudra utiliser la notation ’nom dossier’ avec en amont
et en aval les quotes (touche 4 du clavier). Les accents ont un codage
particulier, par exemple " à " se note : a\314\200 et c’est le même style
pour les autres caractères comportant des accents. Autant abandonner ce

Haut de page
44/48

type de nom si on veut utiliser le terminal régulièrement. Ainsi, si vous


utilisez assez souvent le terminal, il conviendra de ne placer des accents
que rarement. Concernant les espaces, il existe un moyen simple que vous
avez déjà certainement rencontré, celui du tiret bas.
Exemple, pour nommer un dossier "nom de dossier", on utilise la notation :

nom_de_dossier

Il est possible bien sûr d’adapter ces notations à votre guise. Maintenant,
voyons le tilde, ou" ", qui s’obtient en combinant les touches "alt" et "n". Le
tilde vous ramène, lors de la notation d’un chemin, dans votre home, c’est
à dire dans "/Users/Votre_Nom", ou encore nommé chez les utilisateurs
Mac que nous sommes : maisonnette.

Cette notation simplifie ainsi le retour à votre home/maisonnette.


Entraînez-vous pour ces notations, les maîtriser donne ainsi une aisance
dans l’utilisation des fichiers et leurs manipulations dans le terminal.

Exercice : Comment utiliser l’astérisque " * " pour trouver un fichier avec
accents, sans utiliser le codage ?

Leçon n°45 : les variables et echo

Nous allons aborder le sujet des variables, avec quelques exemples


concrets. Tout d’abord, qu’est-ce qu’une variable ? Une variable désigne un
contenu modifiable à souhait. Lorsque vous allez programmer, vous allez
en général avoir besoin de références, de contenus, par exemple, faire
appel à un listing. Ce listing sera alors représenté par une variable que vous
allez définir. Bien entendu, une variable peut en inclure d’autres, et cela
devient vite compliqué… C’est pourquoi, il faut savoir les maîtriser
rapidement. Exemple, créons une variable macplus contenant l’adresse de
notre site internet, ce que nous noterons :

macplus=http://www.macplus.net

Ainsi, la variable macplus est créée.

Haut de page
45/48

Maintenant, nous souhaitons en voir son contenu. On utilise pour cela la


commande echo pour lire ce qu’elle contient :

echo $macplus

La commande “ echo “ sert à afficher du texte, et le contenu d’une ou des


variable(s).
Il faut savoir aussi que par convention, pour écrire une variable, on n’utilise
pas de " $ ", mais pour faire appelle à celle-ci, on note juste avant un " $ ",
comme dans l’exemple.

Exercice : Comment supprimer une variable ? Quelle est l’utilité de la


commande set, que nous verrons plus en détail lors de la prochaine leçon ?

Leçon n°46 : les variables d’environnement

Pour continuer sur la lancée des variables, nous allons aborder les variables
d’environnement. Ces variables particulières sont dynamiques et utilisées
par le système d’exploitation en permanence, c’est à dire Mac OS X dans
notre cas. Ces variables indispensables sont notées par convention en
majuscule d’imprimerie.
Ainsi, pour voir ce que contient la variable PATH, qui regroupe les chemins
de vos répertoires depuis lesquels sont lancés vos processus, on utilise
encore une fois la commande echo :

echo $PATH

Rappelez vous qu’il faut utiliser le signe "$" pour lire le contenu d’une
variable, quelque soit celle-ci. On peut bien entendu rajouter ou modifier
un répertoire à ce PATH. On utilise alors la commande export de cette
manière :

export PATH=$PATH :/repertoire/voulu/

Ici, nous avons pris l’exemple du PATH, bien entendu d’autres variables
d’environnement existent. Utilisez alors la commande env pour voir de
manière explicite les variables d’environnement disponible dans votre shell
Haut de page
46/48

et essayez de trouver leurs différentes utilités. La commande set peut-être


elle aussi utilisée, mais cette dernière listera toutes vos variables, et non
celles d’environnement seulement.

Un exemple concret pourrait être la récente mise à jour de Java proposée


par Apple le 29 avril dernier (voir la dépêche) : la mise à jour installait Java
en version 1.6.0_05 sans pour autant supprimer l’ancienne version ni
prendre le dessus sur cette dernière. Comment est-ce possible ?
Simplement, lorsqu’un programme Java doit s’exécuter, il fait appelle à une
variable d’environnement qui lui indique quel dossier contient la version de
Java à utiliser. La mise à jour d’Apple n’a donc pas modifié la dite variable
et pour utiliser par défaut cette nouvelle version, il suffirait de renseigner la
variable avec le chemin du répertoire qui contient cette mise à jour
1.6.0_05.

Exercice : comment modifier de manière permanente votre PATH (en


utilisant votre fichier de profile) ? A quoi sert la commande printenv ? A
quoi sert l’insertion d’un programme dans votre PATH (de manière
générale) ? Quel est le nom de la variable qui contient le chemin de la
version de Java à utiliser par défaut ?

Haut de page
47/48

Initiation aux éditeurs

Leçon n°47 : Vi

Avant d’aborder de manière plus précise les scripts, voyons comment les
écrire à l’aide de notre Terminal. Voyons Vi (prononcez Vihaille, à l’anglaise). Il
est un des éditeurs standards des systèmes UNIX, avec par exemple
“ Emacs ” et “ Pico ”, que nous verrons lors de prochaines leçons. Vi est un
éditeur très simple, mais qui perturbe beaucoup lors des premières
approches. En effet, ici, rien de graphique, tout se passe par touches de
raccourcis. Conçu pour être rapide et simple, on utilise peu de touches de
raccourcis, mais des “ modes “. Exemple, en mode commande, on se
déplace dans le texte avec les touches h, j, k, l. Mais si vous pressez alors la
touche insertion, les touches entre alors du texte, et nous sommes alors en
mode insertion.

Voyons quelques exemples concrets :

Pour lancer l’éditeur, je tape alors :

vi

S’ouvre alors une page avec quelques informations, le nom de l’éditeur, ici
Vim, pour Vi IMproved, qui se veut plus fournit et plus modulable. Ensuite,
les informations pour quitter l’éditeur, et pour avoir de l’aide. Alors pour
quitter, vous ferez simplement :

:q

Ainsi, il est nécessaire d’apprendre, et de connaître la liste des raccourcis et


des différents modes que propose Vi, ce que l’on peut obtenir par

:help

Pour passer du mode commande au mode insertion, pressez la touche i,


pour revenir au mode commande pressez la touche Escape. Lors du

Haut de page
48/48

lancement de Vi, vous êtes en mode simple, ou normal, vous pouvez alors
entrer les commandes décrites ci-dessus.

Exercice :
Que permet la commande : set ?
Essayez de découvrir les diverses fonctionnalité de Vi (configurer ses
raccourcis, les macros-commandes).

Haut de page

Vous aimerez peut-être aussi