Vous êtes sur la page 1sur 117

Stage Linux Utilisateur

Patrick Ducrot dp@ensicaen.fr http://www.ducrot.org


1

Plan du document
Historique de Linux . 3 Connexion au systme ..13 Prsentation de kde .. 17 Fichiers et rpertoires .. 22 Notions d'identifiant et de groupe 35 Les processus 44 Les droits d'accs .. 49 Le shell 60 Gestion des entres/sorties . 63 Les commandes tee/grep/cut/split/paste/comm/sort/diff/wc/find .. 66 La commande sed 79 La commande awk 86 Les scripts shell . 95 Les sauvegardes ..109 Automatisation de tches .. 112

-2-

Historique de Linux
-3-

Historique de Linux

Version 0.0.1 cre en Aot 1991 par Linus Torvalds, tudiant luniversit dHelsinki. Un appel contribution est alors lanc. Version 0.0.2 permet de faire tourner des logiciels libres GNU (compilateurs, ). Le code source de Linux passe sous licence GPL. 1991-1994, dveloppement anarchique de Linux qui devient progressivement un systme Unix complet.

-4-

Historique de Linux

1995, explosion d'Internet: Etend la communaut de dveloppeurs. Systme souvent choisi par les FAI pour ses qualits de robustesse et de performances. Apparition de socits prives (RedHat, Caldera, ). 1996, l'anne du dcollage: Certains logiciels sont ports sous Linux (Netscape, Corel). Dbut de la mdiatisation

-5-

Historique de Linux

Depuis 1997
Oracle

et Sun adopte Linux Linux se rpand dans les milieux scientifiques et professionnels spcialiss. De grands comptes dploient Linux (France Telecom, Cisco, ) Linux est une alternative srieuse au systme Windows dans le domaine des serveurs. Certains acteurs de Linux sont cts en bourse (RedHat, VA Linux).
-6-

Qu'est-ce que Linux ?


Linux est un systme dexploitation UNIX conforme la norme POSIX. Linux est un logiciel libre dvelopp de manire collaborative par des milliers de programmeurs (parfois bnvolement) rpartis dans le monde. Linux est indpendant des politiques commerciales.

-7-

Comment se procurer Linux ?


Par tlchargement sur les sites des diteurs. Beaucoup dditeurs: RedHat, Mandrake, Suse, SlackWare, Caldera, Debian, Par lacquisition de CD dinstallation (achat, change, fournis avec livres,).

-8-

Utilisation de Linux

Serveur de fichiers et dimpression (support de NFS pour les clients UNIX, SMB pour les clients Windows et AppleShare pour les clients MacOS). Serveur Internet/Intranet. Serveur dapplications client/serveur bti sur des gestionnaire de base de donnes. Station de dveloppement (beaucoup doutils sont sous forme de logiciels libres). Station bureautique (environnements graphiques de qualit et suite bureautique sous forme de logiciels libres). Etc.
-9-

Besoin matriel pour Linux


Linux nchappe pas linflation de besoin matriel. Un noyau 1.0 pouvait tourner avec 8 Mo de RAM et un processeur peu puissant. Aujourdhui une distribution moderne ncessite:

RAM de 64 Mo (128 Mo recommand) Disque de 100 Mo (1 Go recommand)

- 10 -

Le noyau

Au sens propre, le coeur de linux, constitu d'une structure monolithique et de modules. En charge de la gestion des ressources; il fonctionne en mode privilgi. Le noyau est tlchargeable sur http://www.kernel.org Les numrotations sont sous la forme x.y.z; par exemple 2.4.22 (pour connatre la version du noyau utilise: uname -a)
- 11 -

Les distributions

Linux = le noyau La distribution = tout le reste (shell, compilateurs, diteurs, outils, jeux, ...) Beaucoup de distributions existantes:

Non commerciale (par exemple debian) Commerciale (RedHat, Mandrake, Suse, ...). Distributions spcialises (par exemple tout un unix sur un cdrom).

- 12 -

Connexion au systme
- 13 -

Identification d'un utilisateur


Sous Unix, l'identification repose sur un "login" authentifi par un mot de passe. Unix est un systme multi utilisateurs, chaque personne doit donc tre clairement identifie ainsi que les permissions qui lui seront associes. Les permissions seront fonction de l'identifiant ainsi que du groupe d'appartenance.

- 14 -

Connexion au systme

- 15 -

Prsentation de kde

KDE ("Kool" ou "Kommon" Desktop Environment) est un bureau graphique bas sur X-Window. La 1re version du KDE a t oprationnelle en juillet 1998. Il existe d'autres alternatives de bureaux graphiques comme GNOME (Gnu Network Object Model Environment) dmarr en 1997. Les bureaux graphiques se sont largement inspir de l'interface de Microsoft Windows. Le KDE propose:

Un bureau (Desktop). Une barre de tches (tableau de bord, commande"kicker"). Un gestionnaire de fichiers (commande "konqueror"). Un gestionnaire de configuration (commande "kcontrol").

konqueror permet une gestion de fichiers plus convivial que les lignes de commandes et peut tre galement utilis comme navigateur internet.

- 16 -

Prsentation de KDE
- 17 -

Prsentation de KDE

contenu du bureau

raccourcis applications

bureaux virtuels

fentres actives

tableau de bord
- 18 -

