Vous êtes sur la page 1sur 211

Introduction Linux

Version 1.6 (2011 - 2012)

Dpartement PeP 1

Introduction Linux : plan (1)


I.Introduction
L'environnementdetravail
L'interprteurdecommandes
Aideetdocumentation

Introduction Linux : plan (2)


II.Principesetcommandesdebase
Systmedefichiers
Commandesdebase
Lienssymboliquesetphysiques
Droitsd'accs

Introduction Linux : plan (3)


III.Redirectionsetprocessus
Entres/sortiesetredirections
Lestuyaux
Contrledetcheetdeprocessus

Introduction Linux : plan (4)


IV.Introductionaushell
Variables
Substitutiondecommandes
Alias
Lacommandefor
Lacommandeseq

Introduction Linux : plan (5)


V.Programmationshell
Scriptshell
Variables,paramtresetsubstitutions
Structuresdecontrle
Fonctions
Commandesutiles

Introduction Linux : plan (6)

VI.Exercicesdesynthse

Gestiondesauvegardes
Gestiond'unepoubelle
Unmcanismed'annulation

Introduction Linux : plan (7)

VII.LemondeLinux
LeprojetGNUetlalicenceGPL
LesdistributionsLinux
Linuxetsesconcurrents

Introduction Linux : plan (8)

VIII.Epilogue
RessourcesinternetsurLinux
Licenceethistoriqueducours

I.Introduction
L'environnementdetravail
PrincipesdebasedeLinux
L'interprteurdecommandes
Aideetdocumentation

10

Principales caractristiques
Depuisledbutdanslesannes1970
Multiutilisateuretscuris
Pardfaut,lesutilisateursordinairesnepeuventpastoucheraux
fichiersd'autresutilisateurs.
Enparticulier,ilsnepeuventnimodifierlesparamtresdusystme,
nisupprimerdesprogrammes,etc.
Utilisateurroot:utilisateuradministrateur,ayanttouslesdroits.
Multitche,priseenchargedemultiplesprocesseurs
Extrmementflexible
Priseenchargedurseau

I.Introduction
PrincipesdebasedeLinux

11

Couches dans un systme Unix


Noyau
BibliothqueC
Bibliothquessystme
Bibliothquesd'applications

cat
ld

Programmesutilisateurs:
aummeniveauqueles
commandessystmes

I.Introduction
PrincipesdebasedeLinux

date

kernel
as

who

Peut tre modifi


sh

hardware

ls
ed

vi

er m
U s og r a
pr

12

Environnement de travail (1)


L'accsauxfonctionnalitsetauxdonnesdansvotreenvironnementdetravailLinux
s'effectuededeuxfaonscomplmentaires:
viauneinterfacegraphique:assureparunWindowManager(KDE)
via un (ou plusieurs) terminal (ou terminaux) en mode texte constitu par une
fentredanslaquelleoninteragitaveclesystme(Konsole)
LesfonctionnalitsgraphiqueschangentavecleWindowManager:ellesconstituent
uneinterfacegraphiqueauxcommandesdebasesdusystme
Lescommandesdebasenechangentpas:ellessontlesmmes(quelquesexceptions
prs)pourtouslessystmesUnixetsontstandardises
Tout est paramtrable et programmable : l'environnement graphique est entirement
paramtrableetlesystmedebasesousjacentestentirementprogrammable

I.Introduction
Environnementdetravail

13

Environnement de travail (2)

LethmedevotreGnome!
I.Introduction
Environnementdetravail

14

Environnement de travail (3)

LethmeAnapourGNOME(GTK2.x)d'aprsTarchalski
I.Introduction
Environnementdetravail

15

Environnement de travail (4)

LethmeMacOSXpourKDE3.2+d'aprsIvanciko
I.Introduction
Environnementdetravail

16

Quelques applications standards


XEmacs,Kate:diteursdetexte
OpenOffice,KOffice:suitesbureautiquecompltes
Mozilla,Firefox,Konqueror:navigateursInternet
Thunderbird,Kmail:clientsdemessagerie
Kopete,Gaim:clientsdemessagerieinstantane
GIMP:diteurgraphiquetrspuissant
Gwenview:afficheurdegaleriesdephotos
Amarok,XMMS,Noatun,Kaffeine:lecteursaudioetmultimdia
K3b:graveurdeCDetDVD
aMule,KMLDonkey,KTorrent:clientsP2P
I.Introduction
Environnementdetravail

17

diteurs de texte
Unditeurdetexteestuneapplicationquisertfabriquer(etmodifier)
desfichiersdetexte(ASCIIouautres)
diteursdetextegraphiques
Emacs,XEmacs(trsvivementconseill!)
Kate(uniquementsousKDE)
diteursenmodetexteuniquement
vi(semigraphiqueettrspopulaire)
nano(trslgerenmmoireetfacileapprendre)
diteursspcialiss
Quanta+(pourleweb)
I.Introduction
Environnementdetravail

18

Emacs / XEmacs
Emacs et XEmacs sont trs semblables
(Xemacspardfaut)
Fonctionnalits dditeur
extrmementpuissantes

de

texte

Editeurmultimodesprogrammable
Parfaitpourlesutilisateursavancs
Bien plus dun simple diteur de texte
(courrier,shell,navigateur)
Raccourcis clavier non standards mais
trscompletsettrspuissants
Ncessite un apprentissage assez long

I.Introduction
Environnementdetravail

19

Interprteurs de commandes (1)


Interprteurs de commandes : outils pour excuter des commandes tapes par un
utilisateurdansunterminal
Appels shells (coquilles) parce quils masquent sous leur surface les dtails du
systmedexploitationsousjacent
Lescommandessonttapesdansunterminalenmodetexte,constituparunefentre
dansunenvironnementgraphique,ouplusrarementparuneconsolesurun cranen
texteseul
Les rsultats sont aussi affichs sur le terminal. Une sortie graphique nest pas
obligatoire(pourlaplupartdescommandeslasortieestdutexte)
Les interprteurs de commandes peuvent tre programmables : ils fournissent toutes
les ressources ncessaire pour lcriture de programmes complexes (variables,
conditions,boucles...)

I.Introduction
Interprteurdecommandes

20

Interprteurs de commandes (2)

UnesessionkonsolesousKDE3.4
I.Introduction
Interprteurdecommandes

21

Interprteurs les plus courants


sh:leBourneshell(parSteveBourne,obsolte)
LeshelldebasequontrouvaitdanstouslessystmesUnix:maintenantobsolteet
remplacparlebash
csh:leCshell(obsolte)
ShellavecunesyntaxelaC,quiaconnusonheuredegloire
tcsh:leTCshell(toujourstrspopulaire)
UneimplmentationcompatibleavecleCshell,avecdesfonctionnalitsavances
(compltelesnomsdecommandes,rappeldecommandesantrieuresetbiendautres)
bash:leBourneAgainshell(parSteveBourne,lepluspopulaire)
Uneversionamlioredeshavecdenombreusesfonctionsnouvelles
ksh:leKornShell(parDavidKorn,dveloppchezAT&T)
CompatibleavecleBourneshelletinclutdenombreusesfonctionsduCshell
zsh:unBourneshelltenduavecbeaucoupd'amliorations.Ilreprendlaplupartdes
fonctionslespluspratiquesdebash,kshettcsh
I.Introduction
Interprteurdecommandes

22

Syntaxe des commandes (1)


UnecommandeUnixpeutavoir0,unnombrefixeouunnombrevariabled'arguments,
plusuncertainnombred'options.Uneoptioncommenceengnralparuntiret()et
deuxtiretslasuite()indiquentlafindesoptionssurunelignedecommande
[hal@home/bob]date
Unecommandesansparamtrequiafficheladateetl'heurecourante
[hal@home/bob]cal2006
Unecommandeavecunparamtre(uneanne)quiaffichelecalendriercompletdel'anneen
question
[hal@home/bob]cal92006
Lammecommandeavecdeuxparamtres,lemoisetl'anne
[hal@home/bob]echo
Sansargumentcettecommandeafficheunelignevide
[hal@home/bob]echoBonjourtoutlemonde
AffichelesquatresargumentsBonjour,tout,leetmonde,etvalaligne
[hal@home/bob]echonBonjourtoutlemonde
L'option-nempchelepassagelaligne
I.Introduction
Interprteurdecommandes

23

Syntaxe des commandes (2)

L'interprteurbashenaction
I.Introduction
Interprteurdecommandes

24

