Unix - M1-info

publicité
UNIX
1.
2.
3.
4.
5.
6.
7.
8.
Introduction
1. Unités
2. Unix et Linux
Concepts fondamentaux d'Unix
1. Architecture du noyau Linux (Unix)
2. Système d'exploitation
3. Fichiers et répertoires
4. Système de fichiers
5. Interpréteur de commandes : shell
Les commandes de base
1. Fichiers
2. Répertoires
3. Affichage
Commandes avancées
1. Filtres
2. Droits d'accès aux fichiers
3. Les caractères génériques
4. Les redirections (>, >> et <)
5. Pipes : tubes de communication
6. Contrôle de processus
7. Réseau
Le Shell : personnaliser l'environnement
TD 1
TD 2
TD 3
1 sur 30
Introduction
Unités
Un bit est une unité de mesure en informatique. Un octet est composé de 8 bits.
En français, l'octet est souvent noté « o » ou « B » de l'anglais Byte. L'octet est aussi parfois noté «
b », mais en général le « b » minuscule est utilisé pour noter le bit.
L'octet est l'unité qui sert à mesurer les éléments relatifs à la mémoire d'un ordinateur (capacité en
mémoire vive) et de manière plus générale la mémoire informatique, la taille des bus de données
(également mesurées en bits), mais aussi la capacité de stockage des éléments périphériques (cartes
graphiques, disques durs...).
Un octet peut prendre 256 valeurs différentes (28), entre 00000000 et 11111111.
Par exemple : 11000100 ou 00000001 sont des représentations binaires d'octets, C4 et 01 étant leurs
valeurs hexadécimales.
Pour représenter un nombre, ses valeurs vont de 0 à 255 lorsqu'il représente un entier non signé
(donc toujours positif), et -128 à 127 pour un entier signé.
1 kilo-octet (ko ou Ko) = 210 octets = 1024 octets.
1 méga-octet (Mo) = 220 octets = 1024 ko = 1 048 576 octets.
1 giga-octet (Go) = 230 octets = 1024 Mo = 1 073 741 824 octets.
1 téra-octet (To) = 240 octets = 1024 Go = 1 099 511 627 776 octets.
1 péta-octet (Po) = 250 octets = 1024 To = 1 125 899 906 842 624 octets.
1 exa-octet (Eo) = 260 octets = 1024 Po = 1 152 921 504 606 846 976 octets.
1 zetta-octet (Zo) = 270 octets = 1024 Eo = 1 180 591 620 717 411 303 424 octets.
1 yotta-octet (Yo) = 280 octets = 1024 Zo = 1 208 925 819 614 629 174 706 176 octets.
source http://www.pcinpact.com/
Unix et Linux
Unix est un système d'exploitation qui a vu le jour dans les laboratoires Bell en 1969. Son succès
tient au fait qu'il est portable sur une large gamme d'ordinateur, que les sources du système sont
disponibles, il est donc adaptable et que c'est un bon système d'exploitation. Sa philosophie est
basée sur la force que donnent les relations entre programmes. Beaucoup de programmes Unix font
des traitements simples, mais leur combinaison permet des traitements généraux et performants.
multics
1969 : Unix naît dans les Bell Telephone Laboratories (AT&T) Ken Thompson et Dennis Ritchie
1973 : réécrit en C pour être portable
1974 : Une version est donnée à l'Université de Berkeley (BSD) 1980 : AT&T commercialise Unix
System V
1978 : Première version d'Unix à l'université Berkeley par Software Distribution : Unix BSD
2 sur 30
1984 : Création du groupe X/Open
norme XWindows indépendante d'Unix
X Window : environnement graphique puissant, développé au MIT à l'origine, porté sur Linux
(XFree86)
naissance du projet GNU (is Not Unix), avènement du logiciel libre
licence logicielle libre : la GNU GPL (General Public Licence)
FSF Free Software Fundation1987 rapprochement AT&T BSD
1988 : OSF Open Software Fundation (DEC, HP, IBM) normalisation OSF1
1991 : Linux Intel x86 Linus Torwalds
Le système d'exploitation Linux est calqué sur Unix et minix, clone d'Unix mais gratuit (Andrew
Tannenbaum).
Linux est la première version du système d'exploitation Unix, version complète, compatible,
fonctionnant en mode 32 bits sur des processeurs de la famille Intel, gratuite et facile à installer.
Linux permet de transformer un PC en station de travail Unix
1992 DEC/OSF1
1993 FreeBSD
AFUU, AFULLinux est compatible POSIX (Portable Open System Interface eXchange), system V
et BSD
Qu'est ce que Linux (gratuit, sources)
Linux reprend les principales caractéristiques d'Unix :
Multi-utilisateurs,
Multi-tâches,
Système ouvert : structure modulaire du noyau qui garantit une relative, extensibilité,
Gestion de la mémoire virtuelle,
Gestion des processus,
Gestion des fichiers et des Entrées/Sorties,
Langage de commande écrit en C : le shell.
Distribution LINUX =
noyau Linux
+ composants GNU
+ logiciel de réseau BSD Unix
+ Xwindow, système de multifenêtrage du MIT et son portage Xfree pour Intel
+ LateX + Xemacs …
Avantages et désavantages
Avantages
Les logiciels libres, projets nés dans le cadre de la FSF Free Software Foundation
Par exemple : Bash, LiLo (LInux LOader)
GNU Linux, « l'OS libre pour Monsieur Tout Le Monde »
Free BSD, dérivé du système d'exploitation de la Berkeley Standard Distribution d'Unix.
Fonctionne sur PC.
Xfree, gcc, f77, xemacs …
Le code source est gratuit, mais de plus l'utilisateur :
- peut le modifier, l'améliorer sans rien devoir à personne ; par contre il doit distribuer gratuitement
ses sources (son code).
- peut distribuer le logiciel gratuitement ou le vendre.
3 sur 30
Désavantages de Linux
Faiblesses du système :
Installations délicates
Instabilité de certains logiciels
Complexité des lignes de commandes
Complexité de l'administration système
Réglage des paramètres sécurité
Les différentes distributions
Le nom Linux désigne le noyau du système. Les distributions Linux varient dans leur contenu en
fonction des paquetages intégrés (packages) et des modes d'installation retenus par les
développeurs.
Un paquetage est un ensemble de fichiers (scripts, config, sources, binaires, …) qui permet l'ajout de
fonctionnalités, l'installation de logiciels (rpm).
Il existe un grand nombre de distributions, dont une dizaine un peu plus connues.
RedHat http://www.redhat.com/
Mandriva http://www.mandriva.com/fr/
SuSE http://fr.opensuse.org/
Debian/GNU-Linux http://www.debian.org/
Caldera http://www.caldera.com/
Slackware http://www.slackware.com/
Gentoo http://www.gentoo.org/
Ubuntu http://www.ubuntu.com/
DemoLinux, essayez Linux sans installation : http://www.demolinux.org
FreeBSD, http://www.freebsd.org/
Xfree86, http://www.Xfree86.org/
Quelques adresses ...
Sites français
http://www.linux-center.org/fr
http://www.linux-kheops.com/doc/rootard/guid-r.htm (le guide du ROOTard pour Linux)
http://lea-linux.org/
http://www.guidelinux.org/
http://www.linuxpourlesnuls.org/
Les associations
http://www.april.org/
http://www.aful.org/
http://www.epi.asso.fr/
Les interfaces de multi-fenêtrage
http://www.kde.org/
http://www.gnome.org/
Sites anglais
http://www.linux.org/
4 sur 30
Sites Linux et l'éducation
http://www.linuxedu.org/
http://drgeo.seul.org/
Téléchargement,
http://ftp.lip6.fr/ miroir en France
http://tuxfinder.com/
http://www.guidelinux.org/wiki/doku.php?id=telechargements
http://webb.ens-cachan.fr/
Les revues
http://www.gnulinuxmag.com/ (Linux France Magazine)
http://www.linux-pratique.com/
http://www.unixgarden.com/
http://linuxfr.org/
5 sur 30
Concepts fondamentaux d'Unix
Unix est un système d'exploitation multi-utilisateur et multitâche.
Chaque station Unix possède un nom de machine (hostname) ce qui permet les communications
réseaux.
hostname.domainname
master0.obspm.fr <--> 145.238.199.130
Connexion
Chaque utilisateur s'identifie auprès du système par une procédure de login (username et password).
login: dupond
password: *******
Déconnection
exit, quit, logout.
Noyau Unix = c'est le coeur du système d'exploitation.
Shell = interpréteur de commandes, c'est aussi un vrai langage de programmation
Architecture du noyau Linux (Unix)
6 sur 30
Système d'exploitation
Le système d'exploitation est l'interface entre la machine (hardware) et l'utilisateur. Il est chargé au
démarrage de l'ordinateur et gère :
les ressources du système (processeur, mémoire),
les périphériques,
et le système de fichiers.
C'est lui qui charge les logiciels demandés par l'utilisateur en mémoire vive (RAM) et attribue les
ressources nécessaires à leur utilisation. Il présente aux autres programmes et aux utilisateurs une
machine plus facile à comprendre.
Le système d'exploitation est un ensemble de programmes qui réalisent les fonctions essentielles de
l'ordinateur :
Gestion de processus : synchroniser les opérations des différents composants qui le
constituent.
Gestion de la mémoire : administrer les ressources du système
Gestion du disque et des fichiers :
- démarrer un programme ou stocker des données dans un fichier.
- gèrer les interactions entre les logiciels et le matériel. Chaque programme d'application doit
résoudre des problèmes particuliers soumis par l'utilisateur, mais il se repose sur le système
d'exploitation pour gérer les interactions avec les périphériques.
Gestion réseau
Interface homme /machine, gestion du clavier et de l'écran.
Modèle en couche
UTILISATEURS
Programmes systèmes,
applications
NOYAU
Organisation des processus et des fichiers
Mémoire virtuelle, pagination des tâches
Gestion des tâches réseau
Pilotes de terminaux de disques
Gestion mémoire vive
Pilotes réseau
MATERIEL
7 sur 30
Fichiers et répertoires
Majuscules et minuscules sont des caractères différents pour les noms de commandes, de répertoires
et de fichiers.
Il est pratique (mais pas obligatoire) d'utiliser des extensions précisant le format des fichiers (.ps
.pdf .html)
Un fichier est un ensemble de données stockées sur le disque, ensemble qui est identifié par un nom.
Ce nom ne doit pas comprendre de blanc, d'accents ni de caractère /. Tous les autres caractères sont
acceptés et la longueur maximale est de 256 caractères.
Un répertoire est un ensemble de fichiers et peut contenir d'autres répertoires.
Les répertoires s'imbriquant les uns dans les autres, on arrive à la notion d'arborescence où un
répertoire père, ou racine, contient d'autres répertoires qui eux mêmes ...
Le chemin d'accès à un fichier est le parcours que l'on doit faire dans l'arborescence pour trouver ce
fichier :
depuis la racine : chemin absolu (commence par /)
/home/marie/histoires_droles/toto.txt
depuis le dossier où l'on se trouve (répertoire courant) : chemin relatif.
histoires_droles/toto.txt
ou
./ histoires_droles/ toto.txt
. est le répertoire courant
.. le répertoire père du répertoire courant
Système de fichiers
/
est le répertoire racine.
C'est à partir de là que s'organise le système de fichier, sous forme d'arborescence de répertoires et
de fichiers.
Ses sous répertoires classiques sont :
/bin fichiers binaires systèmes exécutables d'usage courant
/sbin programmes essentiels du système ou de l'administrateur
/dev pilotes des périphériques (device)
/etc fichiers de configuration du système
/home le père des répertoires des utilisateurs
/lib bibliothèques partagées (library)
/mnt
/opt
/proc processus en cours d'exécution
/root
/tmp fichiers temporaires
/usr fichiers de configuration du système
/var répertoire contenant des répertoires ou fichiers dont la taille varie souvent (fichier temporaire,
spool, ...).
8 sur 30
Chaque utilisateur possède son propre répertoire principal qui sera la racine de son arborescence :
c'est son home directory ou répertoire d'accueil. Par exemple pour Marie, ce sera :
/home/marie/
C'est à partir de là que l'utilisateur Marie rangera ses fichiers dans une arborescence qui lui est
propre.
C'est le répertoire courant au moment de la connexion de Marie sur le système.
C'est aussi le seul endroit à partir duquel Marie est autorisée à créer des fichiers (le reste appartient
au système ou à d'autres utilisateurs et devrait être protégé par l'administrateur).
($HOME est une variable d'environnement et ~ un raccourci reconnus par le shell)
Interpréteur de commandes : shell
C'est une interface avec le système. Chaque instruction du shell entrée par l'utilisateur sur le clavier,
sera lue, recopiée sur l'écran (echo) et interprétée par le système. Il y a plusieurs shells, mais la
plupart des commandes de bases sont communes. Ce n'est qu'au niveau des scripts que des
différences importantes surgissent.
Bourne-Shell
sh : Le shell de base, utilisé depuis les plus anciennes versions d'Unix. Il a été créé par Steve
Bourne dans les laboratoires A&AT Bell(/bin/sh)
ksh : Korn Shell
bash : Bourne Again Shell (/bin/bash)
zsh : le petit dernier
C-Shell
csh : le C-Shell créé à Berkeley. (/bin/csh)
tcsh : amélioration du C-Shell
echo $SHELL pour savoir quel est le shell utilisé.
Ce shell est défini dans le fichier /etc/passwd, /etc/shadows
On peut en changer
Le prompt
master0 >
est affiché par l'interpréteur de commande dès la connexion pour vous inviter à entrer une
commande.
Historique des commandes
pavé fléché et fichier caché .bash_history
Complétion automatique
touche tabulation
9 sur 30
Les commandes de base
commande [-options] [arguments]
Codes de retour :
* Pas d'erreur : 0
* Opération interrompue pour cause d'erreur : > 0
man manual
whatis
info
commande --help
which : affiche le chemin d'accès à la commande
type : indique si la commade est de type alias, mot-clé, fonction ou built-in
Fichiers
ls list
ls : Liste les fichiers et les répertoires.
syntaxe :
ls [-option]
ls [-option] [nom_fichier]
ls [-option] [nom_répertoire]
options :
-l long : détaille les propriétés des fichiers et répertoires :
statut(- : fichier, d : répertoire, l : lien symbolique), droits user, droits group, droits other, nombres
de liens, nom du user, nom du group, taille en octets, date d'écriture, nom.
exemple :
ls -l cours_1.tex
-rwxrwxrwx 1 marie dess 8078 Sep 13 17:04 cours_1.tex
-a all : liste tous les fichiers, y compris ceux commençant par «.», en temps normal non considérés.
-F classiFy : fait suivre le nom du fichier d'un caractère symbolisant son statut, «/» : répertoire, «*» :
exécutable, «@» lien symbolique.
-R recursive : liste les contenus des répertoires en parcourant l'arborescence de manière récursive.
-t time : classe les fichiers par date de dernière modification (du fichier le plus récent au plus
ancien).
-r reverse : inverse l'ordre de classement
cp copy
Copie un ou plusieurs fichiers.
syntaxe : cp [-option] nom_base nom_copie
mv move
Déplace ou renomme un ou plusieurs fichier
syntaxe : mv [-option] nom_fichier_base nom_fichier_sortie
10 sur 30
rm remove
Supprime un ou plusieurs fichiers
syntaxe : rm [-option] nom_fichier
options :
-i : demande confirmation avant de supprimer les fichiers.
-f : supprime les fichiers sans tenir compte des protections en écriture.
-r : efface fichiers et répertoires de manière récursive. Attention à utiliser avec précaution !
touch
Modifie l'horodatage d'un fichier (si le fichier n'existe pas, crée un fichier vide avec l'horodatage
actuel)
touch nom_fichier
dd
copier et convertir un fichier
ln crée des liens entre fichiers (liens matériels ou liens symboliques)
ln -s cible nom_du_lien
find recherche récursivement un fichier dans l'arborescence à partit d'un répertoire donné.
syntaxe : find repertoire_de_base -name "nom_fichier"
ex : find ../ -name "cours.tex"
locate recherche de fichiers dont chemin absolu contient une chaîne de caractères donnée.
locate bash_
alias : définit un alias pour une commande
alias dir='ls -alF'
unalias dir
Répertoires
mkdir make directory
Crée un nouveau répertoire.
syntaxe : mkdir nom_répertoire
rmdir remove directory
Supprime un ou plusieurs répertoires.
syntaxe : rmdir [-option] nom_répertoire
options :
-i : demande confirmation avant de supprimer les répertoires.
-f : supprime les répertoires sans tenir compte des protections en écriture.
cd change directory
Change le répertoire courant.
syntaxe :
cd chemin_absolu_du_nouveau_répertoire
cd chemin_relatif_du_nouveau_repertoire
cd .. revient au repertoire précédent
cd ~ revient dans votre home (= cd $HOME ou cd )
11 sur 30
pwd print working directory
Donne le chemin absolu du répertoire courant.
syntaxe : pwd
df taille du système de fichiers
du disk use
Liste récursivement les répertoires tout en précisant leur taille en blocks (~1/2 kilo-octets)
syntaxe : du [-option] [fichier]
options :
-k : affiche les tailles en kilo-octets
-h : human-readable
-s : sumarize (donne seulement le total de chaque élément)
Archive et compression
tar création d'archive
tar cvf monarchive.tar dossier
cvf : pour créer(c) dans un fichier(f) en affichant les noms(v)
xvf : pour extraire d'un fichier en affichant les noms
z : compression
tar czvf monarchive.tar.gz dossier
gzip compression
gzip fichier
compresse fichier et le remplace par fichier.gz
gunzip décompression
gunzip fichier.gz
décompresse fichier.gz et remplace fichier.gz par fichier (ou tgz par tar)
12 sur 30
Affichage
clear efface la console
echo réécrit à l'écran
cat affiche une concaténation de fichiers, à l'écran par défaut
more visualisation page écran par page écran
less visualisation page par page (écran, et flèches)
date affiche la date à l'écran
date +"%H%M%S"
pr pagine un fichier pour l'impression
lpq liste des queues d'impression
lpr imprime sur imprimante
lprm supprime un travail d'impression
lp imprime des fichiers
cancel supprime un travail d'impression
Editeurs de texte
En mode console
vi : son intérêt principal est d'exister sur toutes les machines sous Unix
pico
Interface graphique
nedit
emacs
13 sur 30
Les commandes de base : résumé
man, whatis, info
which, type
Fichiers
ls list
cp copy
mv move
rm remove
touch
dd copier et convertir un fichier
ln crée des liens entre fichiers
find recherche récursivement un fichier dans l'arborescence
locate recherche de fichiers
alias
Répertoires
mkdir make directory
rmdir remove directory
cd change directory
pwd print working directory
df taille du système de fichiers
du directory use
Archive et compression
tar création et extraction d'archives
gzip compression
gunzip décompression
Affichage
clear
echo réécrit à l'écran
cat affiche une concaténation de fichiers, à l'écran par défaut
more visualisation page écran par page écran
less visualisation page par page (écran, et flèches)
date affiche la date à l'écran
pr pagination
lpr imprime sur imprimante
lprm supprime un travail d'impression
lpq liste des queues d'impression
lp
cancel
Editeurs
vi, vim, pico
nedit, emacs
14 sur 30
Commandes avancées
Filtres
cat : concatène
affiche (à l'écran) la concaténation des fichiers passés en paramètres
cat toto.txt titi.txt
utilisation particulière :
cat > fichier
CTRL D pour sortir
ou
cat > fichier << FIN
paste : colle
Réuni deux (ou plusieurs) fichiers en un seul, en accolant les lignes deux à deux.
syntaxe : paste fichier_1 fichier_2
cut : coupe une partie de chaque ligne d'un fichier.
cut -c3-8 texte
cut -f2 -d: texte
head : affiche les (10) premières lignes d'un fichier
tail : affiche les (10) dernières lignes d'un fichier
grep affiche les lignes contenant une chaîne de caractères recherchée dans des fichiers
grep chaine fichier
-i : indifférent aux majuscules/minuscules
-n : numéro de ligne
-l : liste uniquement les fichiers contenant la chaîne
-e : expression régulière
-f : liste d'expression dans un fichier
sort trie
Classe les lignes d'un fichier par ordre de caractères ASCII
syntaxe : sort [-option] nom_fichier
option : -n : utilisée pour classer des nombres. Ne tient pas compte des espaces.
exemple :
sort gamma beta alpha
donne comme résultat la liste de paramètres triés :
alpha beta gamma
wc word count
Compte les lignes, le nombre de mots et le nombre de caractères
wc fichier
cmp imprime la première différence entre deux fichiers
comm comparer ligne à ligne 2 fichiers triés
diff donne la différence entre deux fichiers
15 sur 30
sed : éditeur de flot. Substitution de texte dans un flot ou un fichier.
ls -al | sed 's/m1/master1/g'
awk : langage de traitement
ls -al | awk '{ print $1 $9 }'
16 sur 30
Droits d'accès aux fichiers
Propriétaires et droits
Un fichier peut être lu (read), écrit (write) ou exécuté (execute)
par le propriétaire (user), les membres de son groupe (group) ou tous les autres (others)
Ceci s'applique également aux répertoires et se résume en 10 caractères :
x xxx xxx xxx
- rwx rwx rwx tous les droits sont ouverts pour ce fichier ordinaire
d pour un répertoire
l pour un lien (cf ln)
Masque utilisateur
Le masque des utilisateurs est définit par défaut par l'administrateur (root) mais peut être modifié
par chaque utilisateur dans son répertoire. Il définit les permissions par défaut des fichiers qui seront
ensuite créés.
un umask 027 correspond à des fichiers rwx r-x --Valeur binaire
000
001
010
011
100
101
110
111
Droits
----x
-w-wx
r-r-x
rw
rwx
Valeur octale
0
1
2
3
4
5
6
7
Mask
7
6
5
4
3
2
1
0
umask 077
suid, guid, sticky bit
Valeur binaire
000
001
010
011
100
101
110
111
suid
off
off
off
off
on
on
on
on
guid
off
off
on
on
off
off
on
on
sticky
off
on
off
on
off
on
off
on
Valeur octale
0
1
2
3
4
5
6
7
Le suid permet a un fichier d'être exécuté par un utilisateur avec les droits du propriétaire (héritage)
(ex : /usr/bin/passwd)
Le guid permet a un fichier d'être exécuté par un utilisateur avec les droits du groupe du propriétaire
Le sticky bit protège un fichier contre une suppression par un autre utilisateur que le propriétaire
(ex : /tmp)
Ces attributs doivent être manipulés avec précaution.
17 sur 30
chmod change mode
chmod : Modifie les droits d'accès aux fichiers et répertoires
syntaxe : chmod classe_a_modifier symbole_booléen droits nom_fichier
classe_a_modifier : ugo
symbole_booléen : +droits : rwx
exemples :
chmod ugo+rwx cours.csh, donne le droit en lecture (r), en écriture (w), en exécution (x)
à l'utilisateur (u) au groupe (g) et à l'ensemble des utilisateurs de l'ordinateur (o) sur le fichier
cours.csh
équivalent en notation octale à :
chmod 777 cours.csh
chgrp change group
chgrp : Modifie le groupe d'un fichier ou d'un répertoire.
syntaxe : chgrp nom_groupe nom_fichier
chown change owner
chown : Modifie l'utilisateur principal d'un fichier ou d'un répertoire.
syntaxe : chown nom_utilisateur nom_fichier
id identifiant
afficher les identifiant d'Utilisateur et de Groupe (UIDs et GIDs)
umask masque utilisateur
définit les droits sur les répertoires et fichiers qui seront créés ultérieurement
syntaxe : umask 0077
18 sur 30
Les caractères génériques
* remplace toute chaîne de caractères
ls -alF *.txt
? remplace un caractère quelconque
ls -alF cours?.txt
[...] intervalles de caractères ASCII
[a-zA-Z] intervalle de caractères de a à z et de A à Z
La suite de symboles [1-5], permet de représenter tous les caractères de la table ASCII compris
entre 1 et 5.
Si un répertoire contient 4 fichiers cours1.txt, cours2.txt, cours3.txt et cours4.txt et que l'on ne désire
faire référence qu'aux trois derniers on écrira :
ls -alF cours[2-4].txt
ls a[!0-9]t
liste tous les fichiers de 3 caractères commençant par un a suivi d'un caractère qui n'est pas un
chiffre et se terminant par un t
Les redirections (>, >> et <)
/dev/stdin
0
/dev/stdout
1
/dev/stderr
2
Redirection de la sortie standard (écran)
ls > liste.txt
la liste des éléments du répertoire au lieu de s'afficher à l'écran est redirigée vers un fichier liste.txt.
Si le fichier liste.txt n'existait pas il est créé, s'il existait il est écrasé (destructive).
Redirection non destructive
ls >> liste.txt
Si le fichier liste.txt n'existait pas il est créé, s'il existait le résultat de la commande ls est écrit à la
suite du dernier caractère du fichier liste.txt.
Redirection de l'entrée standard (clavier)
sort < liste.txt > liste_triee.txt
Redirection de la sortie d'erreur standard
find ./ -name fichier1 -print 2>erreurs.txt
Rappel de l'utilisation particulière de cat
cat > fichier << FIN
19 sur 30
Pipes : tubes de communication
L'idée de base est de rediriger la sortie d'une commande vers l'entrée d'une autre (caractère pipe |)
Processus1 | Processus2 | Processus3
le flux d'entrée du Processus1 est le stdin
le flux de sortie du Processus1 est raccordé au flux d'entrée du Processus2
le flux de sortie du Processus2 est raccordé au flux d'entrée du Processus3
le flux de sortie du Processus3 est le stdout
Exemples :
ls | sort
ls donne la liste des éléments d'un directory qui seront ensuite triés par la commandes sort
La sortie de la commande ls correspond à l'entrée de la commande sort
ls -al | more
vous permet de visualiser les éléments d'un répertoire, page écran par page écran
Contrôle de processus
Chaque fois que l'on lance un programme, on crée un processus. Celui-ci est caractérisé par son PID
(Process IDentity) ou numéro de processus.
La commande ps donne la liste des processus en cours.
Une tâche est un processus lancé par l'utilisateur. (bash n'est pas une tâche)
La commande jobs donne la liste des tâches en cours.
Un processus est composé :
d'un programme en cours exécution.
d'un environnement de processus permettant l'échange d'informations entre le système et le
programme.
A chaque programme (y compris les commandes shell) correspond un processus. Par son
intermédiaire, on va pouvoir influer sur l'exécution du programme.
Un processus est principalement caractérisé par :
Un numéro de processus (PID)
Un numéro de processus parent (PPID)
Un numéro d'utilisateur (UID)
Un numéro de groupe (GID)
Le temps de calcul utilisé (CPU)
Le répertoire de travail courant
La liste des fichiers ouverts.
20 sur 30
On interagit avec les processus par un ensemble de commandes shell :
top Liste tous les processus en cours
ps : Liste les processus existants.
syntaxe : ps [-option]
options :
-l : format long
-e : liste tous les processus.
-a affiche aussi les processus des autres utilisateurs
jobs : Liste les programmes s'exécutant en tâche de fond.
syntaxe : jobs -l
kill : Supprime un processus et arrête le programme ou la commande en cours d'exécution.
syntaxe :
kill -9 numéro_de_processus
kill %numéro_de_job (à utiliser après jobs)
nice modifie la priorité d'un programme 1-19
nice +15 programme
yes processus infini
Premier/Arrière plan (foreground/background)
Les commandes sont lancées à partir d'une fenêtre de dialogue. Linux propose deux façons
d'exécuter un processus. Le processus peut mobiliser les ressources de la fenêtre de dialogue, auquel
cas il est dit de premier ou d'avant plan. Il peut également «rendre la main», permettant de taper
d'autres commandes. Dans ce cas, on dira que le processus est en arrière plan ou en tâche de fond.
& : Lance directement un processus en tâche de fond.
syntaxe : nom_commande &
exemple : firefox&
Si le processus est lancé en premier plan il mobilise les ressources de la fenêtre de dialogue
exemple : firefox
^z : Suspend l'exécution d'un processus de premier plan.
fg : Reprend l'exécution, en premier plan, d'un processus interrompu par ^z.
bg : Reprend l'exécution, en tâche de fond, d'un processus interrompu par ^z.
^c : Supprime un processus de premier plan.
^s : Arrête le défilement des caractères dans une fenêtre de dialogue.
^q : Reprend le défilement des caractères dans une fenêtre de dialogue.
21 sur 30
Réseau
Les commandes actuelles :
ssh
syntaxe : ssh -X user@host
ssh -X [email protected]
sftp version sécurisée de ftp
syntaxe : sftp user@host
get
put
ls
cd
bye
scp : copie sécurisée entre machines.
syntaxe : scp user@host1:file1 user@host2:file2
scp -r user@host1:dossier [user@host2:]dossier2
Les commandes moins utilisées :
xhost hostnames autorisés à créer une connection avec le serveur x
syntaxe : xhost [[+-]name ...]
ping permet de tester si une machine host est sur le reseau
syntaxe : ping host
ping master0.obspm.fr
traceroute donne le chemin suivi sur le réseau pour atteindre la machine host
syntaxe : traceroute host
telnet connection à une machine à travers le réseau
syntaxe : telnet [-l user] host
ftp connection à une machine pour un transfert de fichiers
syntaxe : ftp [user@]host
mail active le courrier électronique
write
talk
who
whoami
finger
22 sur 30
Le Shell : personnaliser l'environnement
Les fichiers cachés .bashrc, .bash_profile, .bash_logout, .bash_history définissent des variables
d'environnement du shell qui seront utilisables tout au long de la session ouverte.
.bash_profile est exécuté quand l'utilisateur se connecte (login shell ou shell de connexion)
L'environnement est défini par l'administrateur dans /etc/profile puis par l'utilisateur dans
~/.bash_profile
.bashrc exécuté chaque fois que le shell bash est exécuté (shell interactif ; ouverture d'une fenêtre
de terminal ou commande xterm)
.bash_logout est exécuté à la fermeture de la session.
.bash_history contient l'historique des commandes exécutées
Paramètres d'environnement :
printenv : Liste les paramètres d'environnement, aux nombres desquels : le répertoire de base, le
nom de l'écran, le shell utilisé.
echo $HOME
echo $PATH
echo $PS1
echo $HISTSIZE
echo $HISTFILE
On peut modifier l'environnement pendant la durée de l'exécution de la console :
PS1='[\t-\u]\$'
ou de façon systématique en modifiant le .bashrc :
export PS1 = '[\u@\h:\w]\$'
On peut rajouter au .bashrc des alias qui seront ainsi automatiquement définis pour toute console
ouverte :
alias rm='rm -i'
On active le .bashrc par la commande
source .bashrc
ou en redémarrant une session.
23 sur 30
En résumé :
En bash :
.bash_profile : login shell
.bashrc : interactive
.bash_history
.bash_logout
sont définis par l'utilisateur
/etc/profile
/etc/bashrc
sont définis par l'administrateur
Autres shells : .profile .cshrc .kshrc
24 sur 30
TD 1
Exercice 1
1. Quelle commande permet de changer votre mot de passe ?
2. Utiliser ls (ls -alF) et cd ( cd . cd .. cd ~ cd /) pour vous promenez dans l'arborescence des
fichiers
3. Utiliser la commande man pour avoir des explications sur son propre fonctionnement,
puis sur la signification de :
rm -i
rm -r
ls -alFrt
4. Créer plusieurs répertoires en une seule ligne de commande avec mkdir
Exercice 2
Notez les options intéressantes des commandes suivantes et les actions correspondantes :
Commande
Option
Action
Exemple
-a
-l
ls
-F
-t
-d
-i
rm
-r
-i
cp
-p
-r
-i
mv
touch
25 sur 30
-s
ln
find
cvf
xvf
tar
czvf
-sk
du
Exercice 3
1.
2.
3.
4.
5.
Quel est votre répertoire courant ?
Quel est votre répertoire principal ?
Afficher le contenu du répertoire principal
Affichage récursif du contenu du répertoire .mozilla/ ou de .gnome2/
Afficher la taille du votre répertoire principal en Ko
Exercice 4
1. Lire le fichier .bash_history avec les commandes cat, puis more et less. Conclusion ?
2. Lire un fichier html dans la documentation de gfortran-4.1-doc située dans /usr/share/doc/
avec cat, more et less.
3. Faire lire le même fichier par l'application firefox en le lançant depuis la console.
4. Trouvez les fichiers cookies.txt, install.log, bookmarks dans le dossier .mozilla/firefox/
5. Créer un fichier texte quelconque avec nedit, emacs et vi
manuel vi http://w3.uqah.uquebec.ca/DOC/unx_vi.html
6. Imprimer un fichier (pas trop gros) sur l'imprimante atlas.
7. Faire afficher le jour et la date sous la forme Jour/Mois/Année-H:M:S
ex: 22/09/2005-11:37:25
26 sur 30
Exercice 5
Créer depuis votre home des répertoires et fichiers afin de créer une arborescence à quatre
niveaux :
Créer un répertoire Programmes dans projet1 et déplacer les répertoires C, Fortran et Java
dedans.
Changer le nom du fichier planning.pdf en planning-2005.pdf
Effacer le fichier reunion1.txt
Dupliquer l'arborescence du projet1 en projet2
Créer un nouveau dossier projets-2006 dans nom
y déplacer les arborescences des projet1 et projet2
faire une archive de nom
la compresser
la relire
Ecrire la succession de toutes les commandes dans un fichier script-exo5
27 sur 30
TD 2
Exercice 1
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Quel est votre umask ?
Quels sont vos identifiants de groupe et d'utilisateur ?
Lister tous les fichiers de votre home directory avec les informations sur les droits d'accès.
Regarder les droits des différents fichiers et répertoires
Créer un fichier vide, quels sont ses droits d'accès ?
Editer le fichier pour qu'il contienne la seule ligne suivante
echo Bonjour
Modifier ses droits pour que tout le monde (user, group et other) puisse le lire, le modifier et
l'exécuter.
Modifier ses droits pour que group puisse seulement le lire.
Modifier ses droits pour que other ne puisse ni le lire, ni le modifier, ni l'exécuter.
Exécuter le fichier
Supprimer le fichier
Exercice 2
1.
2.
3.
4.
Lister tous les fichiers commençant par . dans votre répertoire d'accueil.
Lister tous les fichiers contenant la chaîne de caractères host dans le répertoire /etc
Lister tous les fichiers du répertoire /etc se terminant par .conf
Lister tous les fichiers du répertoire /etc se terminant par .conf et contenant un chiffre dans
leur nom.
5. Lister tous les fichiers du répertoire /dev dont le nom a trois caractères et commence par hd.
Exercice 3
1. Lister votre directory récursivement dans un fichier liste.txt
Lire le fichier ainsi créé avec more ou less
2. Rechercher dans /usr tous les fichiers dont le nom est man.
3. Rediriger la sortie écran vers un fichier s.txt
4. Rediriger la sortie d'erreur vers un fichier e.txt
28 sur 30
Exercice 4
1. Créer un répertoire travail.
2. A l'aide des commandes cat et echo, y créer deux fichiers fic1 et fic2 contenant quelques
lignes.
3. Créer un fichier fic3 en accolant les lignes des deux fichiers précédents.
4. Créer un fichier fic4 en disposant les deux fichiers précédents à la file.
5. Combien les 4 fichiers contiennent-ils de lignes, mots et caractères ?
6. Trouvez et affichez les lignes contenant une chaîne de caractères choisie (par exemple "est")
7. Afficher que les 2 premières lignes de fic4
8. Afficher que les 2 dernières lignes de fic4
Exercice 5
A l'aide de la commande cat, créer le fichier test.num contenant les lignes (ici les blancs
soulignés symbolisent des espaces) :
__99
01
11
45
___1000
1
Comparez les résultats obtenus avec sort et sort -n
29 sur 30
TD 3
Exercice 1
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Afficher la liste de tous les processus qui vous appartiennent.
Afficher la liste de vos jobs.
Lancer l'application firefox depuis le terminal : firefox
Interrompre ce processus
Le relancer en arrière plan
Réafficher les processus et les jobs
Repasser le job concernant firefox en premier plan
Le tuer
Réafficher les processus et les jobs
Lancer directement firefox en arrière plan
Exercice 2
1. Définir un alias lsm qui affiche la liste de tous les fichiers du répertoire courant page écran par
page écran
2. Définir un alias cp qui impose une confirmation avant l'écrasement de fichiers par copie
3. Définir un alias psm qui affiche tous les processus qui vous appartiennent
4. A l'aide de who, cut et sort faire afficher la liste des login des personnes connectées sur
m2dsg-pro classée par ordre alphabétique sans doublon.
Exercice 3
1. Afficher l'environnement
2. Modifier le prompt PS1 pour qu'il affiche l'utilisateur(u), le host(h), le répertoire courant(w) et
l'heure(t)
3. Modifier le fichier .bashrc, afin de transformer la commande ls par ls -alF
4. Ajouter un alias qui impose une confirmation avant la suppression, copie ou déplacement de
fichiers
Exercice 4
1.
2.
3.
4.
5.
6.
7.
8.
Transférer un de vos fichiers de master0 sur siolino par sftp
Faire la liste de tous vos fichiers fortran sur master0 dans un fichier liste
Faire une archive compressée contenant tous ces fichiers fortran
Copier cette archive sur siolino par scp
Se connecter en ssh sur siolino
Vérifier que 1 et 4 ont fonctionné correctement
Dé-compresser et dé-archiver sur siolino
Effacer sur siolino les fichiers fortran nouvellement créés.
30 sur 30
Téléchargement