Centre de contrle de KDE

- 19 -

Utilisation des lignes de commandes


Les commandes en ligne peuvent tre tapes dans l'outil "Terminal" (souvent dans l'option "Outils Systmes").

- 20 -

Les commandes de base


Les commandes permettent de grer les fichiers et rpertoires, de grer ses processus, Les commandes systmes sont en minuscules (les systmes Unix diffrencient les minuscules des majuscules). Changement du mot de passe: passwd

La forme gnrale d'une commande est: cmd -option1-option2 - argument1 argument2 Exemple: ls a l R /home/martin

(ou ls alR /home/martin)

Les systmes Linux autorise des libells d'options longs. Dans ce cas, l'option est prcde par - Exemple: ls --help

- 21 -

Les fichiers et les rpertoires


- 22 -

La hirarchie de l'espace disque


Les fichiers sont stocks dans une hirarchie de rpertoires et de sous rpertoires. Le rpertoire racine est not: /

Indpendamment du nombre de disques ou de priphriques (cd-rom, cl usb, ), il n'y a qu'une seule racine (diffrent de Windows). L'arborescence des autres priphriques sera accroche (monte) un sous rpertoire vide existant.

- 23 -

Prsentation de l'arborescence
/ /bin /usr/bin /usr/local/bin /boot /dev /etc /home /lib /usr/lib /usr/local/lib /mnt /root /tmp /usr /var
Racine du systme Commandes du systme Contient les fichiers noyaux de linux Contient les fichiers priphriques Contient les fichiers de configurations et de dmarrage du systme Contient les rpertoires personnels des utilisateurs Contient les bibliothques de dveloppement Rpertoire de montage des priphriques amovibles (cd-rom, disquettes, cl usb, ) Rpertoire personnel de l'administrateur Contient tous les fichiers temporaires Rpertoire principal des systmes unix (bibliothques, manuels, etc.) Partie "variable" du systme (traces d'activits, spool d'impression, botes lettres, )
- 24 -

Montage de disques

- 25 -

Les chemins

Pour copier, dplacer, dtruire des fichiers il faut connatre:


Les

commandes de gestion de fichiers. Le chemin d'accs aux fichiers.


Le chemin d'accs aux fichiers peut tre:


absolu

(indpendant du rpertoire dans lequel on se trouve). relatif (dpendant du rpertoire dans lequel on se trouve).

- 26 -

Le chemin absolu

Le chemin absolu est constitu de la suite des noms de rpertoires ncessaires pour atteindre le fichier partir de la racine. Exemples:
Rpertoire personnel de l'utilisateur "martin" Fichier "exemple" dans le rpertoire de "martin" Rpertoire des fichiers temporaires Copie d'un fichier /home/martin /home/martin/exemple /tmp cp /home/martin/exemple /tmp/exemple

- 27 -

Le chemin relatif

Pour le chemin relatif, on tient compte du rpertoire de travail (rpertoire courant). Exemples: cp exemple /tmp/exemple Trois noms de rpertoires particuliers: Le rpertoire . dsigne le rpertoire de travail. Le rpertoire .. dsigne le rpertoire pre. Le rpertoire ~ dsigne le rpertoire personnel Exemple: cp ../martin/exemple exemple

- 28 -

Exemples chemins relatif/chemins absolus


Le rpertoire de travail est /home/martin


Chemin relatif exemple ./exemple essai/liste.txt . .. ../../tmp Chemin absolu /home/martin/exemple /home/martin/exemple /home/martin/essai/liste.txt /home/martin /home /tmp
- 29 -

Commandes usuelles de gestion de fichiers et de rpertoires


Action Afficher le contenu Copier Changer de nom ou dplacer Se dplacer dans l'arborescence Crer un rpertoire Dtruire Afficher le rpertoire de travail rm Fichier cat more tail head ls cp mv cp -r mv cd mkdir rmdir pwd rm -r Rpertoire

- 30 -

Les liens

Il est possible de dfinir un autre chemin d'accs une opration en crant des liens. Il existe 2 types de liens:
lien

"dur" (hard link) lien symbolique


- 31 -

Lien "dur"
home

dp

pierre

fichier

Commandes excutes dans /home/pierre $ ln /home/dp/fichier monfichier $ ll /home/pierre -rw-r--r-- 2 root root 30 fv 1 14:32 monfichier $ ll /home/dp -rw-r--r-- 2 root root 30 fv 1 14:32 fichier

- 32 -

Remarques sur les liens "durs"


Pas de liens durs sur les rpertoires Pas de liens durs inter volumes Dtruire un fichier consiste dcrmenter le nombre de liens. Le fichier est effectivement effac lorsque le nombre de liens est gal zro.

- 33 -

Lien symbolique

home

dp

pierre

fichier

LienSurFichier

Commandes excutes dans /home/pierre: $ ln -s /home/dp/fichier LienSurFichier $ ll /home/pierre lrwxrwxrwx 1 pierre pierre 16 fv 1 15:00 LienSurFichier -> /home/dp/fichier

- 34 -

Notions d'identifiant et de groupe


- 35 -

Notion d'identifiant

Tous les identifiants sont dfinis dans le fichier /etc/passwd:

