Unix Chapitre 2: Les Commandes de Base Du Système UNIX
Unix Chapitre 2: Les Commandes de Base Du Système UNIX
ATTENTION: Pour une meilleure comprhension des notions dveloppes dans ce chapitre, nous vous invitons le suivre page par page, en commenant par le chapitre "Notion de commande".
NOTION DE COMMANDE
Une commande est une suite de mots spars par au moins un espace. Le premier est le nom de la commande, suivi par une liste facultative d' options d'arguments . et
Il est possible d'crire plusieurs commandes sur la mme ligne. Le sparateur de commandes est le ";" Quelques exemples de commandes :
ls ls ls ls ls ls ls -l -l -a -la -al bidule -l bidule ]
La commande
man
Dfinition
Cette commande donne accs au manuel en ligne du systme en vue d'obtenir de la documentation.
Syntaxe
man [section ] nom de la commande
Exercice
Puis :
man 2 intro
et enfin :
man 3c intro
Dans ce chapitre, nous allons aborder la notion de systme de fichiers, pour cela nous donnerons la dfinition d'un fichier, les diffrents types de fichiers existant sous Unix ainsi que les chemins d'accs. Nous dtaillerons aussi les commandes de gestion de fichiers et de catalogues. Le chapitre se divise en :
la dfinition d'un systme de fichiers, les principales commandes de manipulation de fichiers, les principales commandes de manipulation de rpertoires.
LE SYSTEME DE FICHIERS
Qu'est-ce qu'un fichier ? Un fichier UNIX est une suite de caractres non structure. UNIX n'a pas la notion d'organisation de fichier (indexe, relative, etc ...). A tout fichier est attribu un bloc d'informations appel noeud d'index ou i-node. Cet i-node contient des informations gnrales concernant le fichier:
sa taille (en octets), l'adresse des blocs utiliss par le fichier sur le disque, l'identification du propritaire du fichier, les droits d'accs des diffrents groupes d'utilisateurs, le type du fichier, un compteur de liens, les dates des principales oprations (cration, mise jour, consultation).
Remarque: le i-node ne contient pas le nom du fichier. Les types de fichiers Dans le systme UNIX il existe 3 types de fichiers:
Les fichiers ordinaires peuvent tre : o des programmes excutables (compilateurs, diteurs, tableurs, ...)
Il n'y a pas de format respecter pour le nom des fichiers UNIX (jusqu' 256 caractres).
Les fichiers spciaux : Ce sont des fichiers associs un dispositif d'entre/sortie (E/S) physique. Ils sont traits par le systme comme des fichiers ordinaires mais la lecture et l'criture sur ces fichiers activent les mcanismes physiques associs (drivers). Il existe 2 types de fichiers spciaux: mode caractre : E/S ralises caractre par caractre (terminaux, imprimantes, lignes de communication, ...) mode bloc : E/S ralises par blocs de caractres (disques, bandes). Les rpertoires : Contiennent les couples (i-node, nom de fichier). On ne peut crer, effacer, lire ou crire dans des rpertoires qu'au moyen de primitives systmes spcifiques. Les rpertoires sont aussi appels catalogues ou directories.
. (point) dsigne le rpertoire courant. .. (point point) dsigne le rpertoire pre du rpertoire courant. / (slash) dsigne la racine de l'arborescence des fichiers. Dans la dsignation d'un chemin, c'est un sparateur de catalogue. ~ (tilde ) dsigne le "home directory" de l'utilisateur.
Chemin d'accs un fichier ou un rpertoire : Le chemin d'accs un fichier (ou un catalogue) est la description qui permet d'identifier le fichier (ou le catalogue) dans la hirarchie du systme. Le chemin d'accs correspond en une suite de noms de rpertoires spars par des caractres / (slash) et termin par le nom du fichier ou du rpertoire. Ainsi le chemin d'accs suivant :
/users/fudmip/prof/.login
reprsente le fichier .login qui se trouve dans le catalogue profcatalogue de connexion lui-mme plac sous le catalogue fudmip, lui-mme contenu dans le catalogue users qui se trouve sous la racine /. Remarque : Le caractre / marque la sparation entre catalogues lorsqu'on dcrit le "chemin d'accs" un fichier ou un catalogue. CHEMIN D'ACCES A UN FICHIER Il y a deux faons de spcifier le chemin d'accs (pathname en anglais) un fichier :
soit on dcrit le chemin partir de la racine (/) c'est donc un chemin d'accs absolucomme vu dans la page prcdente Exemple:
/usr/lib/libc.a /etc
soit on dcrit le chemin partir du catalogue courant relatif (il ne commence donc pas par un / ).
, c'est un chemin
MANIPULATION DE FICHIERS
La commande ls
Dfinition
Cette commande affiche les caractristiques catalogue. des fichiers contenus dans un
Syntaxe
ls [-options] [fichiers ou rpertoires]
Exercice
De nombreuses options sont disponibles.
Testez la commande ls /tmp : vous visualisez ainsi le contenu du rpertoire Testez ensuite la commande ls -l /tmp qui permet de lister tous les fichiers de faon complte avec les modes, les groupes, les crateurs et les dates. Testez la commande ls -al et constatez que les fichiers cachs (commenant par un point) apparaissent cette fois-ci. Testez enfin la commande ls -i /tmp et constatez que l'inode de chaque fichier est affich.
/tmp
La commande cat
Dfinition
Cette commande permet d'afficher le contenu d'un fichier dont le nom est pass en paramtre. En ralit la commande cat concatne le contenu de tous les fichiers passs en arguments et envoi le rsultat sur l'cran Elle permet aussi de crer un fichier en utilisant la redirection d'E/S (>).
Syntaxe
cat essai.c cat > truc
Exercices
1) Afficher le contenu d'un fichier :
Visualisez le contenu de votre rpertoire courant Choisissez un fichier et visualisez le avec la commande cat
2) Crer un fichier :
Crez un fichier texte nomm toto dans votre rpertoire : cat > toto Saisissez un texte Pour terminer votre fichier, taper ^D en dbut de ligne . Votre fichier toto est maintenant cr, pour vous en assurer, vous pouvez le visualiser en tapant la commande cat toto
La commande more
Dfinition
Cette commande permet d'afficher le contenu d'un fichier avec arrt chaque page. On peut alors utiliser :
la touche ESPACE pour passer la page suivante, la touche h pour avoir l'aide, la touche q ou ^D pour sortir de more. , il en existe
Remarque : la commande more fait partie de la famille des pagers d'autres pg, less, ...
Syntaxe
more
mon-fichier
Exercice
Visualisez le contenu de votre rpertoire courant Choisissez un fichier et visualisez le avec la commande more en testant les diffrentes options qui sont votre disposition en tapant h.
les premires lignes : head les dernires lignes : tail certaines lignes : grep des parties de lignes : cut
La commande head
Dfinition
Cette commande affiche les premires lignes d'un fichier. Des options permettent de modifier le nombre de lignes afficher.
Syntaxe
head [-n] [fichier1] [fichier2 ...]
Exercice
- Crez un fichier nomm bidule de 10 lignes - Affichez les 3 premires lignes de bidule
La commande tail
Dfinition
d'un fichier. Cette commande affiche les dernires lignes Des options permettent d'en modifier le nombre par dfaut.
Syntaxe
tail [+/-n] [fichier]
Exercice
- Crez un fichier nomm bidule de 10 lignes - Affichez les 5 dernires lignes de bidule
La commande grep affiche toutes les lignes contenant le mot define du fichier
Fich.c
Les options v et n permettent respectivement d'afficher toutes les lignes ne contenant pas la chaine de caractres recherche ainsi que le numro de ligne. Dans l'exemple suivant nous recherchons les lignes ne contenant pas le caractre ESPACE.
La commande grep
Dfinition
La commande grep affiche toutes les lignes d'un fichier contenant la chane de caractres spcifie en argument. Il est possible d'utiliser des mtacaractres pour dfinir la chane rechercher.
Syntaxe
La syntaxe de base est :
grep chane fichier
Exercice
ou
selon la variable disponible sur votre systme. Pour connatre l'ensemble des variables d'environnement de votre systme excutez la commande env
La commande cut avec l'option -c2-5 affiche les caractres du 2 ime au 5 toutes les lignes
ime
de
Pour afficher les six premiers caractres et le 10 ime de toutes les lignes :
Un caractre sparateur peut dlimiter des champs dans une ligne (: par exemple) cut peut alors slectionner certains champs dans toutes les lignes du fichier.
L'option -f permet de dterminer le champ slectionner. L'option -d permet de spcifier le caractre sparateur de champ. L'exemple suivant slectionne les champs 1 et 7 du fichier passwd, le sparateur de champ est ici :.
La commande cut
Dfinition
Cette commande permet d'afficher une partie de chaque ligne du fichier pass en paramtre. Remarque grep affiche tout le contenu de certaines lignes, :
cut affiche une certaine partie de toutes les lignes, comme indiqu dans
l'exemple
Syntaxe
cut -cliste fichier1 [fichier2 ...] cut -fliste [-dcaractre] fichier1 [fichier2 ...]
liste d'entiers ou intervalles indiquant les caractres afficher -dcaractre prcise le sparateur de champ -fliste liste d'entiers prcisant le n des champs afficher
-cliste
Exercice
Affichez les 10 premiers caractres de chaque ligne du fichier /etc/passwd Affichez les champs 1 et 5 du fichier /etc/passwd
COPIER UN FICHIER
L'option -R permet de copier toute une hirarchie (bricabrac) sur un catalogue que l'on prcise en argument (boite).
La commande cp
Dfinition
Cette commande permet de copier des fichiers. L'option -R autorise la copie de catalogue .
Syntaxe
cp fic-source fic-cible cp fic-source ktal-cible cp -R ktal-source ktal-cible
Exercices
DETRUIRE UN FICHIER
Il est possible de spcifier plusieurs fichiers dtruire. L'exemple suivant efface 3 fichiers (Fic1, Fic2, Fic3) en demandant confirmation:
La commande rm
Dfinition
Cette commande permet de dtruire les fichiers passs en paramtres. De nombreuses options de cette commande sont pratiques mais dangereuses ! Par dfaut, la commande rm ne demande aucune confirmation : les fichiers sont donc irrmdiablement perdus.
Syntaxe
rm -[Rfi] mon-fichier rm -i mon-fichier rm -f mon-fichier rm -R mon-fichier
Exercices
Crez les fichiers ii, jj et truc l'aide de la commande: touch ii jj truc. Effacez le fichier truc. Effacez le fichier ii et jj en demandant confirmation.
Dplacement du fichier Fic3 dans le rpertoire boite en changeant son nom en Fic2:
Dplacement du fichier Fic4 dans le rpertoire boite sans changer son nom:
Affichage du rsultat:
La commande mv
Dfinition
Cette commande permet de dplacer ou de renommer un fichier ou un rpertoire.
Syntaxe
Renommage d'un fichier :
mv mon-fichier nouv-fichier
Exercices
Crez les fichiers un, deux et trois l'aide de la commande: touch un deux trois. Renommez un en 1. Renommez deux en 1.
Vous avez perdu le contenu de l'ancien un vous auriez du utiliser -i qui aurait demand confirmation avant d'craser.
COMPARAISON DE 2 FICHIERS
UNIX met a disposition 2 commandes pour comparer le contenu de fichiers :
cmp indique si les contenus des fichiers sont les mmes. diff affiche les modifications apporter pour les rendre identiques.
La commande cmp compare le contenu des 2 fichiers passs en paramtre (ii et jj) :
La commande cmp
Dfinition
Cette commande permet de comparer le contenu de 2 fichiers. Elle affiche le numro de ligne et de caractre de la premire diffrence rencontre.
Syntaxe
cmp fichier1 fichier2
Exercices
Crez 2 fichiers, essai1 et essai2 pratiquement identiques, Comparez les 2 fichiers Modifiez l'un des 2 fichiers avec les indications renvoyes par la commande cmp pour les rendre identiques Comparez les 2 fichiers
La commande diff
Dfinition
Cette commande retourne les modifications apporter au premier fichier pass en paramtre pour le rendre identique au second. Le rsultat de la commande diff est affich suivant la syntaxe:
N de lignes dans le 1er fichier dans le 2me fichier < contenu du 1er fichier --> contenu du 2me fichier action effectuer N de lignes
Syntaxe
diff [-e] fichier1 fichier2
Exercice
Crez 2 fichiers pratiquement identiques Affichez les diffrences entre les 2 fichiers relancez la commande avec l'option -e pour constater que la syntaxe du rsultat est diffrente.
L'option + permet de spcifier le n du champ partir duquel le tri doit s'effectuer. L'option -t permet de spcifier le sparateur de champ qui est ici :.
Remarque : La numrotation des champs commence 0 (le tri porte ici sur le 2me champ). Il est possible de limiter le tri sur quelques champs conscutifs. L'option - permet de spcifier le dernier champ (exclus) sur lequel va porter le tri (ici le champ n2):
La commande sort
Dfinition
Cette commande permet de trier des fichiers. Les lignes sont classes en fonction d'un critre dtermin selon un N de champ dans la ligne.
Syntaxe
La syntaxe de base est :
sort [-t caractre +pos1 [-pos2]] ] [-r] [-n] [-o fichier-sortie] [-f] fichier1 [fichier2 ...]
Exercice
Crez un fichier client avec le contenu suivant : Regis;Etain;1000.00 Ursula;Forget;500.00 Hugues;Jonas;250.00 Daniel;Martin;600.00 Marthe;Pommier;4500.00 les valeurs numriques correspondent, par exemple, au crdit maximum de chaque client.
Triez les clients par ordre ascendant de crdit. Triez les clients par ordre descendant de crdit. Triez les clients par leur nom dans l'ordre alphabtique inverse. Triez les clients par leur prnom dans l'ordre alphabtique.
La commande wc
Dfinition
La commande wc compte les mots, les lignes et/ou caractres d'un fichier.
Syntaxe
wc [-lcw]
fichier
Exercice
Crez un fichier texte quelconque Comptez le nombre de mots du fichier cr Comptez le nombre de lignes Testez la commande wc sans option
La commande nl
Dfinition
La commande nl numrote les lignes d'un fichier.
Syntaxe
nl
fichier
Exercice
MANIPULATION DE REPERTOIRES
Les rpertoires servent ranger des fichiers et/ou catalogues. L'espace de travail de l'utilisateur est une arborescence de rpertoires et de fichiers. Des commandes UNIX permettent d'organiser et de grer cette hirarchie ( crer, effacer, parcourir, ...) Il y a un catalogue particulier chaque usager: le catalogue personnel. Ce catalogue est le sommet de l'arborescence de l'espace de travail de l'utilisateur, c'est le catalogue dans lequel il est plac la connexion (home directory).
Le catalogue de connexion est repr par la variable d'environnement HOME, mais aussi par le caractre ~. Gnralement le nom de votre rpertoire personnel est identique votre nom d'utilisateur. Les principales commandes sur les rpertoires:
Afficher le rpertoire courant : pwd Se dplacer dans l'arborescence : cd Crer un rpertoire : mkdir Effacer un rpertoire : rmdir Copier un rpertoire : cp
Dans l'exemple ci-dessus la commande pwd nous indique que nous sommes dans le rpertoire cours plac dans ubanell lui-mme plac dans fudmip du catalogue users situ sous la racine.
La commande pwd
Dfinition
La commande pwd affiche l'cran le chemin d'accs au catalogue courant.
Syntaxe
pwd
Remarque
Certains systmes maintiennent une variable PWD qui contient le chemin d'accs au catalogue courant. En shell csh (tcsh, ...) la variable cwd contient aussi le catalogue courant.
Exercice
La commande cd permet d'aller dans un rpertoire (dont on donne la chemin d'accs ici en absolu).
La commande cd
Dfinition
Cette commande permet de se dplacer dans l'arborescence des catalogues existants sur le systme.
Syntaxe
cd cd [ chemin relatif ] cd [ chemin absolu ]
Exercice
Affichez votre rpertoire courant. Placez-vous dans /tmp. Affichez votre rpertoire courant. Allez dans le catalogue lib qui se trouve sous /usr en spcifiant un chemin d'accs relatif. Affichez votre rpertoire courant. Revenez dans votre rpertoire de connexion.
CREER UN REPERTOIRE
La commande mkdir
Dfinition
Cette commande permet de crer des rpertoires, il faut bien sr pouvoir le faire, c'est--dire tre dans son espace de travail.
Syntaxe
mkdir [-p] nom-rpertoire
Exercice :
Crer le catalogue Ktal dans votre home directory. Crer le catalogue /tmp/$ USER .Ktal/Ktal en une seule commande mkdir.
DETRUIRE UN REPERTOIRE
La commande rmdir dtruit le catalogue pass en paramtre:
Pour effacer un catalogue non-vide, il suffit de le vider avant. La commande rm prog-PERL/* permet d'effacer tous les fichiers contenus dans le rpertoire prog-PERL:
Il est toutefois possible d'effacer un catalogue non-vide en utilisant la commande rm avec l'option -R ( utiliser avec prcaution):
La commande rmdir
Dfinition
La commande rmdir permet de dtruire des catalogues vides.
Syntaxe
rmdir [-f |-i] [-p] rpertoire rm -R rpertoire
Exercice :
COPIER UN REPERTOIRE
L'option -R de la commande cp permet de copier des catalogues:
Dfinition
Il est possible de dupliquer le contenu d'un rpertoire en utilisant la commande cp (copy) et l'option -r (rcursive). De cette faon, tous les fichiers contenus dans tous les sous-rpertoires du rpertoire copi seront copis galement.
Syntaxe
cp -r rpertoire-a-copier nouveau-rpertoire
Exercice :
- Crez un premier rpertoire que vous appelerez source dans votre rpertoire personnel en tapant la commande mkdir source - Placez vous dans ce rpertoire cd source et crez des fichiers textes quelconques l'aide de la commande cat , par exemple cat fichier1, cat fichier2, cat fichier3, etc ... - Maintenant, remontez dans le rpertoire parent en tapant la commande cd .. - Dupliquez le rpertoire source dans le rpertoire cible en tapant la commande cp -r source cible - Assurez vous que les fichiers contenus dans le rpertoire source existent bien dans le rpertoire cible en tapant : cd cible ls ou en tapant tout simplement ls cible