Exercices I.1
Testezquelquescommandessimples
1. Affichezladatecouranteaveclacommandedate
2. Affichezlecalendrierdel'annecouranteaveccal2008
3. Quefaitlacommandecal92008?lacommandecal?
4. TestezlacommandeechoenvaluantechoBonjourtoutlemonde
5. Quefaitlacommandeechosansargument?
6. Essayezd'affichezlemessage3>2estvrail'aidelacommandeecho
7. Recommencezenfaisantprcderlecaractre>ducaractre\(antislash)
8. Recommencezenutilisantlecaractre'pourdlimiterlachanedecaractres
9. Recommencezenutilisantlecaractre"pourdlimiter(d'uneautremanre)lachanede
caractres
10. Affichezlemessageprcdentmaissansallerlaligne(utilisezl'optionn)
I.Introduction
Interprteurdecommandes

25

Edition des commandes (1)


L'ditiond'unecommandesousbashestpossiblependantlasaisiemmedelacommande,
l'aide de caractres spciaux qui sont identiques certains raccourcis clavier de
Emacs/XEmacs. Lors de la saisie d'un commande, on est automatiquement en mode
insertion,etondisposedesfonctionnalitssuivantes:
Dplacementducurseur
dplacementducurseurgauched'uncaractre:flchegaucheou<ctrlb>

dplacementducurseurdroited'uncaractre:flchedroiteou<ctrlf>
dplacementducurseurd'unmotgauche:<metab>
dplacementducurseurd'unmotdroite:<metaf>
dplacementducurseurendbutdeligne:<ctrla>
dplacementducurseurenfindeligne:<ctrle>
I.Introduction
Interprteurdecommandes

26

Edition des commandes (2)


Effacementdecaractres
effacementduderniercaractresaisi(gaucheducurseur):<backspace>
effacementducaractrecourant(souslecurseur):<suppr>ou<ctrld>
effacementdumotcourant(partirducurseur):<metad>
effacementdutextedudbutdelignejusqu'aucurseur:<ctlru>
effacementdelaligneducurseurlafindelaligne:<ctlrk>

Insertiondescaractressupprims
Lescaractressupprimsparlescommandesprcdentespeuventtreinsrs
droiteducurseurpar<ctlry>
I.Introduction
Interprteurdecommandes

27

Edition des commandes (3)


Historiquedescommandes
Leshellbashgreunhistoriquedescommandessaisiesetonpeutsedplacerdans
cethistorique
rditiondelacommandeprcdentlacommandecourantedansl'historique:
flchehautou<ctrlp>
rdition de la commande suivant la commande courante dans l'historique :
flchebasou<ctrln>
Compltion
Le shell bash comprend un mcanisme de compltion pour les noms de
commandescommepourlesnomsdefichiers
compltionsimple:<tab>lasuitedescaractresdjsaisis
compltionmultiple:<tab><tab>lasuitedescaractresdjsaisis
I.Introduction
Interprteurdecommandes

28

Exercices I.2
Testeznouveauetsquentiellementlescommandessuivantes,maiscettefoisenutilisant
intensivementl'ditionenlignedescommandes:
1. Affichezladatecouranteaveclacommandedate
2. Affichezlecalendrierdel'annecouranteaveccal2008
3. Quefaitlacommandecal92008?lacommandecal?
4. TestezlacommandeechoenvaluantechoBonjourtoutlemonde
5. Quefaitlacommandeechosansargument?
6. Essayezd'affichezlemessage3>2estvrail'aidelacommandeecho
7. Recommencezenfaisantprcderlecaractre>ducaractre\(antislash)
8. Recommencezenutilisantlecaractre'pourdlimiterlachanedecaractres
9. Recommencezenutilisantlecaractre"pourdlimiter(d'uneautremanre)lachanede
caractres
10. Affichezlemessageprcdentmaissansallerlaligne(utilisezl'optionn)
I.Introduction
Interprteurdecommandes

29

Aide sur les commandes


La plupart des commandes de Linux proposent au moins un
paramtredaide
h
(estsurtoututilispourintroduiredesoptionsen1caractre)
help
( est toujours utilis pour introduire loption longue
correspondante,quirendlesscriptsplusfacilescomprendre)
Les commandes affichent souvent un court rsum des options
disponiblesquandvousutilisezunargumentinvalide.

I.Introduction
Aideetdocumentation

30

Pages de manuel
man<mot_cl>
Afficheuneouplusieurspagesdemanuelpour<mot_cl>
manman
Laplupartdespagesdemanueldisponiblesconcernentdescommandes
Unix,maisaussidesfonctions,enttesoustructuresdedonnesde
bibliothquesC,oummedesfichiersdeconfigurationdusystme
manstdio.h
manfstab(pour/etc/fstab)
Lespagesdemanuelsontrecherchesdanslesrpertoiresspcifiespar
lavariabledenvironnementMANPATH

I.Introduction
Aideetdocumentation

31

Exercices I.3

1. Al'aided'internet,trouvezlenomdelacommandeLinuxquipermetde
compresser des fichiers en utilisant l'algorithme de compression de
BurrowsWheeler
2. Affichezlapagedemanueldecettecommande
3. Trouvez le numro de la version de cette commande actuellement
installesurvotreordinateur

I.Introduction
Interprteurdecommandes

32

Recherches sur Internet (1)


Rsolutiondeproblmes
Laplupartdesarchivesdesforumsetdeslistesdediscussionsont
publiques,etindexestrsrgulirementparGoogle
Sivousrecherchezlacausedunmessagederreur,copiezlemot
motdansleformulairederecherche,entourpardesguillemets.
Il est trs probable que quelquun dautre aura dj rencontr le
mmeproblme
NoubliezpasdutiliserGoogleGroups:http://groups.google.com/
Ce site indexe plus de 20 annes de messages de groupes de
discussion
I.Introduction
Aideetdocumentation

33

Recherches sur Internet (2)


Recherchededocumentation
Recherchez<outil>OR<outil>pagepourtrouverla
pagedaccueildeloutilouduprojetetensuitetrouverlesplus
rcentesressourcesdedocumentation
Recherchez<outil>documentationor<outil>
manual(enanglais)dansvotremoteurderechercheprfr

Recherchededocumentationgnrique
WikiPedia:http://fr.wikipedia.org
Denombreusesetutilesdfinitionseninformatique.Unevraie
encyclopdie.Ouverteauxcontributionsdechacun
I.Introduction
Aideetdocumentation

34

Exercices I.4
Testezl'aidedisponiblesurlescommandeseneffectuantlesoprationssuivantes:
1. Affichezl'aidedelacommandecal
2. Affichezlecalendrierdel'anne2000
3. Affichezlapagedemanueldelacommandedate
4. Utilisezlacommandetouchpourcrerunfichiervidedenomvidedans
votrerpertoiredetravaillinux

I.Introduction
Interprteurdecommandes

35

II.Principesetcommandes
debase

Systmedefichiers
Commandesdebase
Lienssymboliquesetphysiques
Droitsd'accs
ImpressionsousLinux
36

Fichiers et rpertoires
PresquetoutdansUnix/Linuxestunfichier
Mmelesrpertoiressontdesfichiers,contenantunelistedefichiersetderpertoires.
DepuisledbutdUnix,aucunelimitationmajeurequantlalongueurdunnomde
fichier.Toutcaractre(lesespacesenparticulier)peuttreutilisdanslenom,etles
extensionssontfacultatives.Lesdiffrencesdemajusculesoudeminuscules
constituentdesfichiersdistincts.
Unchemin(path)estunesquencederpertoiresimbriqus,avecunfichierouun
rpertoirelafin,sparsparlecaractre/
Cheminrelatif:
docs/cours/unix.html
Relatifaurpertoirecourant
Cheminabsolu:
/home/john/docs/cours/unix.html
Chemindepuislerpertoireracinedusystme(/)

II.Principesetcommandesdebase
Systmedefichiers

37

Systme de fichiers Linux (1)


Structurearborescente

II.Principesetcommandesdebase
Systmedefichiers

38

Systme de fichiers Linux (2)


Riendimposparlesystme.Peutvarierdunsystmelautre,
mmeentredeuxinstallationsdeLinux!
/
/bin/
/boot/
/dev/
/dev/hda
/etc/
/home/
/lib/

Rpertoireracine
Commandesdebasedusystme
Images,initrdetfichiersdeconfigurationdunoyau
Fichiersreprsentantdespriphriques
premierdisquedurIDE
Fichiersdeconfigurationdusystme
Rpertoiresutilisateurs
Bibliothquesdebasedusystme(partages)

II.Principesetcommandesdebase
Systmedefichiers

39

Systme de fichiers Linux (3)


/lost+found
Fichiersdtriorsquelesystmeaessaydercuprer
/mnt/
Systmesdefichiersmonts
/mnt/usbdisk/,/mnt/windows/...
/opt/
Outilsspcifiquesinstallsparladministrateur.
Souventremplacpar/usr/local/
/proc/
Accsauxinformationsdusystme
/proc/cpuinfo,/proc/version...
/root/
Rpertoireutilisateurdeladministrateur
/sbin/
Commandesrservesladministrateur
/sys/
Contrledusystmeetdespriphriques
(frquenceduprocesseur,gestiondelalimentationdes
priphriques,etc.)

II.Principesetcommandesdebase
Systmedefichiers

40

Systme de fichiers Linux (4)


Fichierstemporaires

/tmp/
/usr/

Programmesutilisateursordinaires,nonessentielsau
systme:/usr/bin/,/usr/lib/,...
Outilsspcifiquesinstallsparladministrateur.
(alternative:/opt/)

/var/

Donnesutilisesparlesystmeousesserveurs
/var/log/,/var/spool/mail(courrierentrant),
/var/spool/lpd(travauxdimpression)...

II.Principesetcommandesdebase
Systmedefichiers

41

Rpertoires spciaux (1)


Lerpertoirerelatif./
Lerpertoirecourant.Utilepourlescommandesquiontun
rpertoirecommeargument.galementutileparfoispourlancer
descommandesdanslerpertoirecourant(voirplustard)
Ainsi./lisezmoi.txtetlisezmoi.txtsontquivalents
Lerpertoirerelatif../
Lerpertoireparent.Faitpartietoujourspartiedurpertoire.
(voirlsa).Uniquerfrenceaurpertoireparent.
Utilisationlapluscourante:
cd..
II.Principesetcommandesdebase
Systmedefichiers

42

Rpertoires spciaux (2)


Lerpertoireabsolu~/
Pasvraimentunrpertoirespcial.Lesinterprteursde
commandeleremplacentjusteparlerpertoireutilisateurde
lutilisateurcourant
Nepeutpastreutilisdanslaplupartdesprogrammes,caril
nestpasunvrairpertoire(voirlavariableHOME)
Lerpertoireabsolu~bob/
Defaonanalogue,remplacparlesshellsparlerpertoire
utilisateurdelutilisateurbob

II.Principesetcommandesdebase
Systmedefichiers

43

Chemins absolus et relatifs


Unfichierpeuttredsigndefaonabsolueourelative
Uncheminabsoluidentifiedemanireuniqueunfichierou
unrpertoiredansl'arborescence:
/home/bob/src/a.out

/usr/bin/grep

Uncheminrelatifidentifieunfichierouunrpertoireen
fonctiondurpertoirecourant(onestsous~bob):
src/a.out

II.Principesetcommandesdebase
Systmedefichiers

../dan/a.out

44

La commande ls
Affichelalistedesfichiersdanslerpertoirecourant,enordrealphanumrique,
saufceuxquicommencentparlecaractre.
lsa(all:tous)
Affichetouslesfichiers(ycomprisles
fichiers.*)
lsl(long)
Affichageenformatlong(type,date,
taille,propritaire,permissions)
lst(temps)
Affichelesfichierslesplusrcentsen
premier

lsS(size:taille)
Affichelesfichierslesgrosenpremier
lsr(reverse:invers)
Afficheenordreinverse
lsltr(lesoptionspeuventtre
combines)
Formatlong,lesfichierslesplus
rcentslafin

Lacommandelspossdeunecinquantained'options!

II.Principesetcommandesdebase
Systmedefichiers

45

Exercices II.1
Testezlacommandelsenaffichant,depuisvotrerpertoirepersonnelinitial(home
directory),lalistedetousvosfichiersetsousrpertoires:
1. decinqfaonsdiffrentes(faitesvarierleparamtredels)
2. sousunformatcondens
3. sousunformatlong(donnantlepropritaire,lespermissions,lataille,...)
4. enaffichantaussilesfichierscachs(dontlenomcommenceparunpoint)
5. avecunformatlongetenaffichantlesfichierscachs,maisdansl'ordrealphabtique
inverse
6. avecunformatlongetenaffichantlesfichierscachs,maisduplusrcentauplus
ancien
7. avecunformatlongetenaffichantlesfichierscachs,maisduplusancienauplus
rcent

II.Principesetcomandesdebase
Systmedefichiers

46

Les commandes cd et pwd


cdrep(changedirectory)
Faitdereplenouveaurpertoirecourant
cd
Sansargument,faitdurpertoireutilisateurlenouveaurpertoire
courant
cd(lecaractretiret:'')
Faitdurpertoireprcdentlerpertoirecourant(ledernierrpertoire
depuislequelonafaitcd)lenouveaurpertoirecourant
pwd(printworkingdirectory)
Affichelecheminabsoludurpertoirecourant

II.Principesetcommandesdebase
Commandesdebase

47

Les commandes mv et cp
mvancien_nomnouveau_nom(move)
Changelenomdufichieroudurpertoiredonn
mvi(interactive)
Silefichierexistedj,demanderconfirmationlutilisateur
cpfichier_origfichier_dest
Creunecopiedunfichierdorigine
cpfich1fich2fich3...rep
Copietouslesfichiersverslerpertoirededestination(dernierargument)
cpi(interactive)
Silefichierdedestinationexistedj,demanderconfirmationlutilisateur
cprrep_origrep_dest(recursive)
Copiedurpertoiretoutentier
II.Principesetcommandesdebase
Commandesdebase

48

Les commandes rm et rmdir


rmfich1fich2fich3...(remove)
Supprimelesfichiersdonns
rmifich1fich2fich3...(interactive)
Demandetoujourslutilisateurdeconfirmerlessuppressions
rmrrep1rep2rep3...(recursive)
Suppressiondesrpertoiresdonnsetdetoutleurcontenu
rmffich1fich2fich3...(force)
Suppressiondesfichiersdonnssansmessageniquestion
rmdirrep1rep2rep3...(removedirectory)
Suppressiondesrpertoiresdonnsseulements'ilssontvides

II.Principesetcommandesdebase
Commandesdebase

49

La commande mkdir
mkdirrep(makedirectory)
Fabriquerep,unnouveaurpertoire,danslecourant.Sirepexiste
dj,provoqueuneerreur
mkdirrep1rep2...repN
Fabriquesquentiellementplusieursrpertoires
mkdirrep1/rep2
Ilfautquelerpertoirerep1existedj,sinonprovoqueuneerreur
mkdirprep1/rep2/.../repN(parent)
Fabriquelesrpertoiresrep1rep2...repN1sibesoin,et
enfinlerpertoirerepN

II.Principesetcommandesdebase
Commandesdebase

50

Exercices II.2
Testezlescommandeslmentairesrelativesauxfichiersetdesrpertoires:
1. Crezunrpertoiresystemsousvotrerpertoiredetravaillinux,puisun
rpertoiretp1soussystem
2. Effacezlerpertoiresystemaveclacommandermdir.Queconstatezvous?
3. Aprsavoireffaclesrpertoirestp1etsystem,crezl'aided'uneseule
commandelesrpertoiressystem,system/tp1,system/tp2
4. Renommezlerpertoiresystementest
5. Copiezunfichierdevotrechoixdurpertoire/bindanslerpertoiretest/tp1:
a) depuislerpertoire/bin
b) depuislerpertoiretest/tp1
c) depuisvotrehomedir,enutilisantdescheminsabsolus
d) depuisvotrehomedir,enutilisantdescheminsrelatifs

6. Effacezl'aided'uneseulecommandelesrpertoirestest/tp1ettest/tp2
II.Principesetcommandesdebase
Commandesdebase

51

Substitutions des noms de fichiers


ls*txt
Linterprteurremplacedabord*txtpartouslesnomsdefichierset
derpertoiresfinissantpartxt(ycompris.txt),saufceux
commenantpar.etenfinexcutelalignedecommandels
lsd.*
Affichetouslesfichiersetlesrpertoirescommenantpar.
dindiquelsdenepasafficherlecontenudesdossiers.*
ls?.log
Affichetouslesfichiersdontlenomcommenceparuncaractreet
finitpar.log
rmrlog*
EffaceTOUSlesfichiersetsousrpertoiresdurpertoirecourantdont
lenomcommenceparlog
II.Principesetcommandesdebase
Commandesdebase

52

Caractres gnriques
Plusgnralement:
*dnote0,1ouplusieurscaractres
*.c

doc*unix.html

?dnoteun(etexactementun)caractrequelconque
?nix

*.s??

[...]dnoteuncaractreappartenantunensemble
[Uu]nix

*.sx[ci]

[^...]dnoteuncaractren'appartenantpasunensemble
.[^co]

II.Principesetcommandesdebase
Commandesdebase

[^[:upper:]]*

53

Exercices II.3 (1)


Placezvousdanslerpertoire/binpuisaffichezlalistedetouslesfichiers:
1. dontlenomcommenceparlalettret
2. dontlenomtermineparlalettreh
3. dontlenomaexactementtroislettres
4. dontlenomcontientlasouschaneun
5. dontlenomcontientaumoinsunchiffre
Crezdansvotrerpertoiredetravaillinux(aveclacommandetouch)lesfichiersdenomsexact
fich1,fich2,fich11,fich12,fich1a,ficha1,.fich1,.fich2,afichettoto,puis
affichez:

6. lesfichiersdontlenomcommenceparfich
7. lesfichiersdontlenomcommenceparfichsuivid'unseulcaractre
8. lesfichiersdontlenomcommenceparfichsuivid'unseulcaractrequiestunchiffre
9. lesfichiersdontlenomcommenceparlecaractre.(point)
10. lesfichiersdontlenomnecommencepasparf
II.Principesetcommandesdebase
Commandesdebase

54

Exercices II.3 (2)


Placezvousdanslerpertoire/etc,puislisteztouslesfichiersetlesnomsderpertoires:
0. deconfiguration(i.e.dontlenomtermineparlesuffixe.conf)
1. dontlenomcommenceparlachanecron
2. dontlenomneterminepasparlecaractred
3. Placezvousdansvotrerpertoirelinux,videzledesoncontenu,puisplacezydeuxfichiers
denomstotoettiticontenantrespectivementleslignestotoettiti(utilisezunditeur)