$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt nobody:x:99:99:Nobody:/: www:x:500:501:Serveur www:/home/www:/bin/nologin dp:x:501:234:DUCROT Patrick:/home/dp:/bin/bash pierre:x:502:501:DUVAL Pierre:/home/duval:/bin/bash

- 36 -

Le fichier /etc/passwd
dp:x:501:234:DUCROT Patrick:/users/dp:/bin/bash

uname mot de passe uid gid gecos homedir login shell


- 37 -

Le fichier mots de passe


Le fichier /etc/passwd doit tre lisible par tous. Par mesure de scurit, les mots de passe sont stocks dans le fichier /etc/shadow accessible au seul administrateur:

# cat /etc/shadow root:$1$XnR8T7M4$sA4gQkXpxehU7AO4XV7z0/:11327:0:99999:7:-1:: bin:*:10915:0:99999:7:: daemon:*:10915:0:99999:7:: adm:*:10915:0:99999:7:: lp:*:10915:0:99999:7:: shutdown:*:10915:0:99999:7:: halt:*:10915:0:99999:7:: nobody:*:10915:0:99999:7:: dp:$1$DuNQiY7n$67tnNC2dIG3Dj/HpEj3PY/:11327:0:99999:7:-1::

- 38 -

Le fichier /etc/shadow
dp:$1$DuNQiY7n$67tnNC2dIG3Dj/HpEj3PY/:11327:0:99999:7:-1::
uname mot de passe crypt Nombre de jours couls depuis le 01/01/1970 jusqu'au dernier changement de mot de Nombre de passe jours aprs lequel le mot de passe doit tre chang Numro du jour depuis le 01/01/1970 partir duquel le compte a t dsactiv

Nombre de jours avant l'expiration partir duquel l'utilisateur sera averti

Nombre de jours aprs expiration provoquant la fermeture du compte

- 39 -

Notion de groupe

Les systmes Unix dfinissent une notion de groupe; les groupes sont stocks dans le fichier /etc/group permettant d'associer un nom de groupe (gname) un numro de groupe (gid) ainsi que la liste de ses membres. Un utilisateur appartient un groupe principal (dfini dans le fichier /etc/passwd) et ventuellement des groupes secondaires.
- 40 -

Le fichier /etc/group
$ cat /etc/group root::0:root bin::1:root,bin,daemon daemon::2:root,bin,daemon sys::3:root,bin,adm adm::4:root,adm,daemon nobody::99: prof:x:234:dp users::501:pierre,dp

gname

mot de passe

gid

liste des membres

- 41 -

Modifications des informations d'un utilisateur


Chaque utilisateur peut modifier certaines informations le concernant:


Information modifiable Mot de passe Etat civil (gecos) Login shell L'utilisateur actif Le groupe actif passwd chfn chsh su newgrp
- 42 -

Commande

Quelques commandes

Connatre son uid, son gid et ses groupes secondaires grce la commande id:
$ id uid=501(dp) gid=234(prof) groups=234(prof),100(users)

Connatre des informations sur un utilisateur: $ finger dp Login: dp Name: DUCROT Patrick Directory: /home/dp Shell: /bin/bash On since Wed Jan 26 16:22 (CET) on pts/1 25 days 15 hours idle On since Wed Jan 26 16:22 (CET) on pts/0 No mail. No Plan.

- 43 -

Les processus
- 44 -

Gestion des processus


Pour identifier les processus, le systme d'exploitation leur attribue un numro appel PID (Process IDentification). Chaque processus ( l'exception du tout premier) est cr par un autre processus; le processus pre est reper par le PPID (Parent Process IDentification). Le tout premier processus porte le numro 1.
- 45 -

Visualisation des processus


Visualisation de tous les processus:


$ ps -ef UID root root root root root root root dp dp dp PID 1 2 3 19342 19385 19386 19455 19457 19458 19489 PPID 0 1 1 19340 19342 19340 2903 19455 19457 19458 C 0 0 0 0 0 0 0 0 2 0 STIME Jan25 Jan25 Jan25 09:13 09:14 09:15 11:29 11:29 11:29 11:29 TTY ? ? ? pts/0 pts/0 pts/1 ? ? pts/2 pts/2 TIME 00:00:05 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 CMD init [keventd] [kapmd] -bash vim ex1.awk -bash sshd: dp [priv] [sshd] -bash ps -ef

- 46 -

Interprtation dela commande ps


UID PID PPID C STIME TTY TIME CMD Nom de l'utilisateur qui a lanc le processus. Numro du processus Numro du processus pre Facteur de priorit; plus la valeur est grande, plus le processus est prioritaire. Heure de lancement du processus Nom du terminal associ au processus Dure du traitement du processus Nom du processus

- 47 -

Gestion de processus

Changer la priorit d'un processus:


nice -valeur commande Exemple: nice -5 ps -ef kill -n PID Exemple:

Envoyer un signal un processus:


kill -9 19458 Ctrl C Ctrl Z fg bg

Stopper un processus en avant plan:


Touches clavier: Touches clavier: En avant plan: En arrire plan: commande &

Suspendre un processus en avant plan: Reprendre l'excution d'un processus suspendu: Lancer un processus en arrire plan

- 48 -

Les droits d'accs


- 49 -

Les droits d'accs


Tout systme multi utilisateurs dfinit une politique de protection des fichiers fonde sur l'identification de l'utilisateur. Chaque utilisateur dispose d'un espace priv dont il est propritaire et sur lequel il possde le contrle total.
- 50 -

