Introduction à Linux
Sommaire
Préambule
Liens, ressources
Thèmes de travail
Démarrer sous Linux
Environnement graphique KDE
Travailler sous linux
Système de fichiers
Commandes (part 1) et (part 2)
Autres thèmes non traités
Expressions rationnelles
Lexique commandes
animé par [Link] 2
Préambule (sommaire)
But de cet exposé
Présentation de Linux
Apprentissage de base pour bien démarrer avec
Linux
Application et expérimentation au LaboC
Machines en double boot Windows/Linux
(distribution Mandrake 6.1 et 7)
animé par [Link] 3
Références bibliographiques
sommaire
Beaucoup de livres sont disponibles
On peut par exemple regarder dans la collection
O’REILLY
« Le système linux », Matt Welsh
Documentation Linux Mandrake en ligne
[Link]
« Le guide du rootard », Eric Dumas, disponible
sur le site Linux-France :
[Link]
animé par [Link] 4
Autres Livres
Le système Linux (3ème éd), ouvrage fondamental, éditeur
O'Reilly
Administration réseau sous Linux, éditeur O'Reilly
Linux , série "Grand livre", Micro-application
Introduction à Perl, livre fondamental pour découvrir Perl,
éditeur O'Reilly
Logiciels libres (JP Smets-Solanes, B Faucon) Edispher
animé par [Link] 5
Liens, ressources
sommaire
Sur la toile
Beaucoup de ressources en lignes
Quelques liens :
LINUX ORG : [Link]
LINUX France : [Link]
Cours en ligne :
[Link]/Infolyc/linux/formation/
Ce cours, noté désormais (INFOLYC 2000), a été établi
par Jean Gourdin
animé par [Link] 6
Thèmes de travail
sommaire
Démarrer sous linux
Présentation générale de l ’environnement de
travail
L’environnement graphique KDE
Les commandes sous Unix
Droits et protection de fichier
31.10.2002
animé par [Link] 7
Thèmes de lecture
sommaire
A voir sur (INFOLYC 2000)
Outils d ’administration
Installation d ’application
Impression
Administration de serveur WEB
Shell et programmation …
animé par [Link] 8
Démarrer sous linux
En passant par Lilo
sommaire
Booter sous linux
sommaire
Machines LaboC : double boot
Au démarrage des machines, exécution du chargeur
de système LILO (LInux LOader)
Au prompt LILO, l’activation de TABulation donne la
liste des systèmes disponibles
Deux systèmes coexistent : windows (par défaut) et
linux
Pour lancer LINUX : taper linux…
animé par [Link] 10
Se connecter au système
La connexion au système n’est pas anonyme
Il faut entrer un nom d ’utilisateur et un mot de
passe
Après quelques secondes
l’interface graphique KDE installée sur nos
machines apparaît
animé par [Link] 11
Raccourcis
liens vers périphériques
applications
répertoire de travail
partition Windows
outil de configuration du système...
BUREAU sous KDE
(mandrake 7.1)
Menu K
4 Bureaux virtuels Console
animé par [Link] 12
Environnement graphique
KDE
sommaire
KDE K Desktop Environnement
KDE présente à l ’utilisateur 4 bureaux virtuels
On trouve sur le bureau les items
CDROM, FLOPPY, CORBEILLE…
Sous la lettre K (en bas, à gauche)
Accès au menu permettant de lancer les
programmes disponibles
animé par [Link] 14
Premières manipulations
Parcourir la documentation (KDE Help) dans
le menu K
Explorer le bureau
Ouvrir une console : utiliser les commandes
connues « ls, cd… »
animé par [Link] 15
L ’explorateur KFM
Pour le démarrer
Icône sur le bureau (accès répertoire perso/home)
Dans le menu K : Disk Navigator
Outil de navigation et de gestion de ressources
locales (fichiers)
Il gère l ’affichage des documents HTML
animé par [Link] 16
animé par [Link] 17
Applications sous KDE
Outils
d’archivage,
de communications,
de développement,
fichiers
éditeurs
...
et shells.
animé par [Link] 18
Manipulations
Parcourir les applications
Démarrer Emacs...
Essayer plusieurs applications…
toutes ne sont pas disponibles malheureusement
animé par [Link] 19
La console (notre outil favori…)
La console permet de passer des commandes unix
Tester les commandes :
pwd, who, ls, echo test, echo
$PATH, date
faire un man de ces commandes pour avoir de
l ’aide
Créer (avec la commande mkdir) votre répertoire de
travail (avec votre nom) dans le répertoire
/home/etudiant, sauvegarder dans ce répertoire la
page d ’index du site TAL
animé par [Link] 20
Les commandes UNIX
Travailler en ligne de commandes
(partie 1)
sommaire
Syntaxe générale
sommaire
commande [options] paramètres
En général, les options sont précédées du
symbole - et peuvent être groupées
ps -ae
ls -l /home/etudiant/
Les paramètres précisent les fichiers concernés
IMPORTANT : A l ’AIDE…
commande --help
man commande
animé par [Link] 22
Les options
Comparer les effets de :
ls
ls -l
liste avec les attributs des fichiers
ls -a
liste complète, y compris les fichiers cachés, qui commencent par un point
ls -la
ls -R
liste "récursive" des contenus des sous-rép.
ls --help
man ls
animé par [Link] 23
Historique des commandes
les touches flèches haut et bas permettent
de parcourir les dernières commandes de
l'utilisateur
Elles sont stockées dans le répertoire
personnel dans le fichier
/home/utilisateur/.bash_history
animé par [Link] 24
Pour commencer...
Un exemple pour illustrer la « puissance » des
commandes unix
pour écrire de telles commandes, il faut :
connaître « l ’ existence des commandes »
cf infra et ( lecture poly, documentation unix...)
choisir les bonnes commandes...
connaître les mécanismes d ’enchaînements de commandes
sous unix, de redirection de flux…(cf infra, lecture poly)
« se renseigner » sur les commandes (man)
tester, re-tester et re-tester encore
animé par [Link] 25
Manipulation de fichiers
touch file1 file2
crée les 2 fichiers vides
Pour consulter un fichier texte,
commandes cat (texte court) ou less (texte long) ou more
tester ces commandes sur 1 fichier de votre choix
sous X-KDE
l'éditeur kedit est appelé quand on ouvre un fichier texte dans
l'explorateur kfm
On utilisera aussi Emacs
animé par [Link] 26
Gestion de fichiers (1)
cp (copy, copier fichiers et répertoires)
cp [option] source destination
copie d'un seul fichier, en précisant le chemin et le nom
du fichier destination
cp [option] rep-source rep-cible
copie l'ensemble des fichiers dans le rép. spécifié, en
gardant les noms
animé par [Link] 27
Principales options :
-R recopie récursive, permet de copier toute une
arborescence
-i avertit l'utilisateur de l'existence d'un fichier du même
nom et lui demande s'il veut le remplacer
-p effectue une copie en gardant le propriétaire et le groupe
d'origine
-v affiche en clair le nom des fichiers copiés
animé par [Link] 28
Gestion de fichiers (2)
rm (remove, supprimer des fichiers)
rm [option] fichiers
L'option -i a été ajoutée d'office dans un alias pour demander
confirmation à l'utilisateur, pour chaque fichier.
Options
-r : permet de supprimer un répertoire et ses sous répertoires (attention
TRÈS dangereux)
-f (force) : permet de supprimer les fichiers protégés en écriture sans
demande de confirmation. Cela permet d'inhiber l'option -i et de gagner
du temps .. sauf dégâts !
animé par [Link] 29
Gestion de fichiers (3)
mv (move, renommer ou déplacer)
mv [option] source destination
renomme simplement le fichier source, ce qui est un
simple changement de nom (de chemin)...
mv toto titi
mv [option] fichiers répertoire
déplace les fichiers sources dans le répertoire, en
gardant les noms.
mv /home/jean/images/*.jpg /tmp/
animé par [Link] 30
Principales options :
-b (b=backup) : effectue une sauvegarde des fichiers avant
de les déplacer. La copie porte le même nom suivi d'un tilde
-i (i=interactive) : demande confirmation avant pour chaque
fichier
-u (u=update) : pour ne pas supprimer le fichier si sa date
de modification est postérieure à celle du fichier remplaçant
animé par [Link] 31
Exercice
Localisez l ’archive CORPUS sur le CD TAL
dans le répertoire cours2002-2003
Décompressez cette archive (commande unzip)
dans un nouveau répertoire (commande mkdir) de
votre répertoire personnel nommé MesCorpus
Utiliser la commande wc sur ces corpus
animé par [Link] 32
Gestion de processus (21.11)
La commande ps permet de connaître les processus actifs à un
moment donné, associés à un terminal et lancés par l'utilisateur
courant.
Pour obtenir tous les processus, y compris ceux lancés par
le système et connaître l'utilisateur associé à chacun on
ajoute l'option aux.
kill num-pid
pour arrêter un programme
kill -9 num-pid
pour le "tuer", s'il ne répond plus (le programme, pas le système)
animé par [Link] 33
Description des colonnes de la commande ps aux :
"USER" à quel utilisateur appartient le processus.
"PID" est le numéro qui identifie le processus
"%CPU" en % les ressources du microprocesseur utilisées
par le processus.
"%MEM" en % les ressources en mémoire vive utilisées par
le processus.
"RSS" mémoire réellement utilisée en ko par le
processus.
"START" l'heure à laquelle le processus a été lancé.
animé par [Link] 34
Commandes « textUtils »
Ressources « textutils »
disponibles en ligne :
[Link]
(envoi par mail sur demande)
Lecture obligatoire...
Un exemple concret…(1)
Fichier de travail : la version « tableur » du
corpus Prématurés
Rappel : dans ce fichier chaque ligne est décrite de
la manière suivante (chaque champ est délimité par une tabulation) :
n° fiche texte n° fiche complément texte n°
fiche age en h age en j terme en sem mode
accoucht lieu heure saisie code inf poids
(g) sédation freq visit parents relat inf/par
relat mère/bb occup bb Pntic moral score med
animé par [Link] 36
Un exemple concret… (2a)
Problème : extraire les zones textuelles correspondant à
l ’infirmière n°1 et contenant le mot « contact »
Solution : une seule (ligne de) commande
(affichage texte + n° infirmière)
cut -f2,4,9 [Link] | egrep ‘ contact ’ | egrep
‘ 1$ ’
(pour ne garder que le texte)
cut -f2,4,9 [Link] | egrep ‘ contact ’ | egrep
‘ 1$ ’ | cut -f1
animé par [Link] 37
Un exemple concret… (2b)
Problème : extraire le premier mot des zones textuelles correspondant à
l ’infirmière n°1, en faire le tri et les compter
Solution : une seule (ligne de) commande
(tri seul)
cut -f2,9 [Link] | egrep ‘ 1$ ’ | cut -f1 | tr ‘ ‘
‘ # ’ | cut -f3,4 -d# | sed -e s/^-#// | cut -f1 -d#
| tr ‘ \. ’ ‘ # ’ | tr ‘ , ’ ‘ # ’ | cut -f1 -d# |
sort -u
(comptage)
cut -f2,9 [Link] | egrep ‘ 1$ ’ | cut -f1 | tr ‘ ‘
‘ # ’ | cut -f3,4 -d# | sed -e s/^-#// | cut -f1 -d#
| tr ‘ \. ’ ‘ # ’ | tr ‘ , ’ ‘ # ’ | cut -f1 -d# |
sort -u | wc -w
animé par [Link] 38
Commandes (utiles)
wc
wc counts the number of bytes, whitespace-separated words, and
newlines in each given file, or standard input if none are given
or for a file of `-'. Synopsis:
wc [option]... [file]...
sort (ex en suivant le lien)
tri
sort sorts, merges, or compares all the lines from the given
files, or standard input if none are given or for a file of `-'.
By default, sort writes the results to standard output. Synopsis:
sort [option]... [file]...
more, less
pagination
head, tail
pagination partielle (début et fin de fichier)
animé par [Link] 39
grep, egrep
recherche de motifs dans un fichier texte (rappels infra)
cut (ex en suivant le lien)
effectue la projection d'un fichier selon une colonne
cut writes to standard output selected parts of each line of
each input file, or standard input if no files are given or for
a file name of `-'. Synopsis:
cut [option]... [file]...
tr (ex en suivant le lien)
effectue des remplacements de caractères
tr [option]... set1 [set2]
tr copies standard input to standard output, performing one of the
following operations:
translate, and optionally squeeze repeated characters in the result,
squeeze repeated characters,
delete characters,
delete characters, then squeeze repeated characters from the result.
animé par [Link] 40
Text-utils exemples
On commencera par lire la documentation text-
utils
On lira aussi les exemples concrets donnés dans
les documents :
TextUtils-Linux/textutils_46.html
TextUtils-Linux/textutils_47.html
TextUtils-Linux/textutils_48.html
TextUtils-Linux/textutils_49.html
TextUtils-Linux/textutils_50.html
TextUtils-Linux/textutils_51.html
TextUtils-Linux/textutils_52.html
animé par [Link] 41
Text-utils exemples
Faire un « man » de toutes les commandes,
puis les testez (avec les différentes options) sur vos corpus
de travail
,Lectures obligatoires :
Output of entire files
Formatting file contents
Summarizing files
Operating on sorted files
animé par [Link] 42
Manipulation de fichiers
Rappels : Expressions régulières
Rappels : egrep
Rappels : Emacs
animé par [Link] 43
Système de fichiers
sommaire
Système de fichiers
Un système de fichiers est une façon d'organiser et de stocker
une arborescence sur un support (disque, disquette, cd ...).
Chaque OS propriétaire a développé sa propre organisation.
On peut faire cohabiter plusieurs systèmes dans des partitions
d'un même disque.
Linux possède son système appelé ext2 mais peut en gérer
d'autres.
La liste en est donnée dans /proc/filesystems
animé par [Link] 45
L'utilisateur peut donc accéder sous Linux à d'autres systèmes de
fichiers, comme DOS, Vfat,..provenant d'un périphérique ou
importé par le réseau.
Comme pour l'utilisateur tout est fichier, ces systèmes extérieurs
doivent être intégrés dans l'arborescence Linux.
Le processus de montage, avec sa commande mount en est le
moyen : il permet d'affecter ce système extérieur (partition sur un
disque, disquette, cdrom, dk zip, répertoire réseau ...) à un
répertoire créé pour cela dans d'arborescence. Il suffira ensuite
de se déplacer à ce répertoire, appelé point de montage, en fait
un répertoire "d'accrochage", pour accéder à ses fichiers (bien
sûr, conformément aux permissions que possède l'utilisateur, )
animé par [Link] 46
Les différents fichiers
fichiers normaux
texte : courrier, sources des programmes, scripts,
configuration ...
exécutables : programmes en code binaire
fichiers répertoires
ce sont des fichiers conteneurs qui contiennent des
références à d'autres fichiers.
véritable charpente de l'arborescence, ils permettent
d'organiser les fichiers par catégories
animé par [Link] 47
fichiers spéciaux
situés dans /dev, ce sont les points d'accès préparés par le système
aux périphériques. Le montage va réaliser une correspondance de
ces fichiers spéciaux vers leur répertoire "point de montage".
par exemple, le fichier /dev/hda permet l'accès et le chargement
du 1er disque IDE
fichiers « liens symboliques »
Ce sont des fichiers qui ne contiennent qu'une référence (un
pointeur) à un autre fichier.
Cela permet d'utiliser un même fichier sous plusieurs noms sans
avoir à le dupliquer sur le disque.
animé par [Link] 48
Arborescence du système Linux
La racine est le sommet de la hiérarchie des répertoires.
Il s'agit d'une arborescence logique, indépendante de l'implantation
physique des divers sous-répertoires, qui peut s'étendre sur plusieurs
partitions incluses sur un ou plusieurs disques, et même sur des disques
réseaux.
Sa structure est standard, avec des extensions imposées par les
distributions.
Toute modification est de la compétence exclusive de l'administrateur, à
l'exception des répertoires personnels situés dans /home.
Il est recommandé de respecter cette architecture standard.
animé par [Link] 49
Liste et rôle des répertoires principaux
/ le répertoire racine
/bin les fichiers exécutables (en binaire) (initialisation du système +
commandes "essentielles")
/boot le noyau vmlinuz et les fichiers de démarrage
/dev répertoire de fichiers spéciaux, qui servent de canaux de
communication avec les périphériques (disques, adaptateur réseau, cartes son
etc...)
/etc les fichiers de configuration du système et les principaux scripts de
paramétrage
/etc/rc.d scripts de démarrage du système
/etc/X11 scripts de configuration du serveur X
/etc/sysconfig configuration des périphériques
/etc/cron description des tâches périodiques à effectuer
/etc/skel fichiers recopiés dans le rép. personnel à la création d'un
utilisateur
animé par [Link] 50
/home la racine des répertoires personnels des utilisateurs
/lib les bibliothèques et les modules du noyau
/mnt la racine des points de montage des systèmes de fichiers
périphériques ou extérieurs (cd, disquette, nfs ..).
/opt lieu d'installation d'applications supplémentaires (comme
starOffice, java ..)
/root répertoire personnel du super-utilisateur root
/sbin les fichiers exécutables pour l'administration du système
/tmp stockage des fichiers temporaires
/usr programmes accessibles à tout utilisateur; sa structure reproduit
celle de la racine /
/var données variables liées à la machine (fichiers d'impression, traces
de connexions http, smb .. dans /var/log)
/proc ce pseudo-répertoire contient une "image" du système
animé par [Link] 51
Droits des fichiers
sommaire
Permissions d'accès aux fichiers
Tout fichier du système appartient à la fois à un utilisateur
(son "propriétaire") et à un groupe.
Ainsi, pour chaque fichier le monde de ses utilisateurs
potentiels est scindé en 3 catégories, nommées :
u, l'utilisateur normal, son propriétaire, bien souvent son créateur, qui
n'a pas pour autant tous les droits sur lui !
g, son groupe, ensemble d'utilisateurs ayant parfois des "permissions"
particulières.
o, tous les (others) autres.
animé par [Link] 53
Attention, l'utilisateur propriétaire et le groupe propriétaire du fichier
peuvent être indépendants :
le groupe propriétaire n'est pas forcément le groupe primaire de
l'utilisateur propriétaire,
et même, le propriétaire n'est pas forcément membre du groupe !
Mais (heureusement) une règle générale simple s'applique à la création
de tout nouveau fichier (ou répertoire)
son propriétaire est l'utilisateur (humain ou système) qui l'a créé
son groupe est le groupe primaire de ce même utilisateur
animé par [Link] 54
Droits d'accès des utilisateurs aux fichiers
Linux permet de spécifier les droits d'action sur un fichier, que peuvent
exercer les utilisateurs des 3 catégories précédentes, ou plutôt les
permissions que leurs accordent les fichiers et les répertoires.
Linux a repris les 3 protections d'UNIX sur les fichiers et les répertoires.
Leur notation symbolique est :
r, lecture
w, écriture
x, exécution
De façon générale, ces permissions sont consultables complètement par la
commande : ls -l
animé par [Link] 55
Par exemple :
ls -l *.html
-rw-r--r-- 1 fleury fleury 1200 oct
19 12 : 39 [Link]
Description globale
On trouve de gauche à droite
le 1er caractère indique la nature du fichier
"-" fichier normal, "d" un fichier répertoire, "l" un lien.
animé par [Link] 56
le système de droits est spécifié symboliquement par les 9 attributs suivants,
correspondants aux 3 catégories du fichier.
...|...|...
u g o
La section u fixe les droits accordés au propriétaire du fichier.
La section g fixe les droits accordés aux utilisateurs faisant partie du groupe
auquel appartient le fichier.
La section o fixe les droits des autres utilisateurs.
nombre de liens sur le fichier
1 signifie que le fichier n'a aucun lien qui pointe vers lui, 2 (ou plus) signifiant
qu'il existe un lien (ou plus) vers lui.
le nom du propriétaire du fichier
le nom du groupe propriétaire
la date de dernière modification
le nom complet du fichier
animé par [Link] 57
Les permissions d'un fichier normal
Pour chaque fichier, les utilisateurs sont ainsi séparés en 3 catégories,
le propriétaire, les membres du groupe et tous les autres.
Les permissions accordées par le fichier à ces catégories sont
complètement indépendantes mais leur signification est la même.
Vis à vis de chacune de ces 3 catégories, on trouve dans l'ordre :
le droit de lecture , afficher son contenu --> "r" si permis , "-" si refusé
le droit d'écriture , modifier son contenu --> "w" si permis , "-" si refusé
le droit d'exécution , pour un fichier script ou binaire --> "x" si permis ,
"-" si refusé
animé par [Link] 58
Exemples :
Le fichier de démarrage /etc/rc.d/[Link] possède les droits rwx r-x
r-x
Tous les utilisateurs ont donc le droit de lire et d'exécuter ce fichier
(ce qui est à éviter); seul root peut le modifier
La table de montage /etc/fstab : rw-r--r-- peut être lu par tous,
modifiée uniquement par root
Afficher toutes les infos sur un fichier
La commande stat permet d'obtenir une information plus poussée sur
un fichier.
Exemple : stat /etc/passwd
animé par [Link] 59
Les permissions des répertoires
Pour les fichiers de type répertoire, la signification des attributs est différente de
celle d'un fichier normal.
Mais elle est toujours identique pour les 3 catégories d'utilisateurs du répertoire.
La présence d'un tiret "-" signifie toujours l'absence de droit
r : lire le contenu, droit d'afficher la liste des fichiers ( avec ls ou dir)
w : modifier le contenu : droits d'ajouter et de supprimer des fichiers (avec cp, mv, rm)
x : droit d'accéder aux fichiers du répertoire et de se déplacer à l'intérieur (avec cd)
En général, si on attribue w, il faut attribuer aussi x sur un répertoire.
Exemples :
Passer les commandes cd / puis ls -l, pour lister les répertoires situés à la racine.
A qui appartiennent-ils ? Un user quelconque peut-il y créer des sous-
répertoire ?
Commenter les 2 cas particuliers /root et /tmp
animé par [Link] 60
Changements des droits
De façon générale, l'utilisateur qui crée un fichier en devient
le propriétaire, et le groupe auquel l'utilisateur appartient (au
moment de la création) devient le groupe du fichier.
Mais les droits accordés au proprio, au groupe et aux autres dépend du
processus qui a créé le fichier.
D'autre part l'administrateur peut être amené à effectuer des changement
de propriété (par exemple pour permettre un travail en groupe) et des
changements de droits sur des ensembles de fichiers et de répertoires ,
les étendre ou les restreindre.
animé par [Link] 61
Changer le propriétaire d'un ensemble de fichiers ou de rép
chown [-R] new-user arborescence
L'option -R (récursif) permet d'agir sur l'ensemble des sous-répertoires.
Exemple : chown stage4 /home/stage1/*
Changer le groupe propriétaire
Ceci doit être effectué par root ou le propriétaire, à condition que celui-ci soit membre du
nouveau groupe.
chgrp new-groupe fichiers
chgrp stage4 /home/stage1/*
changer les 2 en même temps
chown [Link]-groupe fichiers
change l'user et le groupe des fichiers chown [Link]
dans ce cas, le groupe est le groupe primaire du nouveau propriétaire.
animé par [Link] 62
Changer les permissions sur les fichiers (effectué par root ou le propriétaire)
chmod droits fichiers
La commande chmod (change mode, change le "mode" des fichiers) peut s'écrire de
plusieurs façons équivalentes. L'attribut droits permet de calculer les nouvelles
permissions.
Celles-ci peuvent s'obtenir de façon relative, par ajout ou retrait par rapports aux droits
existants ou bien de façon absolue, en fixant les nouveaux droits (qui remplacent les
anciens).
Ajout, retrait ou fixation des permissions
Pour chaque fichier, on désigne par :
u, g et o les 3 catégories d'utilisateurs (user, group, other) plus a (=all) désignant tous
r,w,x les 3 attributs de ce fichier pour chaque catégorie.
+ - = l'action d'ajouter, de retirer ou de fixer un droit s'appliquant à une catégorie
les changements sont alors de la forme "qui comment quoi" notés : [u g o a] [+ - =] [r w x]
par exemple chmod u+x fichier signifie "ajouter le droit d'exécution au propriétaire du fichier"
animé par [Link] 63
Notation relative (aux droits existants)
chmod [-R] <action-droits> fichiers
L'option -R (récursif) permet de modifier les permissions de tous les sous-répertoires.
exemple : chmod [-R] go-rwx /home/toto enlève tous les permissions d'accès des fichiers
du rép. personnel de toto (et des sous-rép.), à tous sauf au propriétaire, c'est-à-dire toto.
Notation absolue
Pour chaque groupe, elle permet de fixer les nouveaux droits qui remplacent les anciens. Si
une catégorie n'est pas présente, ses anciens droits s'appliquent.
chmod u=rwx,g=rw,o=r fichiers remplace les permissions précédentes des fichiers, en les
fixant à -rwxrw-r--
Attention : aucun espace dans la liste des droits, pas même autour des éventuelles virgules
chmod u=rwx,g=r fichiers fixe les permissions à -rwxr--??? en ne changeant pas les
permissions précédentes du groupe other
chmod u=rwx,g=r,o= fichiers fixe les permissions à -rwxr-----
animé par [Link] 64
Travail sous la fenêtre de
commandes
sommaire
Le shell
Un interpréteur de commandes (on dit aussi le "shell", c ’est à dire la
coquille qui entoure le "noyau" du système) est un programme qui sert
d'intermédiaire entre l'utilisateur et le système d'exploitation.
Sa tâche essentielle est l'exécution de programmes.
Pour cela, il effectue (en boucle infinie) :
la lecture d'une ligne
sa compréhension comme une demande d'exécution d'un programme avec
d'éventuels paramètres.
le lancement de ce programme avec passage des paramètres
d'éventuelles redirections d'entrées-sorties
les exécutions de scripts (fichiers de commandes)
animé par [Link] 66
Démarrage du shell
Lors de la création de son compte, un utilisateur est associé à un type de shell
Lire le fichier /etc/passwd : le dernier champ contient le nom du fichier
exécutable (shell par défaut) /bin/bash
Le shell associé est ainsi lancé automatiquement dès la saisie du login
utilisateur.
Il poursuit sa configuration en exécutant les scripts "profils"
Enfin, il affiche le prompt et se met en attente de la lecture d'une commande.
Jusqu'à la commande exit, pour quitter le shell (ce qui équivaut à se
déconnecter (logout))
1. /etc/profile communs à tous les users y compris root
Notamment, on y trouve la définition du prompt
2. le fichier $HOME/.bash_profile, s'il existe (sinon le fichier
$HOME/.bash_login)
3. /etc/bashrc définition des alias globaux
4. $HOME/.bashrc, s'il existe
animé par [Link] 67
Personnalisation des commandes bash
est le dernier script d'initialisation du shell bash.
/etc/bashrc
Il contient des alias redéfinissables ou à compléter par l'utilisateur root.
Il suffit donc d'éditer et de compléter le fichier par défaut
par exemple :
# vi /etc/bashrc
alias l=""ls --color=tty -F -b -T 0"
alias ll="l -l"
alias lp="ll | more"
alias la="ll -a"
alias x="startx"
alias m="mc -c"
:wq (pour écrire dans le fichier et quitter vi)
Puis se reloguer (exit) pour relancer l'interpréteur du shell.
animé par [Link] 68
Les variables d'environnement système
La liste en est accessible par la commande : env
La commande echo permet d'obtenir la valeur d'une telle variable.
Par exemple : echo $PATH, echo $USER
Ajout d'un nouveau chemin : attention à ne pas écraser la liste des chemins
existants (PATH en majuscules !
PATH="$PATH:/home/jean" pour ajouter le chemin ré[Link]
(Attention ! pas d'espace autour du symbole =)
PATH="$PATH :./" pour ajouter le répertoire courant (non présent par
défaut)
La variable $HOME contient le chemin du rép. personnel.
La commande cd $HOME est abrégée en cd
La variable $USER contient le nom de l'utilisateur
$SHLVL donne le niveau du shell courant
animé par [Link] 69
Facilités de saisie des commandes
Comme les commandes Unix sont souvent longues à saisir, diverses facilités
sont offertes :
Historique des commandes
Cette liste numérotée est accessible en tapant history | less
Pour relancer la commande n, saisir (sans espace)!n
On peut aussi parcourir les précédentes lignes de commandes avec les flèches
(comme doskey) et les éditer.
Ceci permet très facilement de reprendre une précédente commande pour
l'éditer et la modifier.
Le clic-droit
Dans un terminal console, sélectionner un texte puis cliquer-droit dessus,
recopie ce texte sur la ligne de commande
Ceci est particulièrement utile pour lancer des commandes.
animé par [Link] 70
L'opérateur tilde
Le caractère tilde ~ (alt 126) seul renvoie au rép. personnel de l'utilisateur
actuel.
Si l'user actif est toto, chaque occurrence du caractère ~ est remplacé par le
chemin /home/toto
Le tilde ~ suivi d'un nom d'user, par ex jean, renvoie au rép. personnel de
jean, c-à-d /home/jean
Ainsi la commande de toto : cd ~stagiaire3 le déplace dans le rép.
/home/stagiaire3, mais ce qu'il pouvoir y faire dépend de ses permissions
(est-il un "other" ? un membre du groupe ?)
Très utile pour l'administrateur root qui peut ainsi aller rapidement voir le rép.
perso de toto et faire le "ménage"
cd ~toto
rm -r photos
animé par [Link] 71
Compléter une commande
Lorsqu'on tape une commande en ligne la touche TAB,
l'interpréteur cherche à compléter le nom du fichier.
home/toto ]$ less /etc/fs TAB
S'il y a plusieurs propositions, il y a attente d'un
complément d'info de la part de l'utilisateur (avec un
"tut").
Un autre TAB et l'interpréteur affiche toutes les
possibilités ou en indique le nombre, s'il y en a beaucoup
!
animé par [Link] 72
Les méta-caractères de la ligne de commande
Travailler avec le shell nécessite souvent de manipuler des ensembles de fichiers.
L'utilisation de caractères spéciaux (appelés aussi méta-caractères) dans les noms
de fichiers, permet de générer des modèles pour désigner ces ensembles.
Il existe trois constructeurs de modèles *, ? et [].
Modèle Signification
* remplace une chaîne de longueur qcq, même vide
? remplace un seul caractère qcq
[] un caractère qcq de la liste ou de l'intervalle
[^ ] n'importe quel caractère sauf ceux de la liste
Attention ! en raison de certaines ressemblances, ne pas confondre ces constructeurs
d'ensembles de fichiers avec les expressions rationnelles
animé par [Link] 73
Un modèle de la forme X*Y où X et Y sont 2 chaînes quelconques, éventuellement
vides, désigne l'ensemble des noms de fichiers de la forme XZY où Z est une chaîne
quelconque elle aussi éventuellement vide.
? remplace un et un seul caractère
Exemples
ll /*/*.d tous les fichiers (et rép) d'un sous-rép de / qui se
terminent par .d
ll -d /home/* tous les sous-répertoires de /home
rm * attention ! commande dangereuse, supprime tout le rép
courant !
cp *.? /home/toto
cp /home/stage? /root/tmp
Le modèle [] permet de sélectionner un élément de la liste ou de l'intervalle spécifié.
animé par [Link] 74
Le séparateur de la liste est l'espace. Aucun espace ne doit être mis au début ou à la fin entre [ ]
Plus précisément, un modèle de la forme X [abc...z ]Y où X et Y peuvent être vides,
désigne l'ensemble des noms de fichiers suivants: XaY, XbY ... XzY.
Dans le cas où l'ensemble des caractères abc ...z forment une série ordonnée, on peut
utiliser la notation intervalle a-z.
On peut mélanger les deux notations, comme dans [a-z].[0-9], ensemble des fichiers a.0,
a.1, .., b.0 b.1 etc ...
Quelques exemples :
ll a*
ll [a-d A-D]* liste les fichiers du rép. courant dont le nom commence par a, b, c ou d
minuscule ou majuscule (y compris les sous-rép.)
cp ventes1[00-50].xls /home/toto/bilan copie tous les fichiers [Link] jusqu'à
[Link]
lpr ~toto/formation/plan[93 94 77].html imprime les 3 fichiers [Link],
[Link], ..
animé par [Link] 75
Analyse de la ligne de commande
Valeur de retour d'une commande
Chaque commande transmet au programme appelant un code, appelée valeur de retour
(exit status) qui stipule la manière dont son exécution s'est déroulée.
Par convention du shell BASH, la valeur de retour est toujours 0 si la commande s'est
déroulée correctement, sans erreur (attention, c'est l'inverse du langage C !)
Une valeur de retour différente de 0 signale donc une erreur, qui peut être éventuellement
analysée selon cette valeur.
Un variable système spéciale $? contient toujours la valeur de retour de la précédente
commande. On peut afficher cette valeur avec la commande echo
animé par [Link] 76
Enchainement des commandes
une ligne de commande est une phrase composée de mots
séparés par des espaces : le premier mot est considéré comme le
nom d'une commande et le shell cherche à l'exécuter; les mots suivants
sont des options ou paramètres de cette commande.
Pour inhiber cette interprétation des espaces, il faut entourer le
groupe de mots de quotes ou de guillemets , ce groupe sera alors
interprété comme un seul paramètre.
Exemple :
recherche de la chaîne jules toto (qui constitue un seul paramètre) sur les
lignes de /etc/passwd (l'option -i pour s'affranchir de la casse)
grep -i "jules toto" /etc/passwd
animé par [Link] 77
En général, on place une commande par ligne que ce soit en
ligne de commande ou dans un script
Le point-virgule « ; » joue le rôle de séparateur de séquence
inconditionnel
Il permet ainsi d'écrire une séquence de plusieurs commandes sur une
même ligne.
Toutes les commandes sont inconditionnellement exécutées (même si
l'une d'entre elle provoque une erreur), et leur résultats respectifs sont
envoyés sur la sortie standard, séparés par un retour à la ligne "\n".
On peut connaître la valeur de retour de chacune en
interrogeant la variable $?
animé par [Link] 78
Enchainement conditionnels des commandes
Les séparateurs && et || sur la ligne de commande sont des séparateurs qui
jouent les rôles d'opérateurs conditionnels, en ce sens que la 2ème commande
sera exécutée en fonction du code de retour de la 1ère commande.
Dans la séquence :
commande1 && commande2
commande2 ne sera exécutée que si le code retour de commande1 est 0
(exécution correcte)
Dans la séquence :
commande1 || commande2
commande2 ne sera exécutée que si le code de retour de commande1 est
différent de 0 (exécution erronée)
Exemple : tester la commande
cd ~/tmp || mkdir $HOME/tmp
animé par [Link] 79
Redirections des entrées-sorties
Toutes les commandes (du noyau, du shell et créées par le programmeur)
sont dotées par le système de 3 canaux de communication :
entrée standard (stdin=standard input) pour lire des données,
la sortie standard (stdout) pour envoyer des résultats
et la sortie des erreurs (stderr).
Par défaut les canaux d'entrées et de sorties communiquent avec le
clavier et l'écran :
les commandes et les programmes qui ont besoin de données les attendent
en provenance du clavier et expédient leurs résultats pour affichage sur le
moniteur.
animé par [Link] 80
Il est possible de les détourner pour les rediriger vers
des fichiers ou même vers les entrées-sorties d'autres
commandes
Les symboles utilisées sont :
< redirection de l'entrée standard à partir d'un fichier (et non
depuis le clavier)
> redirection de la sortie standard en direction d'un fichier
(et non vers l'écran clavier)
Attention !
Le fichier est créé .. et écrase sans préavis le fichier existant
portant le même nom
animé par [Link] 81
>> redirection de la sortie standard à la fin du fichier s'il existe déjà
| (= alt 124) enchaînement de commandes (appelé aussi tube ou pipe)
la sortie de la commande gauche est envoyée en entrée de la commande droite
Fréquemment utilisé avec less (ou more) pour examiner l'affichage sur le
moniteur
La valeur de retour est celle de la dernière commande.
Tester
ls -l | less
animé par [Link] 82
Substitution de commande
Ce procédé permet de substituer au texte d'une commande le résultat de son exécution qui
est envoyé sur la sortie standard
La commande simple ou complexe (avec redirections, tubes ) doit être entourée de
l''opérateur antiquote ` Alt-Gr7 ou être placée dans un parenthèsage précédé de $(...). D'une
manière générale, il est recommandé d'entourer l'expression de ""
Exemple :
echo "`whoami`, nous sommes le `date` "
echo "$(whoami), nous sommes le $(date) "
Comparer :
pwd
echo pwd
echo `pwd`
echo "Il y a `ls | wc -l ` fichiers dans `pwd` "
animé par [Link] 83
tr 'A-Z' 'a-z' traduit chaque caractère majuscule reçu sur son entrée en l'équivalent
minuscule .
Tester :
echo -n "Votre mot de passe ?
read mdp
mdp = $(echo $mdp | tr 'A-Z' 'a-z')
Les substitutions de commande peuvent être imbriquées.
Attention à bien placer les " ".
Exemple :
echo "Nombre de fichiers du répertoire personnel : $( ls -l $( pwd ))" | less
Si on connait grep et cut, quelle est la signification de :
nom=toto
numero=$(cat /etc/passwd | grep -wi "^$nom" | cut -d: -f3)
animé par [Link] 84
Expressions rationnelles
sommaire
Introduction
Le livre de référence utilisé : Introduction à PERL (O'Reilly)
Les expressions rationnelles (ou régulières) sont des critères ou modèles de
recherche (pattern) dans les chaînes de caractères. Les objectifs peuvent être
simplement de sélectionner suivant ce critère, ou d'effectuer des traitements
comme des substitutions sur les chaînes trouvées.
Leur utilisation s'étend de certains filtres shell : grep, sed, awk, vi , emacs .. à
des langages de scripts : perl, php .. et aux éditeurs de texte : vi , emacs
Attention ! certains caractères spéciaux sont communs avec les caractères
génériques de désignation de fichiers, mais ils ont une interprétation différente.
Donc il faut toujours prêter attention au contexte
animé par [Link] 85
Quelques exemples avec grep
grep abc fichier recherche la chaînes abc dans toutes les lignes du fichier. Les
lignes trouvées sont envoyées sur la sortie standard, éventuellement redirigée.
grep " " fichier recherche les lignes qui contiennent un (et un seul) espace entre
2 mots
grep "ab*c" fichier, idem avec 0 ou plusieurs occurrences de la lettre b
grep "^s.*n$" fichier, reconnaît les lignes débutant par s (^s), finissant par n
(n$), avec éventuellement des caractères (quelconques) intermédiaires (.*)
grep "^[a-zA-Z][a-zA-Z0-9]*" [a-f]*.txt recherche les chaînes commençant par
une lettre suivie d'un nombre qcq de caractères alphanumériques, dans tous les
fichiers dont les noms débutent par une lettre de a à f avec une extension .txt
animé par [Link] 86
Les méta-caractères
Appelés aussi caractères spéciaux, ce sont des caractères interprétés en contexte expression rationnelle
comme des opérateurs.
En voici la liste avec un bref descriptif :
. (point) représente un caractère qcq, sauf \n
* (astérisque) répétition du caractère précédent
+ au moins une occurrence de l'expression régulière
? au plus une occurrence de l'expression régulière
[...] (crochets) l'un des caractères de l'ensemble.
[^..] en début de crochets recherche dans le complémentaire de l'ensemble
^ recherche en début de ligne
$ recherche en fin de ligne
\ annule le rôle de méta-caractère, pour jouer le rôle du caractère usuel
{n,m} indique le nombre de répétitions attendus du caractère précédent
| joue le rôle de "ou" entre 2 expr rég.
L'antislash \ inhibe l'interprétation des caractères spéciaux et force leur interprétation usuelle.
Exemples
.\.txt recherche les chaînes du genre [Link] , où c est un caractère unique qcq
\*$ recherche les chaînes qui se terminent ($) par le caractère astérisque (\*)
animé par [Link] 87
Ecriture des motifs
Expression régulière à 1 caractère (atomique)
un caractère correspond à lui-même, en règle générale.
Ainsi le motif c recherche le caractère désigné par c.
un métacaractère précédé de \, pour lui rendre son rôle usuel.
. Le point remplace tout caractère unique, sauf \n
a. toute suite de 2 caractères commençant par a, sauf a\n
b.c désigne toute suite de 3 caractères du genre bac, bbc, bcc, ...
[abc] classe de caractères, sélectionne toute chaîne contenant l'un des caractères listés
[a-z] toute lettre minuscule
[0-9] équivaut à [0123456789], un chiffre quelconque
[a-zA-Z0-9\-_] correspond à n'importe quelle lettre ou chiffre, ou au tiret ou au souligné
le caractère ^ juste après [ joue le rôle d'exclusion des caractères qui suivent.
[^aeiou] tout sauf une lettre voyelle
[^a-zA-Z0-9] sélectionne un caractère non alphanumérique
animé par [Link] 88
Expressions régulières simples
Soit expat une expression régulière atomique quelconque, alors ce sont
expat1expat2expat3 ... toute concaténation sans espace formée d'expr.
régulière atomiques
expat* chaîne composée de 0 à N caractères vérifiant expat
expat+ chaîne contenant au moins un caractère vérifiant expat
expat? chaîne contenant au plus un caractère vérifiant expat
expat{n} chaîne composée exactement de n caractères vérifiant
expat
expat{n,} chaîne composée d'au moins n caractères vérifiant
expat
expat{n,m} chaîne composée de n à m caractères vérifiant expat
animé par [Link] 89
Exemples
a* caractère de multiplication, suivant un caractère signifie la répétition de 0 à
plusieurs exemplaires de ce caractère.
[ab]* signifie répétition possible d'un quelconque des 2 lettres a ou b.
a+ répétition de 1 à plusieurs exemplaires de a
a? 0 ou 1 exemplaire de a
c[ad]?r impose la présence de cr ou car ou cdr, et rien de plus.
/x{5,10} 5 à 10 répétitions attendues de x
a{5,} 5 ou plus répétitions attendues de a
a{5} exactement 5 occurrences de a
a.{5}b recherche les mots contenant 5 caractères entre a et b
\s+ recherche un ou plusieurs caractères séparateurs.
Conséquence : {0,} {1,} {0,1} correspondent à * , + , ?
animé par [Link] 90
Expressions régulières étendues
Soit expsim une expression régulière simple quelconque, comme définie précédemment, alors
ce sont des expressions régulières générales :
expsim1expsim2 ... toute concaténation formée d'expr. régulière simples
^expsim recherche le motif expsim en début de chaîne
expsim$ recherche le motif expsim en fin de chaîne
expsim\b le motif expsim doit se trouver la fin d'un mot
expsim1|expsim2|… alternative : recherche de expsim1 ou expsim2 ...
(expsim)* chaîne composée de 0 à N caractères vérifiant expsim
(expsim)+ chaîne contenant au moins un caractère vérifiant expsim
(expsim)? chaîne contenant au plus un caractère vérifiant expsim
(expsim){n} chaîne contenant la concaténation d'exactement n chaines vérifiant expsim
(expsim){n,m} chaîne composée de n à m caractères vérifiant expsim
animé par [Link] 91
Remarques
Les symboles ^, $ sont appelés motifs d'ancrage, car ils permettent de préciser l'endroit où doit être
effectuée la recherche du motif dans la chaîne (alors que sans directive particulière la recherche de
correspondance du motif avec la chaine s'effectue de gauche à droite de la chaîne).
Le symbole d'ancrage \b indique une limite de mot obligatoire, à l'endroit où il est inséré dans le
motif
Par exemple :
info\b est vérifié par "l'info pour tous", "info-matin" mais pas par infos, informatique ...
\binfo est vérifié par "informatique","m'informer" mais pas désinformation, ..
Les parenthèses autour de expsim sont indispensables, sinon les opérateurs de répétition
s'appliquent au dernier caractère de l'expression (il s'agit d'une question de priorité des
opérateurs ..)
Par exemple, les motifs li(nux)* et linux* reconnaissent respectivement li, linux, linuxnux,.. et linu,
linux, linuxx, linuxxx,...
Attention, ces extensions ne sont pas toutes reconnues par l'ensemble des filtres. Par exemple
la commande grep, ne connaît pas | , ni les parenthèses
animé par [Link] 92
Exemples
color|couleur réussit si l'un des motifs, soit color, soit couleur, est trouvé
5[0-9]{2} reconnaît tout nombre de 500 à 599.
/^(eleve|prof|stage)[3-7]/ est satisfait par les chaînes commençant par l'un des 3 mots suivis
immédiatement par un numéro de 3 a 7
comment reconnaître un mot de 6 lettres formé des lettres (cela ne vous rappelle rien ?)
Parenthèses de mémorisation
La présence de parenthèses permet de mémoriser une ou plusieurs parties de l'expression
qu'elle entoure, sans modifier son interprétation. Pour rappeler ces valeurs mémorisées, on
utilise les notations \1, \2 ... qui correspondent aux valeurs reconnues de même ordre.
Ainsi eleve(\d).+station\1 sera satisfait par eleve3 au poste3 et non par eleve5 au poste3
animé par [Link] 93
Lexique Commandes
sommaire
Rappel
Chercher de l'aide en ligne sur une commande
<commande> --help
Lire la page de manuel man <commande>
Classement par thème
<ctrl>-c : abandon de la commande (exemple factor)
<alt>-Fx : basculement (ou demande de nouveau login) sur
la console ttyx (x=1 à 6)
animé par [Link] 94
Renseignements utilisateurs et ressources
who : liste de tous les users connectés, leur console et l'heure de
connexion
who -H : affiche les utilisateurs connectés, le N° du terminal ttyx, et
l'heure de connexion.
whoami : l'utilisateur aux commandes
pwd : chemin courant complet
df : points de montage des systèmes de fichiers et leur capacité
disponible.
du : capacité disque en Ko utilisé pour le répertoire spécifié et ses
sous répertoires.
animé par [Link] 95
set : liste des variables
export : listes des variables exportées, ie "globales" connues des
autres processus gestion des utilisateurs et des permissions
adduser : commande root d'ajout d'un user
Id : numéro d'identification d'un user (le uid)
passwd : commande utilisateur de définition d'un (nouveau) mot de
passe
chmod : changer les permissions sur les fichiers (et rép.) dont on est
propriétaire (sinon : "Opération non permise")
chmod a+x <fichier> : le propriétaire accorde des permissions d'exécution à
tous
chmod 755 <fichier> : le propriétaire impose un masque de permission 755, il
est seul à posséder le droit d'écriture .
chgrp
chown
animé par [Link] 96
contrôle de l'affichage des fichiers texte
more affiche à l'écran l'entrée standard à l'écran page par page.
less comme la commande more, et permettant des retours en arrière
cat contaténe les fichiers spécifiés sur la sortie standard
sort
cut affiche des colonnes extraites du fichier spécifié, vers la sortie standard
wc compte les lignes , mots et caractères
grep -n plantage [Link] donne les num de lignes où se trouve le
mot dans le(s) fichier(s)
grep -c print ~jean/perl/*.pl donne le nombre d'occurrences du mot dans
chacun des fichiers.
grep --help pour voir les autres options
cd = cd ~<user> aller dans le rép. personnel de l'user
mkdir ~<user>/<nom-rép> créer un sous-rép. dans le rép. perso de l'user
animé par [Link] 97
cp --help : aide sur la commande copy
cp -r /mnt/floppy/monCours /home/jean/ : pour copier
toute l'arborescence A:\monCours\ dans le rép. personnel
rm --help : aide sur la commande remove (attention
danger !)
rm -d ~toto/essai : supprime le sous-rép.
/home/toto/essai
find
whereis : recherche des fichiers exécutables, les sources et
les pages de manuel
which : affiche les chemins d'accès d'une liste de
commandes
animé par [Link] 98
Processus
ps
pstree
kill
Archivage
tar
gzip
Suivi des connexions
tail -f /var/log/httpd/access_log
affiche les dernières requêtes au serveur Apache, "en direct"
Divers
cal calendrier mensuel ( cal 4 1970 ; cal 2000 | less )
date
bc calculatrice
factor
animé par [Link] 99