4. Devinezcequevafairelacommandecpt*etvrifiezenl'valuant.
5. Construisezlerpertoiretata(toujourssouslerpertoirelinux)puisdevinezcequevafaire
trsexactementlacommandemvt*tata.Vrifiezenl'valuant.
6. Dplaceztouslesfichiersplacssoustatadanslinux
7. Fabriquezunfichier(aveclacommandetouch)denomi,puiseffacezle
8. Fabriquezunfichierdenomt*a,puiseffacezle(etn'effacezquelui!)
9. Fabriquezunfichierdenomtoto<espace>titipuiseffacezle(etn'effacezquelui!)
II.Principesetcommandesdebase
Commandesdebase

55

Afficher le contenu de fichiers


Plusieursfaonsdafficherlecontenudefichiers
catfich1fich2fich3...(concatner)
Metboutboutetaffichelecontenudesfichiersdonns
morefich1fich2...(plusdedtails)
Achaquepage,demandelutilisateurdappuyersurunetouchepour
continuer.Peutaussiallerdirectementlapremireapparitiondun
motcl(commande"/"suiviedumotcl)
lessfich1fich2fich3...(moins)
Unmorepluspuissant(lenomestunjeudemot...)!
Nelitpaslefichierentieravantdecommencerafficher
Permetderemonterenarriredanslefichier(commande"?")
II.Principesetcommandesdebase
Commandesdebase

56

Les commandes head, tail et cat


head[nN]fichier(tte)
AffichelesNpremireslignes(ou10pardfaut)dufichierdonn.
Napasbesoindouvrirlefichierenentierpourlefaire
tail[nN]fichier(queue)
AffichelesNdernireslignes(ou10pardfaut)dufichierdonn
Nechargepastoutlefichierenmmoire.Trsutilepourlesgrosfichiers.
tailffichier(follow)
Afficheles10dernireslignesdufichierdonnetcontinueafficherles
nouvelleslignesaufuretmesurequellessontrajoutesenfindefichier.Trs
pratiquepoursuivrelesrajoutsunfichierdejournal(log)
cat[n]fichier
Affichelecontenudufichierdonn.Avecl'optionnnumrotechaqueligne
affichede1n(lenombredelignes)

II.Principesetcommandesdebase
Commandesdebase

57

La commande wc
wcfichier(wordcount)
Affichelenombredelignes,demotsetdecaractresdufichierfichier
wccfichier
Affichelenombred'octetscontenusdanslefichierfichier
wcmfichier
Affichelenombredecaractrescontenusdanslefichierfichier
wclfichier
Affichelenombredelignescontenuesdanslefichierfichier
wcwfichier
Affichelenombredemotscontenusdanslefichierfichier

II.Principesetcommandesdebase
Commandesdebase

58

La commande sort
sortfichier
Trieleslignesdufichierselonlordredescaractresetles
affiche.
sortrfichier(reverse)
Idem,maisenordreinverse
sortrufichier(unique)
Idem,maisneproduitquuneseulefoisleslignesidentiques.
Plusdepossibilitsserontabordesplustard

II.Principesetcommandesdebase
Commandesdebase

59

Exercices II.4
0. Affichezlapremirelignedufichiernanorcdelerpertoire/etc
1. Affichezles10dernireslignesdufichiernanorcdelerpertoire/etc
2. Visualisezlefichier/etc/fstabsuccessivementaveclescommandescat,moreetless
3. Visualisezlefichier/etc/fstabaveclacommandelessetsautezdirectementauxlignes
contenantlachanedecaractresANSI(enutilisant/etn)
4. Testezlacommandewcetsesdiffrentesoptionssurlefichier/etc/fstab
5. Crezunfichierdetexte(dansvotrerpertoirelinux)contenantquelquescaractressurdeux
lignesmaisneterminantpasparunnewline(lignevideenfindefichier)etcomptezlenombrede
caractresdufichieraveclacommandewc
6. Recommencezenajoutantcettefoisunnewlineenfindefichier
7. Testezlacommandesortsurplusieursfichierscomme/usr/lib/helix/READMEou
/var/www/icons/README
8. Testezlescommandescat,wcetsortsansargumentsetensaisissantdeslignesinteractivement
(tapez<ctrld>pourterminer)
II.Principesetcommandesdebase
Commandesdebase

60

La commande grep (1)


grepmotiffichiers
Parcourtlesfichiersdonnsetafficheleslignesquicorrespondentaumotif
spcifi.
greperreur*.log
Affichetoutesleslignescontenanterreurdanslesfichiers*.log
grepierreur*.log
Idem,maisindiffrentauxmajusculesetminuscules
greprierreur.
Idem,maisrcursivementdans.etsessousrpertoires
grepvinfo*.log
Affichetoutesleslignesdesfichiers,saufcellesquicontiennentinfo

II.Principesetcommandesdebase
Commandesdebase

61

La commande grep (2)


Lemotif(lepremierparamtre)degrepestuneexpressionrgulirequiutilisedes
caractressemblablesauxcaractresgnriquesdushellmaisdontl'interprtationdiffre
grep'es*ai'fichier
Afficheleslignesquicontiennentesuivid'unouplusieurssetterminantparai
grep'es.ai'fichier
Afficheleslignesquicontiennentessuivid'uncaractrequelconqueetterminantpar
ai
grep'[09]'fichier
Afficheleslignesquicontiennentaumoinsuncaractrenumrique
grep'^Je'fichier
AfficheleslignesquicommencentparJe
grep'\.$'fichier
Afficheleslignesquitermineparlecaractre.
grepv'[;:09]'fichier
Afficheleslignesquinecontiennentnichiffres,ni;ou:
II.Principesetcommandesdebase
Commandesdebase

62

La commande find
Plusfacileexpliquerparquelquesexemples
find.name*.pdf[print]
Recherchetouslesfichiers*.pdfdanslerpertoirecourant(.)et
sessousrpertoires.Vousdevezutiliserlesguillemetspour
empcherleshelldesubstituerlecaractre*
finddocsname"*.pdf"execxpdf{}';'
Recherchetouslesfichiers*.pdfdanslerpertoiredocsetles
affichelunaprslautre
Denombreusespossibilitsexistentetilfautlirelapagede
manuel!Cependant,les2exemplescidessuscouvrentlaplupart
desbesoins

II.Principesetcommandesdebase
Commandesdebase

63

La commande locate
Outilderecherchebasedexpressionsrgulires,essentiellementpourtrouver
l'emplacementdefichiersouderpertoires
locateclef
Affichetouslesfichierssurvotresystmecontenantclefdansleurnom
locate*.pdf
Affichetouslesfichiers*.pdfexistantsurvotresystme.
locate/home/frigo/*mousse*
Affichetouslesfichiers*mousse*danslerpertoireindiqu(cheminabsolu)
locateesttrsrapidegrcelindexationdetouslesfichiersdansunebasede
donnesddie,quiestmisejourrgulirement.
locateestbeaucoupmoinsutilequefindquiestbeaucoupplusadaptla
recherchefinedefichiers,etquipermetenoutred'effectuerdesactionssurlesfichiers
trouvs.

II.Principesetcommandesdebase
Commandesdebase

64

Exercices II.5
0. Affichezleslignesdufichier/etc/gai.confquicontiennentlecaractre#
1. Affichezleslignesdufichier/etc/gai.confquicommencentparlecaractre#
2. Affichezleslignesdufichier/etc/gai.confquicontiennentdesnombressparspardes
points(commeparexemple3.1ou10.2.1)
3. Affichezleslignesdufichier/etc/mailcapquicontiennentlecaractre$
4. Affichezleslignesdufichier/etc/profilequiterminentparlecaractre\
5. Afficheztouslesfichiersrguliers(lesfichiers,etnonpaslesrpertoiresoulesliens)vous
appartenant(i.e.setrouvantdansvotrehomedirourcursivementdansundesessous
rpertoires)
6. Affichezlenomdetouslesrpertoires(etseulementdesrpertoires)vousappartenant
7. Afficheztouslesfichierscachs(i.e.denom.*)vousappartenant
8. Crezplusieursfichiersd'extension.bakdansvotrehomediretdanscertainsdesessous
rpertoires,oubliezleuremplacement,puiseffacezlestousl'aided'uneseulecommande
9. Al'aidedelacommandetouch,crezplusieursfichiersvidesdansvotrehomediretdans
certainsdesessousrpertoires,puiseffacezlestousl'aided'uneseulecommande
II.Principesetcommandesdebase
Commandesdebase

65

Comparaison de fichiers
cmpfichier1fichier2
Comparedeuxfichiersquelconques.
difffichier1fichier2
Affichelesdiffrencesentredeuxfichiers,ouriensilesfichiers
sontidentiques.
diffrrep1/rep2/
Affichelesdiffrencesentrefichiersdemmenomdanslesdeux
rpertoires.
Pourexaminerendtaillesdiffrences,mieuxvaututiliserdes
outilsgraphiques

II.Principesetcommandesdebase
Commandesdebase

66

Le programme kompare
Unautreoutilpratiquepourcomparerdesfichiersetfusionnerleurs
diffrences

II.Principesetcommandesdebase
Commandesdebase

67

Mesure de la taille des fichiers


duhfichier(diskusage)
h:affichelatailledufichierdonn,sousformelisibleparun
humain:K(kilooctets),M(megaoctets)orG(gigaoctets).
Sinondurendlenombrebrutdeblocsoccupsparlefichiersur
ledisque(difficilelire).
dushrep
s:rendlasommedestaillesdetouslesfichiersdansle
rpertoiredonn

II.Principesetcommandesdebase
Commandesdebase

68

Mesure de lespace disque


dfhrep
Affichedesinformationssurlespacedisqueutilisetdisponibledans
lesystmedefichiersquicontientlerpertoiredonn.
Demme,loptionhnexistequedansGNUdf.
Exemple:
>dfh.
FilesystemSizeUsedAvailUse%Mountedon
/dev/hda59.2G7.1G1.8G81%/

dfh
Affichelesinformationsdespacedisquepourtouslessystmesde
fichiersdisponiblessurlesystme.Quanddeserreurssurviennent,
utilepourvrifiersidessystmesdefichierspleins.

II.Principesetcommandesdebase
Commandesdebase

69

Exercices II.6
0.Copiezlefichier/etc/fstabdansvotrerpertoiredetravaillinux
1.Editezlefichierfstab,modifiezenquelqueslignes,ajoutezluiuneligneetsupprimezluiune
ligne
2.Testezlescommandescmpetdiffsurlesfichiers/etc/fstabetlinux/fstab
3.Visualisezlesdiffrencesentrelesfichiers/etc/fstabetlinux/fstabl'aidedela
commandekompare,quevouslancerezsuccessivement:
a) parlemenuApplications(sousmenuDveloppement)
b) parlacommandekomparetapedansunterminal
c) parlelanceurdecommande(menuKpuisactionExcuterunecommande)
4.Affichezlatailleenmgaoctetsoccupeparvotrehomedir
5.Affichezlatailleenkilooctetsdufichier/etc/fstab
6.Affichezlesinformationsdespacedisquepourtouslessystmesdefichiersdisponiblessurvotre
systme
II.Principesetcommandesdebase
Commandesdebase

70

Compression
Trsutilepourcompacterdegrosfichiersetconomiserdelaplace
[un]compressfichier
UtilitairedecompressiontraditionneldUnix.Credesfichiers.Z
Seulementgardpourraisonsdecompatibilit.Performancemoyenne.
g[un]zipfichier
UtilitairedecompressionGNUzip.Credesfichiers.gz
Assezbonneperformance(unpeumeilleurqueZip)
b[un]zip2fichier
Leplusrcentetleplusperformantdesutilitairesdecompression.Credes
fichiers.bz2.Laplupartdutemps2025%meilleurquegzip.
Utilisezceluici!MaintenantdisponiblesurtouslessystmesUnix.

II.Principesetcommandesdebase
Commandesdebase

71

Archivage (1)
Utilepoursauvegarderoupublierunensembledefichiers
tar:loriginetapearchive(archivesurbande)
Crationdunearchive:
tarcvfarchivefichiersourpertoires
c(crer):pourfabriquerl'archive
v(verbeux):utilepoursuivrelaprogressiondelarchivage
f(fichier):archivecredansunfichier(etnonsurunebande)
Exemple:
tarcvf/backup/home.tar/home
bzip2/backup/home.tar

II.Principesetcommandesdebase
Commandesdebase

72

Archivage (2)
Afficherlecontenudunearchiveouvrifiersonintgrit:
tartvfarchive
Extrairetouslesfichiersdunearchive:
tarxvfarchive
Extraireseulementquelquesfichiersdunearchive:
tarxvfarchivefichiersourpertoires
Lesfichiersourpertoiressontdonnsavecunchemin
relatifaurpertoireracinedelarchive.

II.Principesetcommandesdebase
Commandesdebase

73

Options supplmentaires GNU tar


GNUtarsousGNU/Linux
Permetdecompresseretdcompresserdesarchivesauvol.Utile
pourviterdecrerdnormesfichiersintermdiaires.Plusfacile
fairequencombinanttaretgip/bzip2
j:[d]compresseauvolavecbzip2
z:[d]compresseauvolavecgzip
Exemples
tarjcvfprojet.tar.bz2projet/
tarztfprojet.tar.gz

II.Principesetcommandesdebase
Commandesdebase

74

Exercices II.7
0. Ouvrezvotrenavigateuretallezl'URLhttp://tldp.org/LDP/abs/
1. Tlchargezl'archiveabsguide.html.tar.gz(cliquersurAdvancedBashScripting
Guide)
2. Crezlerpertoireunix/absetdplacezl'archivedanscerpertoire
3. Visualisezlecontenudel'archivesansladcompressernil'extraire
4. Dcompressezetextrayezl'archiveenuneseulecommande
5. Crezunrpertoiredenomvotrelogin
6. Copiezsouscerpertoiretouslesfichiersetsousrpertoirescachsdevotrehomedir
7. Fabriquezunearchivecompressedecerpertoire(etnonpasseulementducontenudece
rpertoire)
8. Echangezleparmailavecceluid'unautretudiant
9. Sauvez,dcompressezetextrayezdansvotrerpertoiretmpl'archivequevousavezreue
ATTENTION:nedcompressezjamaisunearchive,enparticulierdansvotrehomedir,sansavoir
auparavantlistsoncontenu,etvrifiquesoncontenutaitbiendansunrpertoire

II.Principesetcommandesdebase
Commandesdebase

75

Liens symboliques
Unliensymboliqueestunfichierspcialquiestjusteunerfrenceau
nomdunautre(fichierourpertoire)
Utilepoursimplifieretrduirelutilisationdudisquequanddeuxfichiers
ontlemmecontenu.
Exemple:
/usr/local/bin/java>/usr/jdk1.5.0_03/bin/java
Commentdistinguerleslienssymboliques:
lslaffiche>etlefichierrfrencparlelien
GNUlsaffichelesliensavecunecouleurdiffrente

II.Principesetcommandesdebase
Lienssymboliquesetphysiques

76

Cration de liens symboliques


Pourcrerunliensymbolique(mmeordrequedanscp):
lnsnom_fichiernom_lien
Pourcrerunlienversunfichierdansunautrerpertoire,avecle
mmenom:
lns../LISEZ_MOI.txt
Pourcrerplusieursliensduncoupdansundossierdonn:
lnsfich1fich2fich3...rep
Poursupprimerunlien:
rmnom_lien
Biensr,celanesupprimepaslefichierrfrencparlelien

II.Principesetcommandesdebase
Lienssymboliquesetphysiques

77

Liens physiques
Pardfaut,lncredesliensphysiques
Unlienphysiqueversunfichierestunfichierordinaire,avec
exactementlemmecontenuphysique
Bienquilsconomisenttoujoursdelaplace,lesliens
physiquessontindiscernablesdesfichiersdorigine.
Sivoussupprimezlefichierdorigine,celanaffectepasle
contenudulienphysique.
Lecontenuestsupprimquandilnyaplusaucunfichier
(lienphysique)quiyfaitrfrence.

II.Principesetcommandesdebase
Lienssymboliquesetphysiques

78

Noms de fichiers et inodes


Pourmieuxcomprendreleslienssymboliquesetphysiques
Utilisateurs
Interfacenomsdefichiers
Liensymbolique

Fichier
rm

Lienphysique
rm

Inode

Interface
inodes
Systmedefichiers

II.Principesetcommandesdebase
Lienssymboliquesetphysiques

79

Exercices II.8
0. Crezunfichierdetextelinux/liencontenantquelqueslignes
1. Crezunliensymboliquedelinux/lienverslinux/lien.sym
2. Crezunlienphysiquedelinux/lienverslinux/lien.phy
3. Vrifiezquelecontenudesdeuxliensainsicrsestbienidentiqueceluide
linux/lien
4. Renommezlefichierlinux/lienenlinux/link
5. Lecontenudesdeuxliensestiltoujourslemme?Expliquez!
6. Crezunliensymboliquesurlefichier/etc/fstab
7. Vrifiezquelecontenudulienestcorrect
8. Recommencezencrantcettefoisunlienphysique
9. Rechercheztousleslienssymboliquesvousappartenant(i.e.setrouvantdansvotre
homedir,ourcursivementdansundesessousrpertoires)
II.Principesetcommandesdebase
Commandesdebase

80

Droits daccs aux fichiers


Utiliserlslpourconsulterlesdroitsdaccs
3typesdedroitsdaccs:
Accsenlecture (r)
Accsencriture (w)
Droitsdexcution(x)

3typesdeniveauxdaccs:
Utilisateur(u)
pourlepropritairedufichier
Groupe(g)
toutfichieraunattributgroupe,
quicorresponduneliste
dutilisateurs
Autres(o)
pourtouslesautres(propritaireet
groupeexclus)

II.Principesetcommandesdebase
Droitsd'accs

81

Contraintes de droits daccs


Pour les fichiers, x sans r est autoris mais sans valeur.
Vousdevezpouvoirlireunfichierpourlexcuter
Les rpertoires requirent la fois les droits r et x : x pour entrer, r pour
accderaucontenu
Vous ne pouvez pas renommer, supprimer ou copier des fichiers dans un
rpertoiresivousnavezpasaccsencriturecerpertoire
Sivous avez accs en criture unrpertoire,vousPOUVEZsupprimer un
fichier mme si vous ne disposez pas de droits dcriture pour ce fichier
(souvenezvous quun rpertoire est juste un fichier dcrivant une liste de
fichiers).Celapermetmmedemodifierunfichier(lesupprimeretlerecrer)
mmeprotgencriture

II.Principesetcommandesdebase
Droitsd'accs

82

Exemples de droits daccs


rwrr
Lisibleetmodifiablepourlepropritaire,seulementlisiblepour
lesautres.
rwr
Lisibleetmodifiablepourlepropritaire,seulementlisiblepour
lesutilisateursappartenantaugroupedufichier.
drwx
Rpertoireseulementaccessibleparsonpropritaire
rx
Fichierexcutableseulementparlesautres,maisniparvotre
groupeniparvousmme.Droitsdaccstypiqued'unpige!
II.Principesetcommandesdebase
Droitsd'accs

83

chmod: modifier les permissions


chmodpermissionsfichiers
2formatspossiblespourpermissions:formatenbase8ou
formatsymbolique
Formatenbase8:chmodabcfichiers
aveca,betcvalantr*4+w*2+x(r,w,xgaux0ou1)
Exemple:chmod644fichier(rwpouru,rpourgeto)
Formatsymbolique:plusfacilecomprendresurdesexemples
chmodgo+r ajouterledroitenlectureaugroupeetauxautres
chmoduw
supprimerledroitdcriturepourlepropritaire
chmodax
(all)enleverlesdroitsdexcutiontousles
utilisateurs

II.Principesetcommandesdebase
Droitsd'accs

84

Autres options de chmod (1)


chmodRa+rXlinux/
Rendlinuxettoutcequilcontientaccessibletoutle
monde!
R:appliqueleschangementsrcursivement
X:x,maisseulementpourrpertoiresetfichiersdj
excutables.Trspratiquepourouvrirrcursivement
laccsdesrpertoires,sansdonnerledroitdexcution
touslesfichiers
II.Principesetcommandesdebase
Droitsd'accs

85

Autres options de chmod (2)


chmoda+t/tmp
t:(sticky:collant).Permissionspcialepourles
rpertoires,autorisantuniquementleffacementdun
fichierparsonpropritaireouparceluidurpertoire
Utilepourlesrpertoiresaccessiblesencriturepar
plusieursutilisateurs,comme/tmp

II.Principesetcommandesdebase
Droitsd'accs

86

Exercices II.9
Placezvousdanslerpertoirelinux,puis:
Crezlefichiervidefichier,etexaminezensuitesespermissions
Modifiezsuccessivementlespermissionsdurpertoirelinuxpour:
supprimertouslesaccstoutlemonde
ajouterl'accsenlecture,critureettraversepourvousseul
ajouterl'accsenlectureettraversepourlegroupe

Crezlerpertoirelinux/tmp,puislefichierlinux/tmp/perm,etpositionnez
successivementlespermissionsadquatespourquevouspuissiez:
lire,modifieretsupprimerperm
lire,modifiermaispassupprimerperm
lire,supprimermaispasmodifierperm
liremaisnimodifieretnisupprimerperm

Crezlefichierlinux/tmp/shareetpositionnezlespermissionsncessairespourqu'un
utilisateurdevotregroupepuisselire,modifiermaispassupprimershare
II.Principesetcommandesdebase
Droitsd'accs

87

Impression sous Unix


Multiutilisateurs,multitravaux,multiclients,multiimprimantes:
SousUnix/Linux,lescommandesdimpressionnimprimentpasvraiment.
Ellesenvoientdestchesdesqueuesdimpression,soitsurlamachinelocale,
soitsurdesserveursdimpressionousurdesimprimantesrseau
Systmeindpendantdetouteimprimante:
Lesserveursdimpressionnacceptentquedes
travauxenPostScriptouentexte.Lespilotes
dimprimantesurleserveursechargentdela
conversionversleformatproprechaqueimprimante
Systmerobuste:
Redmarrezunsystme,ilcontinueraimprimerlestravauxenattente
L'impressionestsoitpilloteparl'application(commeOpenOffice)soitlance
parl'utilisateur(impressiondefichierPostScriptoutexte)
II.Principesetcommandesdebase
Commandesdebase

88

Impression de fichiers PostScript


Variabledenvironnementutile:PRINTER
Dfinitlimprimantepardfautsurlesystme.Exemple:
exportPRINTER=niv2a
lpr[Pimp]fichiers
Envoielesfichierslafiled'attentedeimp,l'imprimantespcifie.Les
fichiersdoiventtreenformattexteouPostScript
a2ps[Pimp]fichiers
ConvertitdenombreuxformatsversPostScriptetlenvoielersultat
verslaqueuespcifie.Fonctionnalitsutiles:plusieurspages/feuille,
numrotationdespages,cadredinformations
a2psofichier.psfichier
ConvertitfichierdanslefichierPostScriptfichier.ps
II.Principesetcommandesdebase
Commandesdebase

89

Contrle de travaux dimpression


lpq[Pqueue]
Affichetouslestravauxdimpressiondelaqueuepardfaut
oudelaqueuedonne
lpisnotready
RankOwnerJobFile(s)TotalSize
1stasloane84troyens_windows_nsa.ps60416bytes
2ndamoore85gw_bush_erreurs_irak.ps65024000bytes

cancelnumro_tche[queue]
Retirelatchespcifiedelaqueuedimpression
Lecontrledestravauxd'impressionestgalementpossible
depuisleWindowManager:KjobViewersousKDE
II.Principesetcommandesdebase
Commandesdebase

90

Fichiers PostScript et PDF


ManipulationdunfichierPostScript
Visualisationaveckghostview
ConversionpossibleenPDFavecps2pdf:
ps2pdfdocument.ps[document.pdf]
Impressiondirecteaveclpr
ManipulationdunfichierPDF
Visualisationavecacroread,kpdf
ConversionpossibleenPostScriptavecpdf2ps:
pdf2psdocument.pdf[document.ps]
ImpressionaprsconversionenPostScript
II.Principesetcommandesdebase
Commandesdebase

91

Exercices II.10
1. Crezlefichierdetextelinux/texte.txtquicontientplusieurslignedetexte

2. Fabriquez le fichier linux/texte.ps, version PostScript du fichier


linux/texte.txt, l'aide la commande a2ps, et visualisezle successivement
aveclescommandeskpdfetacroread
3. Copiezlefichier/usr/share/doc/bash3.1/loadables/cat.cdansvotre
rpertoirelinux
4. Fabriquezlefichierlinux/cat.ps,versionPostScriptdufichierlinux/cat.c,
l'aidelacommandea2ps,etvisualisezlesuccessivementaveclescommandeskpdf
etacroread
5. Recommencez,maisenproduisantcettefoisunfichierPostScript raisond'unepage
(de source ASCII) par page (PostScript) dans lequel les lignes de code C sont
numrots
II.Principesetcommandesdebase
Exercices

92

III.Redirectionsetprocessus
Entres/sortiesetredirections
Lestuyaux
Contrledetcheetdeprocessus

93

Descripteur de fichier
Lesentres/sortiesdescommandessontreprespardes
descripteursdefichier("filedescriptor")
Undescripteurdefichierestunentierassociunfichierspcial
Onpeutmodifier(enlesredirigeant)lesdescripteursdefichier
associsauxentres/sortiesden'importequellecommande
Lesentres/sortiesstandardsnesontquedesdescripteursdefichier
prdfinisassocispardfautauxentres/sortiesdescommandes
Pourchaquecommande,ondistingue:
l'entrestandard:c'estleclavier
lasortiestandard:c'estl'cran
lasortied'erreurstandard:c'estl'cran
III.Redirectionsetprocessus
Entres/sortiesetredirections

94

Entre standard (1)


Denombreusescommandes,invoquessansargumentsen
entre,lisentleursdonnessurlentrestandard
Lefiledescriptordcrivantl'entrestandardest0
L'entrestandardestaussilefichier/dev/stdin
Pardfaut,l'entrestandardestleclavier
L'entrestandardpeuttrecrite(redirige)dansun
fichierenutilisantlesymbole<

III.Redirectionsetprocessus
Entres/sortiesetredirections

95

Entre standard (2)


[hal@/home/bob]cat
windows
windows
linux
linux
<CtrlD>

catprendlentrestandard
commeentre,c'estdiretout
cequiesttapsurleclavier!
(jusqu'aupremier<CtrlD>)

cat<participants.txt
Lentrestandarddecatestprisedanslefichierindiqu.Note:ici,
oncriraitpluttcatparticipants.txt
ls<les_fichiers_a_lister
Nemarchepascarlacommandelsnelitpassursurentrestandard
maistrateseulementsesarguments!
III.Redirectionsetprocessus
Entres/sortiesetredirections

96

Entre standard (3)


[hal@/home/bob]sort
windows
linux
<CtrlD>
linux
windows

sortprendlentrestandard
commeentre,c'estdiretout
cequiesttapsurleclavier!
(jusqu'aupremier<CtrlD>)

sort<participants.txt
Lentrestandarddesortestprisedanslefichierindiqu.Note:
ici,oncriraitpluttsortparticipants.txt
mails"Hello"dan<my_mail.txt
Lentrestandarddelacommandemailestredirigeverslefichier
my_mail.txtquicontientlecorpsdumessage

III.Redirectionsetprocessus
Entres/sortiesetredirections

97

Sortie standard (1)


Touteslescommandesquiproduisentdutextesurle
terminallefontencrivantsurleursortiestandard
Lefiledescriptordcrivantlasortiestandardest1
Lasortiestandardestaussilefichier/dev/stdout
Pardfaut,lasortiestandardestl'cran
Lasortiestandardpeuttrecrite(redirige)dansunfichier
enutilisantlesymbole1>ousimplement>
Lasortiestandardpeuttrerajoutelafindunfichier
existantparlesymbole1>>ousimplement>>

III.Redirectionsetprocessus
Entres/sortiesetredirections

98

Sortie standard (2)


cat>un_fichiers.txt
Copiel'entrestandard(lescaractrestapsauclavier)dansun_fichiers.txt
ls~>tous_mes_fichiers.txt
Copielersultatdelacommandelsdanslefichier
tous_mes_fichiers.txt.Lefichierestcrass'ilexistaitavantoubien
crs'iln'existaitpas.
ls~/bin>>tous_mes_fichiers.txt
Ajoutelasortiedelanouvellecommandelslasuitedufichier
tous_mes_fichiers.txt
cat.zlogin.zshrc.zlogout>zsh_all.txt
Concatnelecontenudestroisfichiers.zlogin,.zshrcet.zlogoutdansle
fichierzsh_all.txt
find/name'*.gif'print>images.txt
Copielasortiedelacommandefinddanslefichierimages.txt

III.Redirectionsetprocessus

Entres/sortiesetredirections

99

Lerreur standard (1)


Lesmessagesderreurd'unecommandesontenvoysvers
lerreurstandard(etnonpaslasortiestandard)
Lefiledescriptordcrivantl'erreurstandardest2
L'erreurstandardestaussilefichier/dev/stderr
Pardfaut,l'erreurstandardestl'cran
L'erreurstandardpeuttrecrite(redirige)dansunfichieren
utilisantlesymbole2>
L'erreurstandardpeuttrerajoutelafindunfichierexistant
parlesymbole2>>

III.Redirectionsetprocessus
Entres/sortiesetredirections

100

Lerreur standard (2)


Redirectiondel'erreurstandardversunfichier:
gccmyfile.c2>erreur.log
Redirectiondelasortieetdel'erreurstandardversdesfichiers
distincts:
gccmyfile.c>comp.log2>erreur.log
Redirectiondelasortieetdel'erreurstandardverslemmefichier:
gccmyfile.c>comp.log2>&1
Syntaxealternative:
gccmyfile.c&>comp.log
Onpeutignorerleserreursenredirigeantl'erreurstandardversle
pseudofichier/dev/null:
find/name'*.gif'>images.txt2>/dev/null
III.Redirectionsetprocessus
Entres/sortiesetredirections

101

Exercices III.1
1. Fabriquezl'aided'uneseulecommandelefichierdetextelinux/date.txtquicontientla
dateetl'heurecourantes
2. Fabriquezlefichierlinux/debutformdes15premireslignesde/etc/fstab
3. Fabriquezlefichierlinux/finformdes15dernireslignesde/etc/fstab
4. Fabriquezlefichierlinux/extremesquicontientleslignesdelinux/debutsuiviesdes
lignesdelinux/fin
5. Fabriquez(enplusieurstapes)lefichierlinux/extremes.2,identique
linux/extremes,maissansutiliserdefichiersintermdiaires
6. Fabriquezlefichierlinux/mes_reps.txtquicontientlalistercursivedetousvos
rpertoiresetsousrpertoires
7. Recherchezdanslesystmelecheminabsoludufichierfstabsansgnreraucunmessage
d'erreur
8. Fabriquezlefichierlinux/network.txtquicontientexactementlalistercursivedetous
lesfichiersetrpertoiresdurpertoire/etcetdontlenomcontientlachanenet
III.Redirectionsetprocessus
Entres/sortiesetredirections

102

Les tuyaux (1)


Pourcombineretenchanerlescommandesentreelles
LestuyauxUnixserventredirigerlasortiedunecommandevers
lentreduneautrecommande:
find.name'*.gif'print|more
ls|wcl
cat*.log|grepierreur|sort
cat/home/*/devoirs.txt|grepnote|more

Onpeutcombinertuyauxetredirections:
catdevoirs/*/note.txt|grepnote>notes.txt
find/name'*.cpp'2>/dev/null|more

III.Redirectionsetprocessus
Lestuyaux

103

Les tuyaux (2)


Lestuyauxs'utilisentprincipalementavecdesfiltresdestins
modifierlasortied'unecommandeparapplicationsuccessive
d'autrescommandes
Recherchedelignecontenantunmotifparmileslignesduflux
d'entreaveclescommandesgrep,egrepetfgrep
Slectiondecolonnesoudechampssurleslignesdufluxd'entre
aveclacommandecut
Trideslignesdufluxd'entreaveclacommandesort
Remplacementdecaractressurleslignesdufluxd'entreavecla
commandetr
Duplicationducanaldesortiestandardaveclacommandetee
III.Redirectionsetprocessus
Lestuyaux

104

Les commandes tr et cut


trchaine1chaine2
Remplacelescaractresdechaine1parlescaractresdechaine2
echoBonjourToutleMonde|tr'Bol''b0L'
Affiche b0nj0urt0utLem0nde
echoBonjourToutleMonde|tr'AZ''az'
Affichebonjourtoutlemonde
echo'ademain!'|trs''
Afficheademain!

cut[option]...[fichier]...
Retournedespartiesdeslignesdufichierfichier(oudel'entrestandard)
echo'/usr/bin/X11:/usr/bin:/bin'|cutd':'f2
Retourne/usr/bin
lsl|trs''|cutd''f3,6,8
Affichelesfichiersdurpertoirecourantprcdsparlepropriraireetladatede
derniremodification,raisond'unfichierparligne
III.Redirectionsetprocessus
Lestuyaux

105

La commande tee
tee[a]fichier
Lacommandeteepeuttreutilisepourenvoyerenmme
tempslasortiestandardverslcranetversunfichier.
make|teecompil.log
Lancelacommandemakeetstockesasortiedanslefichier
compil.log
makeinstall|teeacompil.log
Lancelacommandemakeinstalletrajoutesasortie
lafindufichiercompil.log

III.Redirectionsetprocessus
Lestuyaux

106

Exercices III.2
1. Reprenezlesexemplesd'utilisationdestuyauxetexprimentez!
2. Lisezavecattentionlespagesdemanueldescommandestretcut,etanalysezavecsoinles
optionss(pourtr),detf(pourcut)
3. Affichezlenombredefichierset/ourpertoirescontenusdansvotrehomedir
4. Affichezlalistedesfichiers(etseulementdesfichiers)contenudansvotrehomedir
5. Affichezlenombretotaldefichiersrguliers(nirpertoire,niliensymbolique)contenu
rcursivementdansvotrehomedir
6. Afficherlenombretotaldefichiersdusystmedenom*.cppauxquelsvousavezaccs(en
lecture)
7. Affichezl'aided'uneseulecommande,enlesnumrotantde4050,leslignes4050
(incluses)dufichier/etc/fstab
8. Affichezlataillesuiviedunomdesfichiersdevotrerpertoire.kde/share/wallpapers
sousformelisible(parexemple4.0Kaulieude4096),etseulementlatailleetlenom,raison
d'uneligneparfichier
III.Redirectionsetprocessus
Lestuyaux

107

La notion de processus (1)


Depuissacration,Unixprendenchargelevraimulti
tchepremptif
Facultdelancerdenombreusestchesenparallle,etde
lesinterrompremmesiellesontcorrompuleurpropre
tatouleurpropresdonnes
Facultdechoisirquelsprogrammesprcisvouslancez
Facultdechoisirlesentresutilisesparvos
programmes,etdechoisirovontleurssorties

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

108

La notion de processus (2)


EnLinux,toutcequis'excuteestunprocessus
Unprocessus:
unecommande,ungroupedecommandeouunscriptencours
d'excution
soncontexted'excution:entres/sorties,variables
d'environnement

Chaqueprocessus:
s'excutedefaonindpendanteetentempspartag
possdesespropresentres/sorties
peuttreindividuellementsuspendu,ractivoutu
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

109

Processus en tche de fond


Mmemodedutilisationdanstouslesshells
Trsutile:
Pourlestchesenlignedecommandedontlesrsultats
peuventtreexaminsplustard,enparticuliercellesqui
prennentbeaucoupdetemps.
Pourlancerdesapplicationsgraphiquesdepuislalignede
commandeetlesutiliserensuitelasouris.

Dmarrerunetcheetajouter&lafin
find/name'*.gif'>~/images.txt&

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

110

Contrle des tches de fond


jobs
Fournitlalistedestchesdefondissuesdummeshell
[1]Runningfind/name'*.gif'>~/images.txt&
[2]+Runningmakeinstall>/dev/null&

fg
fg%n
Fairedeladernire(ounimetche)defondlatchecourante
Mettrelatchecouranteenarrireplan:
<CtrlZ>
bg
kill%n
Interromptlanimetche
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

111

Exemples de contrle de tches


[hal@home/bob]jobs
[1]Runningfind/name'*.gif'>~/images.txt&
[2]+Runningmakeinstall>/dev/null&
[hal@home/bob]fg
makeinstall
[hal@home/bob]<CtrlZ>
[2]+Stoppedmakeinstall
[hal@home/bob]bg
[2]+makeinstall&
[hal@home/bob]kill%1
[1]+Terminatedfind/name'*.gif'>~/images.txt&

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

112

Liste de tous les processus


psux
Affichetouslesprocessusappartenantlutilisateurcourant.
psaux(remarque:psedfsursystmesSystemV)
Affichetouslesprocessusexistantsurlesystme
psaux|grepbart|grepbash
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
bob30390.00.259161380pts/2S14:350:00/bin/bash
bob31340.00.253881380pts/3S14:360:00/bin/bash
bob31900.00.263681360pts/4S14:370:00/bin/bash
bob34160.00.000pts/2RW15:070:00[bash]
PID:
VSZ:
RSS:
TTY:
STAT:

(ProcessID)Identifiantduprocessus
(VirtualSiZe)Taillevirtuelleduprocessus(code+donnes+pile)
(ReSidentSize)NombredeKooccupsenmmoire
(TeleTYpe)Terminal
Statut:R(Runnable:excutable),S(Sleep:endormi),W(paging:encoursdepagination),Z(Zombie)...

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

113

Arrt de processus
killpid...
Envoieunsignaldarrtauxprocessusspcifis.Celapermetauxprocessusde
sauvegarderleursdonnesetsarrtereuxmmes.Autiliserenpremierrecours.
Exemple:
kill3039313431903416
kill9pid...
Envoieunsignaldarrtimmdiat.Lesystmeluimmesechargedarrterles
processus.Utilequandunetcheestvraimentbloque(nerpondpasun
killsimple)
killall[signal]commande
Arrtetouteslestchesexcutantcommande.Exemple:
killallbash
kill91
Arrtetouslesprocessusdelutilisateurcourant(1:touslesprocessus)

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

114

Activit en temps rel des processus


top:Affichelesprocessuslesplusactifs,trisparutilisationduproc.
top15:44:33up1:11,5users,loadaverage:0.98,0.61,0.59
Tasks:81total,5running,76sleeping,0stopped,0zombie
Cpu(s):92.7%us,5.3%sy,0.0%ni,0.0%id,1.7%wa,0.3%hi,0.0%si
Mem:515344ktotal,512384kused,2960kfree,20464kbuffers
Swap:1044184ktotal,0kused,1044184kfree,277660kcached
PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
3809jdoe250625639321312R93.80.80:21.49bunzip2
2769root160157m80m90mR2.716.05:21.01X
3006jdoe1503092815m27mS0.33.00:22.40kdeinit
3008jdoe16056248924468S0.30.20:06.59autorun
3034jdoe1502676412m24mS0.32.50:12.68kscd
3810jdoe16028929161620R0.30.20:00.06top

Lordredetripeuttrechangentapant
M:utilisationmmoire,P:%CPU,T:tempsdexcution.
Onpeutarrterunetcheentapantk(kill)etsonnumro
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

115

Commandes time, times et uptime


timecommande
Excutelacommandecommandeetafficheletempsconsommparcetteexcution.
Exemple:
$timelsR/&>/dev/null
real0m7.917s
user0m1.698s
sys0m2.294s
times
Affichelestempscumulspourtouslesprocessuslancsdepuisledbutdelasession
uptime
Afficheletempsdepuislequellesystmeestactif(doncletempsdepuisledernierboot)
ainsiquelesvaleursmoyennesdechargedusystme
Ilexistegalementdenombreusesapplicationsgraphiquespourcontrlerlesparamtres
systmes(charge,processus)commeparexempleksysguardsousKDE

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

116

Groupage de commandes
Squencedecommandesaveclesymbole;
echomesfichiers;ls;echo
Groupagelogiqueaveclesoprateurs||(ou)et&&(et)
cat~/infos2>/dev/null||echo"erreur"
Nexcuteechoquesilapremirecommandechoue
ls~/infos2>/dev/null&&cat~/infos
Naffichelecontenud'infosquesilacommandelsrussit
Groupageensousshellaveclesparenthses"("et")"
pwd;(cd..;pwd);pwd
Affichesuccessivementlescheminsdurpertoirecourant,du
rpertoirepre,puisnouveaudurpertoirecourant
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

117

Excutions diffres
sleep60
Attend60secondes(neconsommepasderessources
systme)
at6:00pmtodaychmodorx/net/devoirs
Enlveaujourd'hui18hlesdroitsenlectureetenaccsau
rpertoire/net/devoirspour"others"
crontab
Grelacrontabdel'utilisateurpourlancerdes
commandesentempsdiffr

III.Redirectionsetprocessus
Contrledetcheetdeprocessus

118

Exercices III.3 (1)


1. Excutezlacommandexclockupdate1.Pouvezvousexcuterunenouvellecommande
dansleterminaldanslequelvousvenezdelancerceprocessus?pourquoi?
2. Suspendezl'excutiondeceprocessussansletuer.Excutezlacommandejobs.Qu'indique
cettecommande?Reprenezl'excutionduprocessussuspenduenarrireplan
3. Excutezlacommandexclockdigitalupdate1danslemmeterminal.Suspendez
l'excutiondeceprocessussansletuer.Excutezlacommandejobs.Qu'indiquecette
commande?Reprenezl'excutiondecedernierprocessussuspenduenarrireplan
4. AffichezlePIDdesdeuxprocessusquevousvenezdelancer
5. Faitespasserlepremierprocessus(issudexclockupdate1)enavantplanetarrterce
processus.Excutezlacommandejobs.Qu'indiquecettecommande?
6. Excutezlacommandekill9%2.Quesepassetil?Excutezlacommandejobs.
Qu'indiquecettecommande?
7. AfficherlePIDd'unecommandeparsonnom,demanirequeseullePIDetlenomdela
commandeexcutes'affichesurlaligne(ousurleslignessilammecommandeestlance
plusieursfois)
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

119

Exercices III.3 (2)


1. Trouvezdeuxfaonsdelancerlacommandexlogodanssoixantesecondespartirde

maintenant (utilisez la commande xlogo avec l'option d et tapez : xlogo d :


0.0)
2. A l'aide de la commande crontab, afficher un nouveau logo Xwindow toute les
minutes
3. Excutezlacommandetopetregardezendirectlesprocessusquis'excutentsurvotre
machine,ainsiquelachargedevotremachine
4. Lancez ksysguard et regardez en direct les processus qui s'excutent sur votre
machine,ainsiquelachargedevotremachine
5. Affichez le temps que mets un ls R pour s'excuter depuis votre homedir, et
n'affichezriend'autre
6. AffichezletempsquemetsunlsRpours'excuterdepuislerpertoireracine/,et
n'affichezriend'autre
7. Affichezexactementletempsdepuislequellesystmelinuxdanslequelvoustesat
lanc
III.Redirectionsetprocessus
Contrledetcheetdeprocessus

120

IV.Complmentssurleshell
Variables
Alias
Substitutiondecommandes
Fichiersdeconfigurationbash
Lacommandefor
Lescommandesbasenameetdirname
121

Variables denvironnement
Lesshellspermettentlutilisateurdedfinirdesvariables.
Cellescipeuventtrerutilisesdanslescommandesshell.
Convention:lesnomssontenminuscules
Vouspouvezaussidfinirdesvariablesdenvironnement:des
variablesquisontsontaussivisiblesdepuislesscriptsoules
excutablesappelsdepuisleshell.
Convention:lesnomssontenmajuscules
Lacommandeenv
Affichetouteslesvariablesdenvironnementexistantesainsique
leurvaleur

IV.Complmentssurleshell
Variables

122

Variables de shell
Unseultypepossible:lachanedecaractres
Pasbesoind'tredclarepourrecevoirunevaleurparaffectation
une_variable=100
Attention:ilnefautPASmettred'espaceentrelavariable,le
signe=etlavaleur
Utilisationd'unesyntaxeparticulirepouraccderlavaleur
echo$une_variable
Pourqu'unevariablegardesavaleurinitialedansunsousshell
exportune_variable
IV.Complmentssurleshell
Variables

123

Exemples de variables de shell


Variablesdeshell
projdir=/home/bob/unix/projet
lsla$projdir;cd$projdir
Variablesdenvironnement
cd$HOME
echo$PWD
echo$PRINTER
exportJAVA_SOURCE=$HOME/java/src

IV.Complmentssurleshell
Variables

124

Variables standards
Utilisespardenombreusesapplications
HOME
Rpertoiredelutilisateurcourant.

MANPATH
Cheminderecherchedespagesde
manuel.

PATH
Cheminderecherchedescommandes

EDITOR
diteurpardfaut(vi,emacs...)

USER
Nomdelutilisateurcourant

TERM
Nomduterminal/modecourant

HOST
Nomdelamachinelocale

DISPLAY
cransurlequelafficherlesapplications
X(graphiques)

PRINTER
Nomdelimprimantepardfaut
SHELL
Nomdushellcourant

IV.Complmentssurleshell
Variables

LD_LIBRARY_PATH
Cheminderecherchedebibliothques
partages

125

Les variables de type PATH


PATH
Spcifielordrederecherchedescommandespourleshell
~/bin:/usr/local/bin:/usr/bin:/bin:/sbin
LD_LIBRARY_PATH
Spcifielordrederecherchepourlesbibliothquespartages(codes
binairespartagsparlesapplications,commelabibliothqueC)pourld
/usr/local/lib:/usr/lib:/lib:/usr/X11R6/lib
MANPATH
Spcifielordrederecherchepourlespagesdemanuel
/usr/local/man:/usr/share/man

IV.Complmentssurleshell
Variables

126

Variables et substitutions
Substitutiondelavaleurd'unevariable
echo$HOST

Substitutionprotgedelavaleurd'unevariable
TMP=${USER}_$$(etnon$USER_$$)

Substitutiondursultatd'unecommande
nb_files=$(ls|wcl)(ou`ls|wcl`)

Autressubstitutions
Danslessubstitutionssuivantes,silavariablevaraunevaleur,alors
${varVAL} substituevar,sinonsubstitueVAL
${var=VAL} substituevar,sinondonnevarlavaleurVALet
substituevar
${var?VAL} substituevar,sinonafficheVALetquitteleshell
${var+VAL} substitueVAL,sinonnesubstituerien
IV.Complmentssurleshell
Substitutionsdecommande

127

Alias
Lesshellsvouspermettentdedfinirdesalias(desraccourcispourdescommandes
quevousutiliseztrssouvent)
Exemples
aliasls='lsF'
Utilepourtoujourslancerdescommandesaveccertainsparamtres
aliasrm='rmi'
Utilepourfairequermdemandetoujoursuneconfirmation
aliascherche='find$HOMEname'
Utilepourremplacerdescommandesutilisesrgulirement
aliascia='./home/sydney/env/cia.sh'
Utilepourinitialiserrapidementunenvironnement
(.estunecommandeshellpourexcuterlecontenudunscriptshell)
Enbashlesaliassontdfinisdanslefichier.bash_aliases

IV.Complmentssurleshell
Alias

128

Les fichiers de bash (1)


Desscriptsshellsontlusautomatiquementchaque
foisquunshellbashestlancoutermin
Lescript/etc/profile:
nonmodifiableparl'utilisateur
Lesscripts~/.bash_profileet~/.bash_logout:
modifiablesparl'utilisateur
Permetdepersonnalisersonenvironnement
Lesscripts~/.bash*nesontpasobligatoires

IV.Complmentssurleshell
Fichiersdeconfigurationbash

129

La commande for (1)


Excutelescommandescommandesendonnantsuccessivementla
variablevarlesvaleursval_1,...,val_2,val_n
forvarinval_1val_2...val_n
do
commandes
done
val_ipeuttreunechanedecaractresquelconqueincluantdes
caractresgnriques(wildcards)
forfilein*;do...done
Enl'absencedeval_i,lavariablevarprendcommevaleurs
successiveslesvaleursdesparamtresduscript:
forarg
doecho$arg;done
IV.Complmentssurleshell
Lacommandefor

130

Les fichiers de bash (2)


/etc/profileet~/.bash_profile
Scriptsshelllusensquencechaquefoisquunshell
bashestlanclorsd'unlogin
~/.bashrc
Scriptsshelllussileshelllancestinteractifetnonpas
unshelldelogin.Engnral,cefichierestgalement
intgrdanslefichier~/.bash_profile
~/.bash_logout
Scriptsshellluslasortied'unshelldelogin(aprsla
commandeexit)

IV.Complmentssurleshell
Fichiersdeconfigurationbash

131

Les fichiers de bash (3)


/etc/profileet~/.bash_profile
Contientlesinitialisationsdesvariablesd'environnement
propreunshelldelogin(umask,prompt)etensuite
inclutlefichier~/.bashrc
~/.bashrc
Contientlesinitialisationsdesautresvariables
d'environnementcommelePATH,maisaussides
fonctionsoudesalias
~/.bash_logout
Contientdescommandesspcifiqueslasortied'un
shelllogin(nettoyage)
IV.Complmentssurleshell
Fichiersdeconfigurationbash

132

La commande for (2)


Pourafficherlesfichiersexcutablesdurpertoirecourant:
forfilein*
do[f$fileax$file]&&echo$file;done
PourcompilerdesfichierssourcesCdurpertoirecourant:
forfileinprog1.cprog2.cprog3.c
dogccc$file;done
PourimprimertouslesfichierssourcesCdurpertoirecourant:
forfilein*.c
dolpr$file;done
Pourtuertouslesprocessusdel'utilisateurdenom"emacs":
forprocin$(psx|grepemacs|cutd''f2)
dokill$proc;done
IV.Complmentssurleshell
Lacommandefor

133

La commande seq
Afficheunesquencedenombres
seqij
Siiestpluspetitougalj,affichelesentiersi,i+1,...,j,sinon
nefaitrien
seqscharij
Remplacelesparateur(un'\n'pardfaut)parlecaractrechar
seqikj
Siiestpluspetitougalj,affichelesentiersi,i+k,...,j,pour
toutlesktelsquei+knedpassepasj,sinonnefaitrien
Utilislaplupartdutempsavecl'itrationfor
foriin$(seq1$max);do
mkdir"tmp$i"
done
IV.Complmentssurleshell
Lacommandefor

134

Manipulation des chemins


basenamefichier[suffix]
Retournelenomdebased'unfichier:
basenamexxx/yyy/zzz
Retournezzz
basenamexxx/yyy/zzz.c
Retournezzz.c
basenamexxx/yyy/zzz.c'.c'
Retournezzz

dirnamefichier
Retourneleprfixerpertoired'unfichier:
dirnamexxx/yyy/zzz
Retournexxx/yyy

Lachanedecaractresfichiern'apasbesoind'trele
chemind'unvraifichier!
IV.Complmentssurleshell
Lescommandesbasenameetdirname

135

Exercices IV.1
1. Crez le rpertoire linux/java, et sous ce rpertoire, crez automatiquement plusieurs fichiers (vides)
dont les noms sont de la formes tpX.exoY.java avec X prenant les valeurs de 1 10 et Y prenant les
valeursde15(soit50fichiersautotal)
2. Fabriquez pour chaque fichier de nom tp9.exo*.java ou tp10.exo*.java une copie de nom
tp9.exo*.java.bakoutp10.exo*.java.bak
3. Renommezchaquefichierdenomtp10.exo*.java.bakentp10.exo*.txt
4. Crezautomatiquementsouslerpertoirelinux/java10rpertoirestp1,tp2,...,tp10
5. DplaceztoutfichierdenomtpX*danslerpertoiretpX
6. Crezlerpertoirelinux/passwd,etsouscerpertoire,crezautomatiquementautantdesousrpertoires
qu'il y a de lignes dans le fichiers /etc/passwd, chaque sousrpertoire ayant pour le nom le premier
champdechaqueligne(parexemplerootpourlapremireligne)
7. Crezautomatiquementdanschaquerpertoiredenomrepdurpertoirelinux/passwdunfichierdenom
info.txtvide
8. Ajouterchaquefichierinfo.txtdurpertoirelinux/passwd/replenomenclairdul'utilisateurou
duprocessuscorrespondant
9. Renommez tous les fichiers linux/passwd/rep/info.txt en linux/passwd/info.rep et
effaceztouslessousrpertoireslinux/passwd/rep
IV.Complmentssurleshell
Exercices

136

V. Programmation shell
Scriptshell
Variables,paramtresetsubstitutions
Structuresdecontrle
Fonctions
Commandesutiles

137

Scripts shell
Langagesdushell
Unlangagedeprogrammationinterprt
Notiondevariables,deparamtres,destructuresdecontrles,
defonctions,...
Autantdelangagesquedeshells(sh,bash,ksh,zsh,...)

Scriptshell
Unfichierexcutablecontenantdesinstructionsd'un
shelldonn
ScriptsshelletcommandesLinux
Equivalentsettratsdelammefaonparlesystme
V.Programmationshell
Introductionauscriptshell

138

Contenu d'un script shell


L'entte
Indiqueleshellutiliserpourinterprterlescommandesplaces
danslefichier:#!/bin/bash(pourleBourneAgainSHell)
Desvariables
dclaration/affectation:une_variable=123
valeur:$une_variable
paramtres:$1,$2,...,$9
Desappelsdescommandesoudesscripts
TouteslescommandesLinuxettouslesscriptsaccessibles
Desinstructions
Affectation/rfrencedevariables,instructionsconditionnelleset
itratives,instructionsd'entre/sortie,...
V.Programmationshell
Introductionauscriptshell

139

Variables et paramtres (1)


Variablesspciales
$0:lenomduscript(dufichier)
$#:lenombredeparamtresduscript
$*:lalistedesparamtresduscript
$?:lecodederetourdeladernirecommandeexcute
$$:lenumrodeprocessusdushellcourant(PID)
Paramtres
Seulement9nomsdevariable$1,$2,...,$9
L'instructionshiftsupprimelepremierparamtreetdcaleles
autresverslagauche
L'instructionshiftnsupprimelesnpremiersparamtres
etdcalelesautresverslagauche
V.Programmationshell
Introductionauscriptshell

140

Variables et paramtres (2)


Variablesprdfiniesenbashetmisejourautomatiquement
PPID:lenumroduprocessuspre
PWD:lenomdurpertoirecourant
RANDOM:unnombreentieralatoire
SECONDS:letemps(ensecondes)couldepuislelancementdu
shellcourant
!:lenumrodudernierprocessuslancenarrireplan
_:lederniermotdeladernirecommandeexcute

Variabled'environnementpourl'excutiondescript
BASH_ENV:lenomdufichierbashexcutchaquedbutde
script
V.Programmationshell
Introductionauscriptshell

141

Exemple de script (1)


#!/bin/bash
#dbutduscript
echo"Hello$USER"
echo"Youarecurrentlyon$HOST"
echo"Thecontentofyourhomedir:"
/bin/ls
#affectationdelavariableNBFILES
NBFILES=$(ls|wcl)
echo"Total:$NBFILESelements"
welcome.sh
V.Programmationshell
Introductionauscriptshell

142

Exemple de script (2)


[hal@/home/bob]chmoda+xwelcome.sh
[hal@/home/bob]lslwelcome.sh
rwxrxrx1bobbob2012005080117:05welcome.sh*
[hal@/home/bob]lsF
Desktop/
Trash/
Mail/
bin/

emacs/
lib/

[hal@/home/bob]./welcome.sh
Hellobob
Youarecurrentlyonhal
Thecontentofyourhomedir:
Desktop
Trash
emacs
Mail
bin
lib
Total:9elements

V.Programmationshell
Introductionauscriptshell

tmp

tmp/ welcome.sh*
unix/

welcome.sh*
unix

143

Excution d'un script shell


.my_script.shoubashmy_script.sh
Excutelescommandescontenuesdanslefichiersmy_script.sh
dansleshellcourant
./my_script(lefichiermy_scriptalesdroitsrx)
Excutelescommandescontenuesdanslefichiersmy_script.sh
dansunsousshelldushellcourant
Autrescommandesquis'excutentdansunsousshelldushellcourant
Lescommandesreliespardestuyaux
cat*.log|grepierreur|sort
Lescommandesgroupesentre"("et")"
pwd;(cd..;pwd);pwd
Lesstructuresdecontrles(voirplusloin)
if,case,for,whileetuntil
V.Programmationshell
Introductionauscriptshell

144

Sortie d'un script shell


exitn
Termineetsortduscriptshellcourantaveclecodederetourn
exit
Termineetsortduscriptshellcourant.Lecodederetourestceluidela
dernirecommandeexcutedanscescript
Exemple
if[$#ne2];then
echo"wrongnumberofarguments:$#"
exit1
fi
Valeurducodederetour
0signifiequelescripts'estexcitcorrectement
Diffrentde0signifiequ'uneerreurestsurvenue
V.Programmationshell
Introductionauscriptshell

145

Exercices V.1
1. crivez la commande args qui prend un nombre quelconque d'arguments eux
mme quelconques et qui, lorsqu'on l'excute, affiche son nom, le nombre de ses
argumentsetlalistedesesarguments:
$argsfichier$USER777tutu
argsestappelavec4argument(s):fichierzorro
777tutu
2. Modifiez ventuellement la commande args pour qu'elle fonctionne sans aucune
modification, mme aprs qu'on l'ait renomme (par exemple, par mv args
script).Autrementdit,lacommandedoittoujoursaffichersonnom!
3. crivezlacommandewordsquiaffichechaquemotsdufichier(detexte)qu'onlui
passe en argument, raison d'un mot par ligne, chaque mot tant prcd de son
nombre d'occurences. Les mots doivent apparatre tris par ordre alphabtique
(consdrezlescommandestr,sortetuniq).
4. Modifiezlacommandewordspourqu'elleprennentplusieursfichiers(detexte)en
paramtres.
V.Programmationshell
Introductionauscriptshell

146

Variables de shell
Unseultypepossible:lachanedecaractres
Pasbesoind'tredclarepourrecevoirunevaleurparaffectation
une_variable=100
Attention:ilnefautPASmettred'espaceentrelavariable,le
signe=etlavaleur
Utilisationd'unesyntaxeparticulirepouraccderlavaleur
echo$une_variable
Pourqu'unevariablegardesavaleurinitialedansunsousshell
exportune_variable
V.Programmationshell
Variables,paramtresetsubstitutions

147

Exemples de variables de shell


Variablesdeshell
projdir=/home/bob/unix/projet
lsla$projdir;cd$projdir
Variablesdenvironnement
cd$HOME
echo$PWD
echo$PRINTER
exportJAVA_SOURCE=$HOME/java/src

V.Programmationshell
Variables,paramtresetsubstitutions

148

Variables et substitutions
Substitutiondelavaleurd'unevariable
echo$HOST

Substitutionprotgedelavaleurd'unevariable
TMP=${USER}_$$(etnon$USER_$$)

Substitutiondursultatd'unecommande
nb_files=$(ls|wcl)(ou`ls|wcl`)

Autressubstitutions
Danslessubstitutionssuivantes,silavariablevaraunevaleur,alors
${varVAL} substituevar,sinonsubstitueVAL
${var=VAL} substituevar,sinondonnevarlavaleurVALet
substituevar
${var?VAL} substituevar,sinonafficheVALetquitteleshell
${var+VAL} substitueVAL,sinonnesubstituerien
V.Programmationshell
Variables,paramtresetsubstitutions

149

Variables et lecture de valeurs


Lacommandereadpermetdeliredeschanesdecaractressur
l'entrestandardetdelesaffecterdesvariables
readline
Lituneligne(unesuitedecaractrestermineparunnewline)sur
l'entrestandardetl'affectelavaribleline
readvar_1var_2...var_n
Litunelignesurl'entrestandard,ladcoupeenmots,etaffectechaque
motauxvariablesvar_1,var_2,...,var_n
S'ilyamoinsdemotsquedevariables,lesvariablesdetranesont
initialisesaveclachanevide""
S'ilyaplusdemotsquedevariables,ladernirevariablereoit
commevaleurlachaneformedesmotsdetrane

V.Programmationshell
Variables,paramtresetsubstitutions

150

Variables et affectations
Lacommandesetpermetd'affecterdeschanesdecaractresaux
variablesspcialesd'unscriptshell(paramtres)$1,$2,...
setval_1val_2...val_n
Affectelesvaleursval_1,val_2,...,val_nauxvariables$1,$2,...,
$n
Maisaussi
set(sansparamtre)
Affichetouteslesvariablespositionnesavecleurvaleur
setx
Affichelescommandesavantqu'ellessoientexcutes
seta[+a]
Exportetouteslesvariablesaffectesentrelesinstructions
setaetset+a(seulementdansunscript)
V.Programmationshell
Variables,paramtresetsubstitutions

151

Exercices V.2
1. crivez une premire version de la commande welcome1 qui ne prend aucun
argument,etqui,,lorsqu'elleestexcutparl'utilisateurzorrosurlamachinedenom
hal,affichelesinformationssuivantes:
$welcome1
Hellozorro,you'reloggedonhalandcurrentdate
andtimeare:FriOct617:56:03CEST2006
2. crivezunepremireversiondelacommandenospace1quiprendenargumentun
fichierouunrpertoiredontlenomcontientdesespaces,etquirenommesonargument
en remplaant les espaces par des _ (souligns). Vous devez utiliser la commande tr
pourraliserlacommandenospace1.Exemple:
$lsBon*
Bonjourtoutlemonde
$nospace1Bonjour\tout\le\monde
$lsBon*
Bonjour_tout_le_monde
V.Programmationshell
Variables,paramtresetsubstitutions

152

Structures de contrle
Identiquesunlangagedeprogrammation(commeCouJava)
Instructionsconditionnelles
Lesformes&&et||
Djvues!
L'instructionifthenelsefi
Slectionune,deuxouplusieursalternatives
L'instructioncaseesac
Aiguillagesvaleursmultiples
Instructionsitratives(boucles)
labouclefordone
Itrationborne
lesboucleswhiledoneetuntildone
Itrationsnonbornes
V.Programmationshell
Structuresdecontrle

153

Groupage de commandes
Squencedecommandesaveclesymbole;
echomesfichiers;ls;echo
Groupagelogiqueaveclesoprateurs||(ou)et&&(et)
cat~/infos2>/dev/null||echo"erreur"
Nexcuteechoquesilapremirecommandechoue
ls~/infos2>/dev/null&&cat~/infos
Naffichelecontenud'infosquesilacommandelsrussit
Groupageensousshellaveclesparenthses"("et")"
pwd;(cd..;pwd);pwd
Affichesuccessivementlescheminsdurpertoirecourant,du
rpertoirepre,puisnouveaudurpertoirecourant
V.Programmationshell
Structuresdecontrle

154

La commande if (1)
Slectionunealternative
iftest_0
thencommandes_1
fi

Slectiondeuxalternatives
iftest_0
thencommandes_1
elsecommandes_2

Slectionplusieursalternatives
iftest_0
thencommandes_0
eliftest_1
thencommandes_1
....
thencommandes_n1
elsecommandes_n
fi

fi

Lecodederetourdetest_0estinterprtcommeunboolen:
codederetour0:leboolenestVRAI
codederetourdiffrentde0:leboolenestFAUX
V.Programmationshell
Structuresdecontrle

155

La commande if (2)
Comparaisondefichiers
ifcmp$1$2;then
echo"lesfichiers$1et$2sontidentiques"
else
echo"lesfichiers$1et$2sontdifferents"
Uneversionprotgedecat
ifls$1&>/dev/null;then
cat$1
else
echo"lefichier$1estintrouvable"
fi
Versionquivalenteaveclesconstructeurs&&et||
ls$1&>/dev/null&&cat$1||echo""

Laformeifs'utilisesurtoutaveclaformetest
V.Programmationshell
Structuresdecontrle

156

La commande test (1)


Unecommandespcialepoureffectuerdestests,trsutiliseavecles
commandesif,whileetuntil
Syntaxestandard
testexpression
Syntaxealternative
[expression]
Attentionauxespacesentre"[","]"etexpression
Produitunevaleurderetour(unentier)gale0siletestestVRAI,1
sinon
expressionestunprdicatspcifiquequinefonctionnequ'avecla
constructiontest
V.Programmationshell
Structuresdecontrle

157

La commande test (2)


Prdicatssurleschanesdecaractres
c1=c2(resp.!=)

VRAIsileschanessontgales
(resp.diffrentes)

zchaine(resp.n)

VRAIsilachaneestvide
(resp.nonvide)

Prdicatssurlesentiers
Icin1etn2sontdeschanesdecaractresreprsentantdesentiers
n1eqn2(resp.ne)

VRAIsilesentierssontgaux
(resp.diffrents)

n1gtn2(resp.lt)

VRAIsin1eststrictementsuprieur
(resp.infrieur)n2

n1gen2(resp.le)

VRAIsin1estsuprieur(resp.
infrieur)ougaln2

V.Programmationshell
Structuresdecontrle

158

La commande test (3)


Prdicatssurlesfichiersetrpertoires
PourquelestestssuivantssoientVRAIS,ilfautavanttoutquefichier
existesurledisque
rfichier

VRAIsifichierestlisible(droitr)

wfichier

VRAIsifichierestmodifiable(droitw)

xfichier

VRAIsifichierpossdeledroitx

ffichier

VRAIsifichiern'estpasunrpertoire

dfichier

VRAIsifichierestunrpertoire

sfichier

VRAIsifichieraunetaillenonnulle

V.Programmationshell
Structuresdecontrle

159

La commande test (4)


Onpeutcombinerlesprdicatsl'aidedetroisoprateursetde
parenthses
!expr

VRAIsiexprestFAUX

expr1aexpr2

VRAIsiexpr1etexpr2sontVRAIs

expr1oexpr2

VRAIsiexpr1ouexpr2estVRAI

(expr)

Attention:lesparenthsesontune
significationpourleshell,ilfautdoncles
faireprcderducaractres"\"

Exemple
if[$xgt0a\($yge1o$ylt$x\)]
then
...
V.Programmationshell
Structuresdecontrle

160

Exercices V.3
1. crivezlescriptwelcome2,deuximeversionduscriptwelcome1(exerciceII.1.1),
qui affiche le message de bienvenue adquat en fonction de l'heure de la journe. Le
message doit tre Good morning entre 0 heure et 12 heures, Good afternoon
entre13heureset18heures,etGoodeveningentre19heureset23heures:
$welcome2
Goodmorningzorro,you'reloggedonhal
2. crivezlescriptinfo1quiaffichelesinformationsdel'uniquefichierourpertoirequi
estsonargument:
$infotutu

$infolien.sym

tutun'existepas

lien.symestunliensymbolique

$info/etc

$info.bashrc

/etcestunrpertoire

.bashrcestunfichier(rw)

Silescriptinfo1estappelaveczroouplusd'unargument,ildoitproduireunmessage
d'erreur.
V.Programmationshell
Structuresdecontrle

161

La commande case (1)


Slectionneval_i,lepremierchoixparmival_1,...,val_2,val_n,
quicorrespondlavaleurdeexpr,etexcuteensuitecommandes_i
caseexprin
val_1)commandes_1;;
val_2)commandes_2;;
....
val_n)commandes_n;;
esac
exprpeuttreunechanedecaractresquelconque
val_ipeuttreunechanedecaractresquelconqueincluantdes
caractresgnriques(wildcards)
commandes_iestunesuitedezro,uneouplusieurscommandes
sparespardes";"
V.Programmationshell
Structuresdecontrle

162

La commande case (2)


Slectionssimplessurunechanedecaractres
case$langin
french)echo"Bonjour";;
english)echo"Hello";;
spanish)echo"BuenosDias";;
esac
Slectionsavecmotifsetexpressionsrgulires
case$argin
i|r)echo"$argisanoption";;
*)echo"$argisabadoption";exit1;;
[09]*)echo"$argisaninteger";;
*.c)echo"$argisaCfile";gccc$arg;;
*)echo"defaultvalue";;
esac
V.Programmationshell
Structuresdecontrle

163

Exercices V.4
1. crivez la commande viz1 qui prend un fichier en argument et le visualise. Le

programme de visualisation sera choisi en fonction de l'extension du fichier. La


commande doit trater les extensions .ps (fichier PostScript) et .pdf (fichier PDF).
PourvisualiserlesfichiersPostScript,vousutiliserezlacommandekghostviewetpour
lesfichiersPDFlacommandekpdf.
2.crivezlacommande viz2,deuximeversiondelacommande viz prcdente,qui
maintenantpeutvisualisergalementdesfichiersd'extension.txt(fichierdetexte).Un
fichierdetexteseraaffichparlacommandelessdansunxterm(considrezl'option
e).Prvoyezunmessageetuneconfirmationdefindevisualisation.
3.crivezlacommandeviz3,troisimeversiondelacommandeviz,quimaintenant
peut visualiser des fichiers d'extension ext, mais aussi des fichiers d'extension ext.gz
(fichiers compresss avec la commande gzip) o ext est l'une des trois extensions
prcdentes. Pour les fichiers compresss, vous devez dcompresser les fichiers sans
toutefoismodifierlesfichiersarguments!

V.Programmationshell
Structuresdecontrle

164

La commande for (1)


Excutelescommandescommandesendonnantsuccessivementla
variablevarlesvaleursval_1,...,val_2,val_n
forvarinval_1val_2...val_n
do
commandes
done
val_ipeuttreunechanedecaractresquelconqueincluantdes
caractresgnriques(wildcards)
forfilein*;do...done
Enl'absencedeval_i,lavariablevarprendcommevaleurs
successiveslesvaleursdesparamtresduscript:
forarg
doecho$arg;done
V.Programmationshell
Structuresdecontrle

165

La commande for (2)


Pourafficherlesfichiersexcutablesdurpertoirecourant:
forfilein*
do[f$fileax$file]&&echo$file;
done
PourcompilerdesfichierssourcesCdurpertoirecourant:
forfileinprog1.cprog2.cprog3.c
dogccc$file;done
PourimprimertouslesfichierssourcesCdurpertoirecourant:
forfilein*.c
dolpr$file;done
Pourtuertouslesprocessusdel'utilisateurdenom"emacs":
forprocin$(psx|grepemacs|cutd''
f2)
dokill$proc;done
V.Programmationshell
166
Structuresdecontrle

Exercices V.5
1. crivezlacommandeinfo2,deuximeversiondelacommandeinfo1(exerciceIII.1.2),
qui maintenant prend un nombre quelconque d'arguments (au moins un) et affiche les
informationspourchacund'entreeux.
2. crivezlacommandenospace2,deuximeversiondelacommandenospace1(exercice
II.1.2),quiprendmaintenantenparamtresdesfichiersoudesrpertoires(aumoinsun)et
qui,seulementquandlefichieroulerpertoireexisteetquandsonnomcontientdesespaces,
lerenommeenremplaantcesespacespardessouligns.Danstouslescas,lacommandene
provoquepasd'erreur.
3. crivez la commande size1 qui prend en arguments des fichiers et qui, pour chacun ,
affichesatailleen(kilo)octetssuiviedesonnom.Lacommandeaffiche???laplacede
lataillesilefichiern'estpasunfichierrgulier.
4. crivezlacommandeafindquiprendenargumentunrpertoireetunnom,etquicherche
dansquellesbibliothquesCappartenantsaurpertoirelenomestdfini.UnebibliothqueC
est un fichier d'extension .a et on trouve en gnral les bibliothques standards sous
/usr/lib. Utilisez la commande nm pour connatre les noms externes dfinis dans une
bibliothque.
V.Programmationshell
Structuresdecontrle

167

La commande seq
Afficheunesquencedenombres
seqij
Siiestpluspetitougalj,affichelesentiersi,i+1,...,j,sinon
nefaitrien
seqscharij
Remplacelesparateur(un'\n'pardfaut)parlecaractrechar
seqikj
Siiestpluspetitougalj,affichelesentiersi,i+k,...,j,pour
toutlesktelsquei+knedpassepasj,sinonnefaitrien
Utilislaplupartdutempsavecl'itrationfor
foriin$(seq1$max);do
mkdir"tmp$i"
done
V.Programmationshell
Structuresdecontrle

168

La commande while
Excutelescommandescommandestantqueletestun_testest
VRAI
whileun_test
do
commandes
done
un_testpeuttreunecommandequelconquemaisleplussouvent
c'estunappellacommandetest(ou[)
while[$#gt0];do
echo$1;shift
done
Lacommandeun_testpeuttreremplacepar:outruequi
retournenttoujourslecode0(VRAI)
V.Programmationshell
Structuresdecontrle

169

La commande until
Excutelescommandescommandestantqueletestun_testest
FAUX
untilun_test
do
commandes
done
quivalenteunecommandewhileenprenantlangationdutest
while[$#gt0];do
echo$1;shift
done

until[$#eq0];do
echo$1;shift
done

Lacommandeun_testpeuttreremplaceparfalsequiretourne
toujourslecode1(FAUX)
V.Programmationshell
Structuresdecontrle

170

La commande break
Lacommandebreakpermetdesortird'unebouclesansterminerl'itrationen
coursetsanspasserparletest
whiletrue

do
echon"listthecurrentdir?(y/n/q)"
readyn

case$ynin
[yY])lsl.;break;;
[nN])echo"skipping";break;;
q)exit;;
*)echo"$yn:unknownresponse";;
esac

done
V.Programmationshell
Structuresdecontrle

171

La commande continue
Lacommandecontinuepermetdepasserdirectementl'itration
suivantesansncessairementterminerl'itrationencours
forfin*;do

[f$f]||continue
[r$f]||continue
echo"printingfile$f:"
case$fin
*.ps)lpr$f;;
*.txt)a2ps$f;;
*)echo"don'tknowhowtoprint$f"
esac
echo"done"
done
V.Programmationshell
Structuresdecontrle

172

Structures de contrle et redirections


L'valuationd'unestructureif,case,for,whileouuntil
s'effectuedansunsousshell
Onpeutredirigerl'entreet/oulasortied'untelsousshell
forfilein*.c;do
gccc$file
done2>compil.error
Onpeutlieruntelsousshellavecuntuyau
ls~dan/images/*.gif|whilereadfile;do
[f$(basename$file)]||cp$file.;
done
Onpeutexcuteruntelsousshellenarrireplan
forfilein*.c;dogccc$file;done&
III.Structuresdecontrle
Redirections

173

Exercices V.6
1. crivezlacommandemycalquiamliorelacommande/usr/bin/calenautorisant
alternativement de qualifier les mois l'aide de l'un des mots jan, feb, mar, apr,
may,jun,jul,aug,sep,oct,novetdec,etceindpendammentdelacasse(par
exemple,jan,Jan,JAN,JaN,jAn,etc.sontquivalents).Lacommandemycaldoit
se comporter comme /usr/bin/cal et en particulier admettre les mmes options.
Quandl'uniqueargumentestlemoisenlettre,l'anneestl'anneencours.
2. crivez la commande size2, deuxime version de la commande size1 (exercice
III.3.3), qui affiche maintenant ses rsultats en colonne (considrez la commande
column).
3. crivezlacommandechlnkquiprendenparamtreunouplusieursrpertoires,etqui
affichetousleslienssymboliquesinvalidesappartenantrcursivementcesrpertoires.
Un lien symbolique est invalide s'il ne pointe pas vers un fichier ou un rpertoire
existant.
4. crivezlacommandechext1quiprendenparamtredeuxextensionsext1etext2
ainsiqu'unrpertoire,etquirenommetouslesfichiersdurpertoiredenomxxx.ext1
en xxx.ext2. Si le nom du rpertoire n'est pas fourni, la commande s'applique au
rpertoirecourant.
V.Programmationshell
Structuresdecontrle

174

Les fonctions (1)


Syntaxe:
Pourdfinirlafonctiondenomfonction:
fonction(){
commandes
}
Mmemcanismedepassagedeparamtrequ'unscriptshell
Peutcontenirdesappelsdescommandesquelconques,d'autre
fonctionsouellemme(fonctionrcursive)
L'instructionreturnnpermetdesortird'unefonctionaveclecodede
retourn
Attention:l'valuationdelacommandeexitdepuisl'intrieurd'une
fonctionterminelescriptshellenglobant
V.Programmationshell
Lesfonctions

175

Les fonctions (2)


Unefonctionestinterprtedansleshellcourant(pasdesousshell)
Unesorted'aliasavecparamtres
Peuttredfiniedansle.bashrcpourtreconserve
Unefonctionpeuttreexcutedansleshellinteractifcourant
Modificationpossibledesvariablesd'environnement
Unefonctionpeuttreexcutedanslesousshellinterprtantunscript
Attention:l'valuationdelacommandeexitdepuisl'intrieur
d'unefonctionterminelescriptshellenglobant
Unefonctionpeuttrercursive

V.Programmationshell
Lesfonctions

176

Les fonctions (3)


Unefonctionpoursedplacerfacilementdansunrpertoire
cdd(){
fordirin$(find$HOMEname$1typed);do
echon"$dir?"
readyes
if[n"$yes"];then
cd$dir;return0
fi
done
}
V.Programmationshell
Lesfonctions

177

Les fonctions (4)


Unefonctionpourleserreurs
usage(){
echo"usage:$(basename$0)FILE"2>/dev/stderr
exit1
}

Unefonctionpourconfirmerunesaisieaveclaquestionenparamtre
confirm(){
echon$1
whilereadANSWER;do
case$ANSWERin
y|Y)return0;;
n|N)return1;;
*)echon"pleaseansweryorn:";;
esac
done}
V.Programmationshell
Lesfonctions

178

Exercices V.7
1. crivezlacommandemove1,clonedelacommandemv,maisquin'admetaucuneoption
etexactementdeuxarguments.Biensr,ilestinterditd'utiliserlacommandemv!
2. crivezlacommandemove2,deuximeversiondelacommandemove1prcdente,qui
esttoujoursunclonedemvsansoptionmaisquicettefoispeutprendreplusdedeux
arguments.
3. crivezlacommandemove3,troisimeversiondelacommandemove1,commande
identiquemove2maisquiadmetventuellementl'optioni.
4. crivezlacommandecopy1,clonedelacommandecp,maisquin'admetaucuneoption
etexactementdeuxarguments(unfichierrguliersuivid'unfichierouunrpertoire).
5. crivezlacommandecopy2,deuximeversiondelacommandecopy1prcdente,qui
esttoujoursunclonedecpsansoptionmaisquicettefoispeutprendreplusdedeux
arguments.
6. crivezlacommandecopy3,troisimeversiondelacommandecopy1,commande
identiquecopy2maisquiadmetventuellementlesoptionsietr.
V.Programmationshell
Lesfonctions

179

La commande expr (1)


Unecommandepoureffectuerdescalculsarithmtiquessurlesentiers
Utilisation
expr2+3
incr=$(expr$incr+1)
Erreursfrquentes
expr2+3
:+3estvucommeununiqueargument
=>expr2+3
expr2*3
:*estunmtacaractredushell
=>expr2\*3
expr2*(3+5) :lesparenthses'('et')'sont
interprtesparleshell
=>expr2\*\(3+5\)
V.Programmationshell
Commandesutiles

180

La commande expr (2)


Unecommandepoureffectuerdestestsoudescalculssurleschanesde
caractres
exprmatchchainemodle(ouexprchaine:modle)
Testesichainecorrespondmodle:
exprmatchlinux'li*'
exprsubstrchainein
Affichelasouschanedechainedelongueurnetcommenantau
caractrel'indicei(lepremiercaractreestl'indice1)
exprindexchainecaractre
Affichel'indicedelapremireoccurencedecaractredans
chaine,ou0sicaractren'estpasprsentdanschaine
exprlengthchaine
Affichelalongueurdechaine
V.Programmationshell
Commandesutiles

181

Arithmtique entire
Lanotation((...))permetd'effectuersimplementdestestsoudes
calculsarithmtiquessurlesentiers
Testarithmtique:
if((x>1));then
...
Le$devantlavariablexn'estpasncessaireetlescaractres<et>
perdentleursignificationspciale
Calcul(etsubstitution)arithmtique:
x=10y=20z=$((x+(2*y)/5))
Onpeututiliserlescaractres+,*,/,(,)selonleursignification
arithmtiqueusuelle
V.Programmationshell
Commandesutiles

182

La commande eval (1)


Unecommandepourvaluerlacommandequiluiestpasseen
paramtre
evalcommande
Evaluecommandecommesielleavaittdirectementinterprte
parleshellcourant:
leshellappliqueledcoupageensouscommandes,lessubstitutions
devariablesetdecommandesetlagnrationdenomsdefichiers
commande
leshellappliqueledcoupageensouscommandes,lessubstitutions
devariablesetdecommandesetlagnrationdenomsdefichiersau
rsultatprcdentetfinalementinterprteletout
Affectationaveccalculdelavariableaffecte
x=y;eval$x=123;echo$y (yalavaleur"123")
V.Programmationshell
Commandesutiles

183

La commande eval (2)


Unefonctionquimodifieunevariable
functionchvar(){
eval$1="$2"
}

Exemple:modificationdelavariablePATH
[hal@/home/bob]echo$PATH
/bin:/usr/bin:/usr/local/bin
[hal@/home/bob]chvarPATH'~/bin:$PATH'
[hal@/home/bob]echo$PATH
/home/bib/bin:/bin:/usr/bin:/usr/local/bin

V.Programmationshell
Commandesutiles

184

La commande exec
Unecommandedeuxusages
execcommande
Leshellcourantexcutelacommandecommandequidevientleshell
courant
aucunintrtdansunshellinteractif(neletestezpas)
nepasconfondreavecl'optionexecdelacommandefind
execetredirections
exec<file,exec>file,exec2>file
Redirigentl'entre,lasortieouleserreursdushellcourantversle
fichierfile
exec3<&0
Affectel'entrestandardaudescripteurdeficher3
V.Programmationshell
Commandesutiles

185

La commande getopts
Unecommandepourtraterplussimplementlesargumentsd'unscript
whilegetoptsf:riopt;do
case$optin
r)echo"rpresent";;
i)echo"ipresent";;
f)echo"fpresentwithargument$OPTARG";;
esac
done
shift$(expr$OPTIND1)
echo"commandarguments:"
forargin$@;do
echo"$arg"
done
V.Programmationshell
Commandesutiles

186

La commande select
Unecommandepourfabriquersimplementunmenudesaisie
selectactioninajoutersupprimermodifier
do
echo"Vousavezchoisi$action"
break
done
case$actionin
ajouter)...;;
supprimer)...;;
modifier)...;;
esac
V.Programmationshell
Commandesutiles

187

Exercices V.8
1. crivezlacommandemyhead,clonedelacommandehead,maisadmettantseulement
les deux options n et q et ne lisant que dans un ou plusieurs fichiers (et pas sur
l'entrestandard).Poursimplifierl'crituredemyhead,oninterdiralaformemyhead
15 au profit de myhead n 15. Enfin, lorsque l'option n n'est pas prsente, le
nombre de lignes afficher sera la valeur de la variable d'environnement
MYHEAD_DEFAULTsielleexiste,oubien10sinon.
2. crivez la commande myuniq, clone de la commande uniq, mais admettant
uniquementlestroisoptionsc,detuetneprennantaucunargument(l'entreetla
sortiedelacommandesontl'entreetlasortiestandards).
3. crivezlacommande chext2,deuximeversiondelacommande chext1(exercice
III.4.4),commandeidentiquechext1maisquiadmetventuellementlesoptionsi
et r. Si l'option i est prsente, la commande demande confirmation l'utilisateur
avant d'effectuer le changement d'extension. Si l'option r est prsente, la commande
cherchelesfichiersd'extension.ext1rcursivementdanslerpertoire.
4. crivezlacommandekprocquiprendenargumentdesmotsetquitueinteractivement
tous les processus dont le nom contient un ou plusieurs de ces mots. Pour chaque
processus,lacommandeaffichetouteslesinformationsquiluisontassocies.
V.Programmationshell
Commandesutiles

188

VI.Exercicesdesynthse
Gestiondesauvegardes
Gestiond'unepoubelle
Unmcanismed'annulation

189

Gestion de sauvegardes
1. Le but de cet exercice est d'crire les deux commandes backup et restore,
commandes permettant de grer simplement des sauvegardes de fichiers et de
rpertoires.
2. La commande backup prend comme arguments un ou plusieurs fichiers ou
rpertoires, et en cre des copies. Par exemple, backup xxxx fabrique la copie
xxxx.bak, que xxxx soit un fichier ou un rpertoire. Si xxxx est un rpertoire,
son contenu est copi rcursivement dans xxxx.bak mais les lments qu'il
contientontlemmenomrelatif,moinsqu'onutilisel'optionr.Afind'viterles
sauvegardesdesauvegardesdesauvegardes...ilestinterditdesauvegarderunfichier
desauvegardeaveclacommandebackup.
3. La commande restore prend comme arguments un ou plusieurs fichiers ou
rpertoiresquionttsauvegards,etlesremplaceparleurcopie.Aprsrestauration,
les copies sont effaces. Pour faciliter l'utilisation de la commande restore, on
peutl'appelerindiffremmentaveclenomdufichierrestaurerouaveclenomdela
sauvegarde.Ainsi,restorexxxxetrestorexxxx.baksontquivalents.La
commanderestoreadmetgalementl'optionr.
4. L'extension utilise pour les fichiers de sauvegarde est la valeur de la variable
BACKUP_EXTENSIONoubienbacksicettevariablen'estpasdfinie.

VI.Exercicesdesynthse
Gestiondesauvegardes

190

Gestion d'une poubelle


Lebutdecetexerciceestdeconcevoiretd'crireunensembledecommandespour
grerunepoubelle.Lapoubelleestunrpertoiredanslequelondplacedeslments
(fichiers ou rpertoires) qu'on peut ventuellement rcuprer plus tard. La poubelle
peuttrevidedfinitivement,aprsquoileslmentsquis'ytrouvaientnesontplus
accessibles.Lescommandesraliserneselimitentpasdplacerlesfichiersoules
rpertoiressimplementdanslerpertoirepoubelle.Parexemple,onpeutmettrela
poubelle conscutivement deux fichiers de mme nom relatif, ou plus dlicat, de
mmenomabsolu(maisnanmoinsdiffrents,carexistantdesmomentsdiffrents)
et vouloir rcuprer chacun d'eux ! L'ensemble des commandes dvelopper
comprendauminimumlescommandes:
0.trash,quimetlapoubelleunouplusieursfichiersourpertoires
1.intrash,quilistedemanirelisibleetstructurelecontenudelapoubelle
2.untrash,quipermetdercuprersimplementunfichierouunrpertoirecontenu
danslapoubelle(partirdesinformationsfourniesparintrash)
3.cleantrash, qui permet de vider tout ou partie de la poubelle en fonction de
certainsparamtresetoptions(parexemple,enfonctiondutempsdepuislequelle
fichieroulerpertoireestdanslapoubelle)
VI.Exercicesdesynthse
Gestiond'unepoubelle

191

Un mcanisme d'annulation (1)


CertainescommandesLinuxmodifientleurenvironnement,commelescommandes rm,
cpoumvpourneciterquelespluscourantes.Ilseraitutilededisposerd'unmcanisme
d'annulation de l'excution d'une telle commande qui permette de revenir l'tat initial
(d'avantl'excutiondelacommande).Lebutdecetexerciceestderaliserunensemble
decommandespourgrerl'annulationdecertainescommandes.
Le principe d'annulation propos repose sur une commande trs particulire, la
commandeundo.Parexemple,sionveutpouvoirannulerl'effetdelacommande
mvxxxyyy,ilfautquelacommande mvellemmeproduiseavantdes'excuterla
commandeannulantemvyyyxxx.Lacommandeannulantepeuttreplacetoujours
dans le mme script, la commande undo ! Ainsi, les effets de la commande mv xxx
yyy peuvent tre annuls par la commande mv yyy xxx , condition que le fichier
yyyn'existepasaumomentdel'excutiondelacommandemv.Danslecascontraire,le
commandemvdoiteffectuerenpremierunesauvegardedufichieryyy,parexempleavec
mv yyy /tmp/yyy , et les commandes annulantes (places dans le script undo)
deviennent mv yyy xxx suivie de mv /tmp/yyy yyy. Pour rsumer, on dira que
c'estlacommande(ventuellement)annulerqui,connaissantsesparamtres,estmme
deproduirelescommandessuceptiblesd'annulerseseffets!

VI.Exercicesdesynthse
Unmcanismed'annulation

192

Un mcanisme d'annulation (2)


Notezqueseuleladernirecommandeexcutedansleshellinteractifcourantpeuttre
(ventuellement)annule.Aussittunenouvellecommandevalue,sicettederniren'est
pasunecommandeannulable,lacommandeundonedoitrienfairesicen'estdlivrerun
messaged'erreur.
Vous devez dvelopper au minimum les trois nouvelles commandes rm, cp et mv ,
versionsannulablesdescommandesinitialesdummenom.Idalement,cescommandes
doiventadmettrelesmmesoptionsetlesmmesparamtresquelescommandesintiales
correspondantes, mais vous pouvez vous limiter aux options essentielles (i et r par
exemple).
Lacommandeundodoitadmettreauminimumlesoptionsvetn:
v(verbose)indiquequelacommandeundoaffichelesoprationsintermdiaires
qu'elleralisepourannulerladernirecommandetoutenleseffectuant
d(dryrun)affichelesoprationsintermdiairesqu'elleraliseraitpourannulerla
dernirecommande,maissanslesraliser!Remarquezqu'ondoitpouvoirexcuter
la commande undo aprs qu'on ait excut une commande annulable suivie d'un
nombrequelconquedeundod!

VI.Exercicesdesynthse
Unmcanismed'annulation

193

VII.LemondeLinux
LeprojetGNUetlalicenceGPL
LesdistributionsLinux
Linuxetsesconcurrents

194

Le projet GNU
GNU=GNUisNotUnix
ProjetderaliserunsystmelaUnixentirementlibre
Lancen1984parRichardStallman,unchercheurduMIT,
unepoqueolessourcesdeLinuxn'taientpluslibresd'accs
Composantsinitiaux:compilateurC(gcc),make(GNUmake),
Emacs,bibliothqueC(glibc),outilsdebase(ls,cp...)
Cependant,en1991,leprojetGNUn'avaittoujourspasdenoyau
ettournaitsurdesUnixpropritaires

VII.LemondeLinux
LeprojetGNUetlalicenceGPL

195

Les Logiciels Libres


GNU,Linuxetdenombreuxautresprogrammessontdes
LogicielsLibres
LeLogicielLibrefournitsonutilisateurles4libertssuivantes:
Lalibertd'excuterleprogramme,pourquelquebutquecesoit
Lalibertd'tudiersonfonctionnement,etdel'adaptersesbesoins
Lalibertderedistribuerdescopiespouraiderautrui
Lalibertd'amliorerleprogramme,etdepartagersesamliorations
avecautrui

Voirhttp://www.gnu.org/philosophy/freesw.fr.html

VII.LemondeLinux
LeprojetGNUetlalicenceGPL

196

La licence GPL
Les licences Copyleft utilisent les lois sur le copyright pour permettre aux
auteursd'exigerquetouteversionmodifieresteaussiunlogiciellibre
La licence GNU GPL (GNU General Public License) exige que toutes
modificationsettravauxdrivssoientaussipublissouslicenceGPL
Nes'appliquequ'auxlogicielspublis
Tout programme utilisant du code sous la GPL (statiquement ou mme
dynamiquement)estconsidrcommeuneextensioncecode

Pourplusdedtails:
Copyleft:http://www.gnu.org/copyleft/copyleft.html
Questions/rponsessurlaGPL:http://www.gnu.org/licenses/gplfaq.html

VII.LemondeLinux
LeprojetGNUetlalicenceGPL

197

GNU Linux
NoyaulibresemblableunnoyauUnix,conuparLinusTorvalds
en1991
Le systme complet se repose sur les outils GNU :
bibliothqueC,gcc,binutils,fileutils,make,emacs...
LesystmecompletestdoncappelGNU/Linux
Trs tt partag comme Logiciel Libre (Licence GPL), ce qui
attira des contributeurs et des utilisateurs de plus en plus
nombreux
Depuis 1991, connat une croissance suprieure tout autre
systmed'exploitation(Unixetautres)

VII.LemondeLinux
LeprojetGNUetlalicenceGPL

198

Distributions GNU Linux (1)


Sechargentdepublierunensemblecohrentdeversionscompatiblesdu
noyau,delabibliothqueC,descompilateurs,desoutils
Les outils sont disponibles sous forme de paquetages qui peuvent
facilementtreinstalls,supprimsoumisjour.Lesdpendancesentre
outilssontgresplusoumoinsautomatiquement
Distributions commerciales: incluent de l'assistance technique. Le code
sourceestlibre,maislesbinairesnesontpaslibresd'accs
Distributions communautaires: sources et binaires sont librement
disponibles.Necomprennentpasd'assistancetechnique

VII.LemondeLinux
LeprojetGNUetlalicenceGPL

199

Distributions GNU Linux (2)


VouspermettentdinstallerLinuxdansunemplacementlibresurvotre
disquedur,toutengardantWindows(doubledmarrage)
Ont une interface trs conviviale qui peut dtecter automatiquement
dtecterlaplupartdesmatriels(pasdepiloteinstaller)
Vouspermettentdechoisirlestypesdapplicationsinstaller
Fournissentuneinterfacedeconfigurationconviviale
Distributionsrecommandespourlesdbutants:
FedoraCore,Mandrivaou(K)Ubuntu

VII.LemondeLinux
LesdistributionsLinux

200

Distributions commerciales
RedHat:http://www.redhat.com/
Lapluspopulaire.Fiable,sre,convivialeetfacileinstaller,priseen
chargepartouslesfournisseursdelogicieletdematriel.
Suse(Novell):http://www.suse.com/
L'alternativeprincipale.Faceinstalleretconviviale.Pasencored'infos
sursastabilit.Pasencorepriseenchargepartouslesfournisseurs.
Mandriva:http://www.mandriva.com/
Conviviale,facileinstaller,plusinnovante,maismoinsstable(peuttre
davantagedepuisl'introductiondesprversionscommunautaires).Cible
principalementlesutilisateursindividuels.Peupriseenchargeparles
fournisseurs.

VII.LemondeLinux
LesdistributionsLinux

201

Distributions communautaires
Debian:http://debian.org/
Trsstableetsre,maisplusdifficileconfigureretinstaller.Peu
convivialepourlesutilisateurs.Versionstablespeufrquentes(tousles
2ou3ans).Recommandepourlesserveurs
FedoraCore:http://fedora.redhat.com/
Stable,sre,conviviale,facileinstaller.Sortiefrquentedenouvelles
versionscompltes
MandrivaCommunity:http://www.mandriva.com/
Facileinstaller,sre,conviviale,sortiefrquentedeversions
compltes,maismoinsstable(pasassezdetestsetdepriseencompte
desretoursdesutilisateursetdestesteurs)
(K)Ubuntu:http://www.ubuntulinux.org/ethttp://www.kubuntu.org/
Trsfacileinstalleretfacileconfigurer.Unenouvelleversion
(promise)touslessixmois.Unedistributiontrslamode!
VII.LemondeLinux
LesdistributionsLinux

202

Autres systmes Unix libres


GNU/Hurd:http://www.gnu.org/software/hurd/hurd.html
OutilsGNUavecleHurd,lemicronoyaudeGNU
Deplusenplusmr,maispasencoreassezpourtreutilispartous.Jusqu'en
2004surtoututilisparsesdveloppeurseuxmmes.

FamilleBSD
FreeBSD:http://www.freebsd.org/
SystmeBSDpuissant,multiplateforme,sretpopulaire.
OpenBSD:http://openbsd.org/
SystmeBSDpuissant,multiplateforme,sretpopulaire.
Construitpourunefiabilitetunescuritextrmes.Populairepourserveurssur
Internet.
NetBSD:http://netbsd.org/
DistributionBSDdontlebutestd'treextrmementportable
(parexempledisponiblesurARM)
VI.LemondeLinux
LesdistributionsLinux

203

Linux et ses concurrents (1)


Linuxestunealternativesrieuseauxsystmescommerciaux
Scurit
Sansvirus
Laplupartdesvirussontconus
pourtirerpartidesfaillesdescurit
deWindowsetnontaucuneffetsur
GNU/Linux.
Dcouragelespirates
Mmesivoustesconnecten
permanenceInternet,votre
systmeattiremoinslespirates.

VII.LemondeLinux
Linuxetsesconcurrents

Alpreuvedesvirus
Mmesivousexcutiezunvirus
compatibleavecLinux,ilnauraitpas
lapermissiondemodifierlesystme.
Alpreuvedeserreurs
Lesutilisateursnepeuventnitoucher
ausystmeniauxfichiersdunautre
utilisateur.Ilsnepeuventendommager
queleurspropresfichiers.

204

Linux et ses concurrents (2)


Respectdelavieprive
Votresystmenevapasdiscrtement
recueillirdesinformationssurlesfilmsou
lessitesinternetquevousprfrez

Convivialit
Vosprogrammessontconuspourdes
utilisateurspardesutilisateurs.Ilssont
mieuxsusceptiblesdesatisfairevosbesoins

Libert
Lesdonnesquevouscrezvous
appartiennentpourtoujours.Ellesnesontpas
prisonniresduneapplicationpropritaire
traversunformatpropritaire(parfoisbrevet)
Onpeutfacilementcontacterlesdveloppeurs
pourleursuggrerdenouvelles
fonctionnalits
Vousteslibresdaidervotreentourageen
partageantvosprogrammesaveclui
Vousteslibresdamliorercesprogrammes
vousmmes

VII.LemondeLinux
Linuxetsesconcurrents

205

Linux et ses concurrents (3)


VouspouvezutiliserLinuxpour:
Labureautique:traitementdetexte,tableur,prsentations
Internet:navigationetcourrierlectronique
Lemultimdia:vido,sonetgraphiques(ycomprisappareilsphotonumriques)
Votreactivitprofessionnelle(dveloppementetprogrammation)

Vouspouvezutiliserunautresystmed'exploitationpour:
Lesjeux:laplupartdesjeuxgrandpublicnesontencoreconusquepourWindowsouMac
Utiliserdeslogicielspropritairesspcifiquesoudescdromsducatifs
UtiliserdumatrielnonencoreprisenchargesousLinux

VII.LemondeLinux
Linuxetsesconcurrents

206

Essayer Linux
KaellaestuncdromLinuxsansinstallation
http://kaella.linuxazur.org/
Entirementenfranais
ChargeLinuxenmmoire,riennestinstallsurvotredisquedur
Dtonnantescapacitsdereconnaissancedumatriel
Plusde2Godapplicationsdisponibles
VouspouvezaccdervosfichiersWindows,lesouvriretmmeslesmodifier
avecdesapplicationssousLinux
UneexcellentefaondessayeretdemontrerGNU/Linux
Permetdeffectueruneinstallationpermanentesurvotredisquedur

VII.LemondeLinux
Linuxetsesconcurrents

207

VIII.Epilogue
RessourcesinternetsurLinux
Licenceethistoriqueducours

208

Ressources Linux sur internet


UnepetiteslectionderessourcesinternetdiversessurLinux
LesiteofficieldeLinux
http://www.linux.org/
LesiteofficielGNU
http://www.gnu.org/
LesitedeLinuxFrance
http://www.linuxfrance.org/
LapagewebduLinuxJournal
http://www.linuxjournal.com/
TouteslesnouveautssurLinux
http://www.linuxcentral.com/
UnsitesurlesdistributionsLinux
http://distrowatch.com/
VIII.Epilogue
RessourcesinternetsurLinux

Unsited'informationssurLinux
http://www.toolinux.com/
UnsitedeforumssurLinux
http://www.linuxquestions.org/
UnsiteddiauxdbutantsLinux
http://www.delafond.org/survielinux/
UnsitegnralistesurLinux
http://linuxfr.org/pub/
LesitedeLinuxAzur
http://www.linuxazur.org/
LesitedelaconfrenceSolutionsLinux
http://www.solutionslinux.fr/

209

Licence
2005,2006,2007,2008,2009,2010MarcGatano
gaetano@polytech.unice.fr
2004,MichaelOpdenacker
michael@freeelectrons.com
LepingouinestdDanielJoos(daniel@joosweb.de)
CedocumentestpubliselonlestermesdelaLicencedeDocumenta
tionLibreGNU,sanspartiesnonmodifiables.
Lesauteursvousaccordentledroitdecopieretdemodifiercedocu
mentpourvuquecettelicencesoitconserveintacte.
Voirhttp://www.gnu.org/licenses/fdl.html
VIII.Epilogue
Licenceethistoriqueducours

210

Historique du cours
LescontributionsdelaversioninitialeproviennentdeM.Opdenacker.
Dtailsdisponiblessurhttp://freeelectrons.com/docs/
28sep.2004,premirepublication.
2024sep.2004,premiresessionpourAtmel,Rousset(France)
LescontributionsdelaversionactuelleproviennentdeM.Gatano.
Desressourcesdiversesassociescecoursontdisponiblessur
http://wwwlocal.polytech.unice.fr/~gaetano/
5sep.2005,version1.0
4sep.2006,version1.1

9sep.2010,version1.5
VIII.Epilogue
Licenceethistoriqueducours

211