Permissions d'accs aux fichiers


Tout fichier appartient un utilisateur (son propritaire) et un groupe. Quand il est cr, le propritaire et le groupe sont l'uid et le gid actifs au moment de la cration. Les droits d'accs sont scinds en trois catgories d'utilisateurs:

les droits du propritaire (user) les droits des membres du groupe (group) les droits de tous les autres (other)

Pour chaque catgorie, on peut attribuer les droits suivants:


lecture (read) criture (write) excution (execute)

- 51 -

Exemple d'affichage de droits


$ ll
total 28 drwxrwx--7 bret drwx--x--x 14 dams drwx-----8 dcr drwx--x--x 130 dp -rw-r--r-1 root drwx-----5 kortex drwx-----7 mbuna drwx--x--x 19 mdx
type droits de propritaire fichier (u) droits des autres (o)

users irc irc users root irc irc irc

1024 2048 1024 10240 10240 1024 1024 2048


groupe

Sep Jul Nov Jan Jan Dec Feb Nov

10 2002 bret 19 2001 dams 11 2001 dcr 5 17:28 dp 20 2003 hping2.tar 14 2001 kortex 28 2002 mbuna 8 19:19 mdx

Nombre de liens (hard link)

taille en octets

propritaire

date et heure de dernire modification

droits des membres du groupe (g)

nom du fichier

- 52 -

Interprtation des droits


Fichier r w x
Visualisation du contenu du fichier Modification du contenu du fichier Excution possible du fichier

Rpertoire
Possibilit de lister le contenu du rpertoire Possibilit de crer et de dtruire des fichiers Permet de traverser le rpertoire pour atteindre un fichier
- 53 -

Le changement des droits


chmod options droits fichier(s) Notation symbolique des droits:


u g o ug uo go ugo a
- 54 -

r w + = x rw rx wx rwx

chmod: notation symbolique


Exemples: chmod g-r exemple chmod R g-x test chmod u+w ess* chmod go+r-x test chmod a=r exemple

- 55 -

chmod: notation octale


droits ----x -w-wx r-r-x rwrwx binaire 000 001 010 011 100 101 110 111 octal 0 1 2 3 4 5 6 7 7 5 4 Exemples: chmod 754 exemple chmod 700 exemple
- 56 -

rwx r-x r-111 101 100

Le changement de propritaire

chown options proprietaire:groupe fichier(s) Exemples: chown pierre exemple chown pierre:prof exemple chown pierre * chown R pierre * Qui peut utiliser la commande chown ?

- 57 -

Le changement de groupe

chgrp options groupe fichier(s) Exemple: chgrp prof test chgrp prof * chgrp R prof *

- 58 -

Les droits spciaux


Les droits sont reprsents par 4 octets: sst rwx rwx rwx Le SUID bit (Set User ID bit ou bit s)
r-s --x --x root user prog chmod u+s prog chmod 4511 prog

Le SGID bit (Set Group ID bit)


rwx -s r-x adm mail pine

Le sticky bit
rwxrwxrwt root root /tmp

- 59 -

Le shell
- 60 -

Les shells sous unix


Au dmarrage d'une session, un utilisateur peut taper et faire excuter des commandes lignes grce un shell. Le shell est la fois un interprteur de commandes (avec possibilit de grer des historiques de commandes, la compltion des commandes, ) mais est galement un langage de commandes. Les shells standards

Bourne Shell (/bin/sh) C-Shell (/bin/csh) Korn Shell (/bin/ksh) Bourne Again Shell (/bin/bash) et bien d'autres

On peut trouver une liste des shells autoriss sur une machine dans le fichier /etc/shells

- 61 -

Changement de shell

Changement dynamique et temporaire:


$ bash # empilement un bash $ csh $ sh # empilement d'un csh # empilement d'un sh

Changement permanent:
$ chsh -s /bin/sh dp # Changement dans le fichier /etc/passwd

- 62 -

Gestion des entres/sorties


A chaque commande est associe un canal d'entre et deux canaux de sortie.


stdout stdin 0 commande stderr Par dfaut: 0 = clavier 1 et 2 = cran
- 63 -

Redirection des entres/sorties


L'oprateur > redirige la sortie standard.


ll > liste.txt

L'oprateur >> redirige la sortie standard en ajout.


ll >> liste.txt

L'oprateur < redirige l'entre standard.


wc < liste.txt

L'oprateur 2> redirige la sortie d'erreur standard.


gcc exemple.c 2> erreurs.txt

- 64 -

Enchanement des commandes

commande1

stdout

stdin

commande2

L'oprateur | permet d'enchaner les commandes: commande1 | commande2 Exemples: ls | wc ll | more

- 65 -

La commande tee

La commande tee fonctionne comme un "T": elle lit son flux d'entre standard et l'envoie sur sa sortie standard et sur le fichier transmis en argument. Syntaxe: tee -options fichier(s) Exemple: ll | tee /tmp/liste.txt

- 66 -

La commande grep

La commande grep filtre un flux de texte pour ne laisser passer que les lignes contenant un critre de filtrage spcifi. Syntaxe: grep -options critre fichier(s) Exemples: grep "soleil" liste.txt ll | grep "exemple"

Exemple d'option: -v affiche les lignes ne rpondant pas au critre. Le critre peut utiliser les expressions rgulires.

- 67 -

Les expressions rgulires


. : correspond un caractre, quelqu'il soit, sauf le retour chariot ; * : n'importe quel nombre d'occurences du caractre prcdent l'astrisque ; [...] : correspond un caractre de l'ensemble des caractres spcifis entre crochets. Si un caractre ^ est prsent en premire position l'intrieur des crochets, alors il y a concordance avec n'importe quel caractre sauf le retour chariot et les caractres entre crochets. Un tiret peut tre utilis pour dfinir un intervalle de caractres. ^ : en premire position d'une expression : dbut de ligne ; $ : en dernire position d'une expression : fin de ligne ; \{n,m\} : un certain nombre de rptition du caractre qui prcde immdiatement.

\{n\} : exactement n occurrences \{n,\} : au moins n occurrences ; \{n,m\} : entre n et m occurrences ;

\ : protection du caractre qui suit, pour spcifier un mta-caractre comme caractre; + : une occurrence ou plus de l'expression rgulire ; ? : zro ou une occurrence de l'expression rgulire ; | : correspond soit l'expression qui prcde, soit celle qui suit. () : permet de regrouper des expressions rgulires ;

- 68 -

Exemples d'expressions rgulires


a* : rien, a, aa, aaa, aaaa, ...(nombre infini de a) a(ab)+ : aab, aabab, aababab, ... [a-d] : a,b,c,d [a-c]-[1-3] : a,b,c,1,2,3 ^a(1de)+ : une ligne qui commence par a1de ou a1de1de, ... abde$ : une ligne qui se termine par abde toto\.txt : toto.txt ab.d : abad, abbd, abcd, abdd, ... [1-31]/[1-12]/[0-2000] : une date (1re mthode)... 11/10/1972 ([1-9] | ( [1-2] [0-9] | [ 30 31] ) ) / ( [1-9] | [ 10-12 ] ) / [0-2000] : 2nde mthode ... toujours 11/10/1972 [lL]ibert : libert, Libert [pP]age [12-99] : page 12, Page 12, ..., page 99, Page 99

- 69 -

grep et les expressions rgulires


Exemples:
grep

"[a-zA-Z]" exemple grep "^martin" exemple grep "martin$" exemple grep "dupon." exemple grep "dupont|durand" exemple

- 70 -

La commande cut

Cette commande permet de dcouper un fichier en plusieurs champs. Syntaxe: cut -options fichier(s) Exemples d'options:

-d dfinition du dlimiteur de champ -f indique la liste des champs (par numro) afficher

Exemple:

cut -d":" -f1,5 /etc/passwd

- 71 -

La commande split

Cette commande permet de dcouper un fichier en plusieurs morceaux. Syntaxe: split -n fichier fichiers_resultat Exemple: split -10 exemple petitfichiers
Cette exemple va crer les fichiers petitfichiersaa, petitfichiersab, contenant le contenu du fichier exemple par tranche de 10 lignes.

- 72 -

La commande paste

Cette commande permet la fusion horizontale de lignes de fichiers. Syntaxe: paste -options fichier(s)

Quelques options:

-d -s

dfinition du sparateur regrouper toutes les lignes d'un seul fichier la fois plutt qu'une ligne de chaque fichier.

Exemple:

paste -d: /tmp/pass2 /tmp/pass1

- 73 -

La commande comm

La commande comm permet d'extraire les lignes communes et les lignes uniques de 2 fichiers pralablement tris. Syntaxe: comm [-123] fichier1 fichier2 Exemple:
fichier carnet1 marcel:13:0466342233:Marseille maurice:29:0298334432:Crozon robert:75:0144234452:Paris fichier carnet2 marcel:13:0466342233:Marseille myriam:30:0434214452:Nimes olivier:29:0298333242:Brest

$ comm -12 carnet1 carnet2


marcel:13:0466342233:Marseille

- 74 -

La commande sort

Cette commande permet d'afficher les lignes d'un fichier tries. Syntaxe: sort -options fichier Quelques options:

-n -r -f -t -u -k

le tri est numrique l'ordre de tri est invers le tri ne diffrencie pas majuscules et minuscules dfinit le caractre sparateur n'affiche qu'une seule ligne quand plusieurs lignes sont identiques indique la position de la cl de tri (numro partir de 1)

Exemple:

sort -n -t":" -k 3 /etc/passwd

- 75 -

La commande diff

Cette commande permet de rechercher des diffrences entre 2 fichiers. Syntaxe: diff -options fichier1 fichier2 Exemples d'options:

-b -B

ne pas tenir compte des diffrences concernant des espaces blancs ne pas tenir compte des diffrences concernant des lignes blanches

Exemple:
$ diff carnet1 carnet2 2,3c2,3 < maurice:29:0298334432:Crozon < robert:75:0144234452:Paris --> myriam:30:0434214452:Nimes > olivier:29:0298333242:Brest

- 76 -

La commande wc

Cette commande permet de compter le nombre de lignes/mots/caractres d'un fichier. Syntaxe: wc -options fichier(s)

Exemples d'options:

-c -w -l

affiche uniquement le nombre de caractres. affiche uniquement le nombre de mots. affiche uniquement le nombre de lignes.

Exemple:
$ wc carnet1 carnet2 3 3 87 carnet1 3 3 86 carnet2 6 6 173 total

- 77 -

La commande find

La commande find permet de retrouver des fichiers partir d'un critre donn. Syntaxe: find repertoire_depart critres Exemples de critre: -name -perm -links -user -group -type -size -atime -mtime -ctime

recherche sur le nom du fichier, recherche sur les droits d'accs du fichier, recherche sur le nombre de liens du fichier, recherche sur le propritaire du fichier, recherche sur le groupe auquel appartient le fichier, recherche sur le type (d=rpertoire, c=caractre, f=fichier normal), recherche sur la taille du fichier en nombre de blocs (1 bloc=512octets), recherche par date de dernier accs en lecture du fichier, recherche par date de dernire modification du fichier, recherche par date de cration du fichier.

Exemples: find / -mtime 3 -print find / -size 2000 -print find / -type f -user olivier -perm 755 -print find . -type f -print | xargs grep toto

- 78 -

La commande sed

Stream EDitor La commande sed lit l'entre standard (ou le fichier fourni en paramtre), excute un ensemble de commandes d'dition et affiche le rsultat sur la sortie standard. Invocation usuelle de la commande:
sed e 'commande1' e 'commande2' . fichier
stdin sed stdout

- 79 -

sed: commande de substitution de chane


Format complet de la commande:


[adresse1[,adresse2]]s/ancienne/nouvelle/[flags]

les flags peuvent tre:


n g p w fichier

remplace l'instance numro n remplace toutes les instances affiche les instances remplaces sur stdout affiche les instances remplaces dans le fichier spcifi.

Exemples:

sed e 's/soleil/lune/g' fichier sed e '1,2s/soleil/lune/1' e 's/lune/mars/g' fichier

- 80 -

sed: commande de substitution de chane


D'autres caractres comme @%,;: peuvent galement tre utiliss comme dlimiteurs.

Exemple: $ cat url http://www.ismra.fr $ sed -e's@http://www.ismra.fr@http://www.ensicaen.fr@' url http://www.ensicaen.fr Exemple:

Le champ "adresse" peut tre remplac par une expression rgulire:


$ cat animaux Le chat blanc restera blanc toute sa vie mais le chien blanc deviendra noir $ sed -e '/chat/s/blanc/noir/g' animaux Le chat noir restera noir toute sa vie mais le chien blanc deviendra noir

- 81 -

sed: commande de suppression


Format complet de la commande:


[adresse1[,adresse2]]d

Exemple 1:
sed e '2d' fichier

Exemple 2:
$ cat lignes ligne 1 (un) a ligne 2 (deux) ligne 3 (trois) $ sed -e '/^ligne/s/ligne/LIGNE/g' -e '/ligne/d' lignes LIGNE 1 (un) LIGNE 3 (trois)

- 82 -

sed: commande de suppression


Exemple 3:
$ cat delimiteurs Bonjour Monsieur Comment allez-vous ? Au revoir Cette ligne ne sera pas detruite bonjour madame comment allez-vous ? $ sed -e '/[bB]onjour/,/revoir/d' delimiteurs Cette ligne ne sera pas detruite

- 83 -

sed: insertion et modification


Format complet de la commande:


[adresse]commande\ o commande peut tre:


a i c

ajout (aprs) insertion (avant) modification d'une ligne

Exemples:
$ cat cde ligne 1 ligne 2 ligne 3 $ sed 'a\test' cde ligne 1 test ligne 2 test ligne 3 test

- 84 -

sed: insertion et modification


Suite exemples:
$ sed '2a\test' cde ligne 1 ligne 2 test ligne 3 $ sed 'i\test' cde test ligne 1 test ligne 2 test ligne 3 $ sed '/ligne 2/c\toto' cde ligne 1 toto ligne 3

- 85 -

La commande awk

Le nom awk provient de la contraction du nom de ses auteurs: Aho, Weinberger et Kernighan. awk permet d'effectuer un traitement sur chaque ligne d'un flux de donnes. Une ligne peut tre dcompose en champs (le dlimiteur de champs est paramtrable). Le paramtre $0 dsigne la ligne entire, $i dsigne le ime champ de la ligne. Syntaxe: awk [-F] [-v var=valeur] 'programme' fichier awk [-F] [-v var=valeur] -f fichier-config fichier

awk dispose de son propre langage de programmation comportant quelques similitudes avec le langage C (mmes oprateurs boolens, ). Exemples:
awk '{ print $1 ;}' fichier awk -F":" '{ print $5 ;}' /etc/passwd ps -ef | awk '{ print $2 ;}'

- 86 -

Structure d'un programme awk


Un programme awk est compos de 3 parties:


Une

clause "BEGIN" excute ds le lancement du programme et avant de traiter le flux de donnes. clause "END" excute avant la fin du programme et aprs le traitement du flux de donnes. corps du programme traitant le flux de donnes.

Une

Le

- 87 -

Exemple de programme awk


Fichier ex1.awk: BEGIN { toto = 0 ; } /toto/ { toto += 1 ; } END { print toto ; } Excution: $ awk -f ex1.awk fichier

- 88 -

Quelques variables systmes utilises par awk


Nom variable FS OFS NF ORS NR FILENAME FNR Rle de la variable Sparateur de champs lors de la lecture de donnes. Sparateur de champs pour l'affichage. Nombre de champs dans l'enregistrement courant. Sparateur d'enregistrements pour l'affichage. Numro de l'enregistrement courant. Nom du fichier de donnes. Numro de l'enregistrement courant par rapport au fichier utilis (lorsqu'on traite plusieurs fichiers en mme temps).

- 89 -

awk: Quelques lments de syntaxe


Les oprateurs relationnels:


< <= == != >= >

Enchanement de critres:

"et logique": "ou logique": ngation:

&& || !

Les tableaux:

Ils n'ont pas besoin d'tre ni dclars, ni allous et sont utilisables sous la forme tableau[index]=valeur. Les lments initiaux d'un tableau sont soit la chane vide, soit zro. La variable index n'est pas ncessairement numrique (tableaux associatifs). Un exemple sera prsent plus loin.

- 90 -

Le langage awk

La structure conditionnelle:
if (expression) { instructions } else { instructions }

Exemple: fichier exemple.awk:


{ if ( $5 != "") { print $1," ",$5 ; } }

awk -F: -f exemple.awk /etc/passwd

- 91 -

Le langage awk

La structure rptitive:
for (initialisation ; test ; incrmentation) {

instructions }

Exemple:
{ for ( i = 1 ; i <= 3 ; i++ ) { print $i ; } }

- 92 -

Le langage awk

La structure itrative:

while (expression) { instructions }


do { instructions ; } while (expression) ;

Exemple:
{ i=1 while (i <= 3) { print $i i++ } }

- 93 -

Exemple awk
Fichier traiter: $ cat carnet marcel:13:0466342233:Marseille maurice:29:0298334432:Crozon robert:75:0144234452:Paris maurice:30:0298334432:Caen Fichier tableau.awk
BEGIN { nb = 0 ; } { count [$1] += 1 ; if (count [$1] == 1) { key [nb] = $1 ; nb += 1 ; } } END { for (i = 0 ; i != nb ; i++) { print key [i],": ",count [ key [i] ] ; } }

Commande invoque: $ awk -F":" -f tableau.awk carnet Rsultat: marcel : 1 maurice : 2 robert : 1

- 94 -

Les scripts shells


- 95 -

Les scripts shells


Le shell peut tre utilis pour excuter des commandes contenues dans un fichier texte. Les scripts peuvent tre crs avec un diteur de texte. Il est conseill de positionner le droit d'excution sur les fichiers scripts. Il est galement conseill de prciser sur la 1re ligne du script sous quel shell les commandes doivent tre excutes.

Syntaxe: #!/bin/sh

La syntaxe tudie ici pour les scripts shell sera celle du shell de Bourne (/bin/sh). L'excution d'un shell script se fait:

en tapant son nom (si le script dispose du droit x); exemple: en prfixant par le nom du shell; exemple: sh script en prfixant par . ; exemple: . script

script

- 96 -

Les variables shell


Une variable est identifie par un nom commenant par une lettre et pouvant comporter lettres, chiffres et "underscore". Exemples:

user="pierre" echo $user

Variables prdfinies:

$# contient le nombre de paramtres passs; $0 contient le nom du script lui mme; $1 $9 contient les neufs premiers paramtres; s'il y en a plus de neuf, il faut utiliser la commande shift qui dcale sur la droite les arguments : $1 reoit $2, ..., $9 reoit le dixime argument; $* contient les n paramtres passs en 1 chane de caractres; $? Valeur de status de la dernire commande utilise $$ Valeur du numro de processus courant

Une variable peut tre initialise par le rsultat d'une commande:


$ jour=`date` $ echo $jour

Les variables sont locales (sauf si le script est invoqu par la commande . script)

- 97 -

Variables d'environnement

Certaines variables sont initialises la connexion et font partie de l'environnement du shell. Exemples:
HOME PATH PS1 TERM DISPLAY Contient le nom du rpertoire de connexion Dfinit les chemins de recherche des commandes Dfinit l'invite de commandes Dfinit le type de terminal alphanumrique ou de fentre terminal utilis Dfinit le priphrique utiliser pour l'affichage graphique

Le nom des variables d'environnement est traditionnellement en majuscule. Les variables d'environnement doivent tre exportes (commande export).

- 98 -

Les commandes d'entre/sortie


La commande echo permet d'afficher une chane de caractres ou le contenu de variables sur la sortie standard.

Exemple:
echo "La variable vaut $nom"

La commande read permet de lire une ligne de caractres partir de l'entre standard et place les diffrents mots dans les variables transmises en argument.

Exemple:
echo -n "Saisissez votre nom prenom et age: " read nom prenom age echo $nom $prenom $age

- 99 -

La commande test ou [ ]

Cette commande permet de tester l'existence et le status d'un fichier. Test de fichier:
test -r fichier test -w fichier test -x fichier test -s fichier test -d fichier test -f fichier Vrai si le fichier existe et possde un droit en lecture pour l'utilisateur idem en criture idem en excution Vrai si la taille du fichier est suprieure 0 Vrai si le fichier est un rpertoire Vrai si le fichier est un fichier ordinaire

- 100 -

La commande test

test de chanes de caractres

test -z s1 test -n s1 test s1 = s2 test s1 != s2 test s1


Vrai si la chane s1 est de taille nulle Vrai si la chane s1 est de taille non nulle Vrai si s1 est identique s2 Vrai si s1 est diffrent de s2 Vrai si s1 n'est pas la chane nulle

Ces tests peuvent tre combins: ! ngation logique -a et logique -o ou logique Exemple: test -r essai -a -s essai

- 101 -

La structure if-then-else

Syntaxe: if liste de commandes then liste de commandes else liste de commandes fi Remarques: La liste de commandes dans la clause if est une suite de commandes spares par des ; et interprtes de gauche droite. La valeur de l'expression est celle retourne par la dernire commande. La clause else est facultative Exemples:
#!/bin/sh if test ! -r $HOME/.signature then echo "Impossible de lire le fichier signature" exit 1 fi #!/bin/sh if cmp -s $1 $2 then echo $1 et $2 sont identiques else echo $1 et $2 sont differents fi

- 102 -

La structure while

Syntaxe:
while liste de commandes do liste de commandes done

Exemple:
#!/bin/sh while test $# != 0 do echo $* shift done

- 103 -

La structure for

Syntaxe:
for nom in liste do liste de commandes done

Exemple:
for i in fichier.c test.awk do lp $i done

- 104 -

Le branchement multiple case


Syntaxe:
case mot in pattern1) liste de commandes ;; pattern2) liste de commandes ;; esac

Exemple:
case $1 in *.c) echo fichier en langage C *.java) echo fichier en langage java *.awk) echo fichier de commande awk *) echo fichier non reconnu esac

- 105 -

Excution conditionnelle de commandes


Il est possible d'enchaner conditionnellement l'excution de commandes grce aux oprateurs:


&& (and-if)
cmd1 && cmd2 cmd2 n'est excut que si cmd1 a renvoy un code = 0 (cas de succs).

||

(or-if)
cmd1 || cmd2 Si cmd1 renvoie un code diffrent de 0 (cas d'chec) alors cmd2 est excut.

Exemples:
grep toto /etc/passwd || echo toto non trouve grep dp /etc/passwd > /dev/null && echo dp existe

- 106 -

Les fonctions

Syntaxe: function name () { commandes ; } Une fonction est appele par son nom, comme une commande normale. La valeur de retour est le code de retour de la dernire commande excute dans la fonction. Exemple:
#!/bin/sh function AfficheEnv () { echo "Valeurs des variables d'environnement" ; env } AfficheEnv

- 107 -

Gestion des signaux


Un script doit savoir grer les interruptions pour laisser le systme dans un tat stable et cohrent. La fonction trap permet de dtourner les signaux. Syntaxe: Exemple:
#!/bin/sh function GestionInterruption () { echo "Commande interrompue" rm /tmp/fichier_temporaire exit 1 } trap 'GestionInterruption' 2 reste du script .

trap 'commandes du shell' numro du signal.

- 108 -

Les sauvegardes
- 109 -

La commande tar

La commande tar permet de grer des archives (sur bande, sur des fichiers, ). Syntaxe: tar cls archives fichier(s) Exemples de cl: c cration t visualisation (tape of content) x extraction v mode verbeux f dsignation du support d'archive z archive compresse au format gzip j archive conpresse au format gzip2

- 110 -

Exemples d'utilisation de la commande tar


tar cvf /dev/st0 /home tar tvf /dev/st0 tar xvf /dev/st0 /home/dp tar cvzf dp.tar.gz /home/dp tar xzvf dp.tar.gz
- 111 -

Automatisation de tches
- 112 -

Automatisation de tches

Effectuer de tches des temps diffrs:


De manire rptitive (commande crontab) Ponctuellement (commande at)

Ces tches peuvent de toute nature (sauvegarde, contrle d'intgrit, ...) et sont souvent dcrites dans des scripts shell.
- 113 -

Ecriture d'une crontab


L'utilisateur doit crire une "crontab" pour dcrire les tches qu'il souhaite automatiser. Le format d'une "crontab" est une commande par ligne; une ligne est compose de: minute heure jour_mois mois jour_semaine commande
minute: 0-59 heure: 0-23 jour_mois: 1-31 mois: 1-12 jour_semaine: 0-6 (0 = dimanche) commande ou script excuter

- 114 -

Manipulation d'une crontab


Exemple de crontab:
0 3* 0 5* * * * * /usr/manage/clean /usr/manage/save

Enregistrement de la crontab (dans le rpertoire /var/spool/cron si l'administrateur a autoris l'utilisateur en effectuant les modifications ncessaires dans les fichiers: /etc/cron.allow et cron.deny): crontab fichier Visualisation de la crontab crontab -l Destruction de la crontab crontab -r

- 115 -

La commande at

Cette commande permet d'excuter une tche une date et heure prcises. L'administrateur doit autoriser un utilisateur se servir de cette commande en effectuant les modifications ncessaires dans les fichiers /etc/at.allow et /etc/at.deny. Exemple:
$ at 1:30 Taper le nom des tches excuter (1 par ligne) puis Ctrl D sur une nouvelle ligne.

- 116 -

Commandes associes "at"


atq Visualisation de ses tches en attente ou de toutes les tches en attente pour l'administrateur. atrm num Destruction d'une tche en attente (num est le numro de la tche supprimer obtenu grce la commande atq).

- 117 -

Vous aimerez peut-être aussi