Travaux pratiques Unix I

Transcription

Travaux pratiques Unix I
Travaux pratiques Unix I
Objectifs
L’objectif des exercices suivants est de présenter les commandes de base communes à la plupart
des systèmes Unix.
1
Connexion au système
Une station Unix affiche un écran de login. Tapez le nom d’utilisateur qui vous a été affecté
et le mot de passe correspondant.
Pour vous déconnecter à la fin d’une séance de travail, utilisez la commande logout en environnement texte ou sélectionnez logout dans le menu principal de l’environnement graphique.
1.1
passwd (password)
Le mot de passe d’un compte utilisateur peut être modifié avec la commande :
passwd
Cette commande demande l’ancien mot de passe, puis deux fois le nouveau pour être sûr qu’il
n’y ait pas de faute de frappe, sans l’afficher en clair.
Le nom d’utilisateur et son mot de passe sont personnels. Ne communiquez jamais votre mot
de passe à un tiers.
2
Environnement graphique CDE
Une station de travail Unix offre un environnemnt de travail basé sur le système graphique
multi-fenêtre X11. Il existe plusieurs environnement selon les variantes d’Unix : OpenWindows, CDE, KDE, Gnome,... Les stations utilisées durant ces TPs utilisent l’environnement
CDE.
Présentation du bureau
– applications
– barre de commandes
– icônes
1
Applications de base
–
–
–
–
–
–
dtfile gestionnaire de fichiers
dtterm émulateur de terminal, interpréteur de commandes
dtpad éditeur de texte
netscape navigateur Web
dtcm gestionnaire d’agenda
...
La suite de ce TP est consacrée à la présentation de l’environnement de commandes d’Unix.
On utilisera surtout dtterm.
3
Le Shell (l’interpréteur de commandes)
L’interpréteur de commandes est le programme qui lit les commandes depuis le terminal et
les exécute. Il permet l’exécution de séquences de commandes (appelés shell scripts). C’est
un véritable langage de programmation qui dispose de variables et de structures de contrôle
(tests, boucles,...).
Lors de la connexion au système les scripts contenus dans les fichiers .cshrc et .login sont
exécutés automatiquement. Ces fichiers permettent de configurer l’interpréteur de commandes
à l’aide de variables.
3.1
echo
La commande echo affiche ses arguments. Taper la commande :
echo "Bonjour tout le monde"
3.2
set
La commande set seule affiche toutes les variables du shell avec leur valeur. La plupart de ces
variables sont définies automatiquement lors de la connexion au système.
Taper la commande :
set prompt ’% ’
Quel est l’effet de cette variable?
Taper la commande :
set dir="ls -al"
Cette variable dir peut maintenant être utilisée dans une commande. Pour remplacer la variable par sa valeur dans une commande, on ajoute un $ devant son nom. Taper les commandes :
echo $dir
$dir
2
3.3
Variables d’environnement
Le shell connait deux types de variables : les variables d’environnement qui sont transmises
à toutes les commandes, et les variables locales du shell. Les variables d’environnement sont
définies avec la commande setenv.
3.4
Les caractères spéciaux
L’interpréteur de commandes permet de désigner plusieurs fichiers à l’aide de caratères spéciaux :
?
*
[...]
^[...]
\
Un caractère quelconque
N’importe quelle suite de caractères, peut être vide.
Un caractère de la liste. Ex: [A-Z0-9].
Un caractère n’appartenant pas à la liste.
supprime la signification spéciale du caractère suivant. (\* = *).
Exemples : si le répertoire courant contient :
fich1.bin
fich1.txt
fich2.txt
fich10.txt
fichier.txt readme
zzz
Alors :
fich1*
fich*.txt
fich[0-9]*.txt
???
fich1.bin fich1.txt fich10.txt
fich1.txt fich2.txt
fich10.txt fichier.txt
fich1.txt fich2.txt fich10.txt
zzz
L’interpréteur de commandes sera étudié plus en détails dans le TP suivant.
4
4.1
Commandes de manipulation des fichiers
ls (list files)
Cette commande affiche la liste des fichiers présents dans un répertoire. Un nouvel utilisateur
n’a pas beaucoup de fichiers dans son répertoire.
Taper la commande :
ls
Certains fichiers ou répertoires sont cachés : si leur nom commence par un point (.), ils ne
sont pas listés par la commande ls.
Unix permet de modifier le comportement de ses commandes à l’aide d’ options, qui sont
précédés du caractère -. Taper la commande :
ls -al
3
L’option l permet d’avoir une liste longue et l’option a permet de voir tous les fichiers (all).
elwood% ls −l
drwxr−xr−x
−rw−r−−r−−
−rw−r−−r−−
droits d’accès
2 matthieu
1 matthieu
1 matthieu
512 Mar 10 15:09 CVS
744 Mar 10 14:17 Makefile
8117 Mar 10 15:23 chap1.tex
propriétaire
nombre
de liens
4.2
ii
ii
ii
taille(octets)
date de dernière
groupe
modification
nom du
fichier
cat (concatenate)
Cat est un outil qui permet de combiner des fichiers ou de les copier à l’écran. La commande
cat envoie sa sortie sur la sortie standard d’Unix, par défaut l’écran.
Taper la commande :
cat .cshrc
Cette commande lit le fichier .profile et envoie son contenu à l’écran.
4.3
Utilisation de cat pour créer un fichier
Taper la commande :
cat > temp
Cette forme de la commande lit son entrée de l’entrée standard d’Unix (par défaut, le clavier)
et produit sa sortie dans le fichier temp : la syntaxe > temp signifie rediriger la sortie standard
vers le fichier temp.
Taper le texte suivant (n’utiliser pas les touches flèchées pour déplacer le curseur en cours de
saisie) :
Ceci est un fichier texte
pour faire des tests
et apprendre UNIX
Pour terminer la saisie, appuyez sur Ctrl+D.
Quelle commande utiliser pour visualiser le fichier qui vient d’être saisi?
La commande cat peut également servir à concatener 2 fichier. La commande :
cat temp .cshrc > temp1
concatène les deux fichiers temp et .login et place le résultat dans le fichier temp1.
La séquenece >> permet d’ajouter un fichier à un fichier existant :
cat temp >> temp1
Pour éditer des fichiers de plus grande taille, on utilisera l’éditeur dtpad de l’environnment
CDE.
4
4.4
more - affichage de fichier avec défilement
la commande more est une alternative intéressante à cat lorsque le fichier à visualiser est trop
long pour tenir sur un écran. More affiche le fichier passé en argument un écran à la fois. Dans
more on peut utiliser les touches suivantes :
espace
avance d’un écran
retour chariot avance d’une ligne
back space
revient en arrière d’un écran
h
affiche un écran d’aide des commandes
q
quitte more
/
recherche une chaı̂ne de caractères
4.5
cp (copy)
Cette commande permet de copier un fichier dans un autre. Taper la commande :
cp temp1 temp2
Cela a pour effer de copier le fichier temp1 dans un autre appelé temp2. Si temp2 avait existé,
son contenu précédent aurait été écrasé.
On peut également copier des fichiers vers un autre répertoire. La commande :
cp * /var/tmp
copie tous les fichers du répertoire courant vers le répertoire /var/tmp.
4.6
rm (remove)
La commande rm permet de détruire des fichiers. Taper la commande :
rm temp2
Le fichier est détuit. Une fois détuit, un fichier ne peut pas être récupéré. Pour éviter des
destructions accidentelles, l’option -i ajoutée à cette commande, demande une confirmation
avant de détuire le fichier :
rm -i /var/tmp/temp*
Noter que les options sont placées avant les noms de fichiers. Répondre y pour détruire
temp1.
4.7
mv (move)
Cette commande permet de renommer ou de déplacer des fichiers. Taper la commande :
mv temp1 temp2
pour renommer le fichier temp en temp2. La commande :
mv temp2 /var/tmp
déplace le fichier temp2 vers le répertoire /var/tmp. Quelle commande exécuter pour ramener
ce fichier dans le répertoire courant?
5
4.8
chmod (change file modes)
Cette commande permet de modifier les droits d’accès à un fichier. Les lettres u, g et o
représentent l’utilisateur (propriétaire), le groupe du fichier et les autres (others). Les lettres
r, w et x représentent les droits de lecture d’écriture et d’exécution d’un fichier.
Taper la commande :
chmod go-rw temp
Quel est son effet? Quelle commande utiliser pour le vérifier?
4.9
head
Cette commande permet de visualiser les premières lignes d’un fichier. Elle accepte une option
qui indique le nombre de lignes désirées. Ainsi :
head -2 temp
affiche les deux premières lignes du fichier temp.
Quelle serait la commande pour voir les 10 premières lignes de .cshrc?
4.10
tail
Cette commande permet de visualiser les dernières lignes d’un fichier. Elle accepte une option
qui indique le nombre de lignes désirées. Ainsi :
tail -2 temp
affiche les deux dernières lignes du fichier temp.
Quelle serait la commande pour voir les 10 dernières lignes de .cshrc?
4.11
lp (line printer)
Cette commande permet d’imprimer un fichier sur l’imprimante par défaut du système.
lp temp
Note: Unix ne sait imprimer avec la commande lp que des fichiers texte simple. En général il
faut explicitement convertir les documents dans le langage de l’imprimante (PostScript dans
la plupart des cas) avant d’utiliser la commande. La plupart des applications sous Unix font
cette conversion en interne lorsqu’elles disposent d’une commande d’impression.
4.12
wc (word count)
Cette commande affiche le nombre de caractères, de mots et de lignes dans un fichier. Taper
la commande :
wc temp
Les options de cette commande permettent de selectionner la sortie :
-l nombre de lignes
-c nombre de caractères
-w nombre de mots
Quelle est la commande pour compter les lignes du fichier .cshrc?
6
4.13
grep
Cette commande recherche une expression régulière dans un fichier. La forme la plus simple
d’expression régulière est une chaı̂ne de caractères. La commande :
grep ’faire’ temp
recherche dans le fichier temp la chaı̂ne faire. L’option -n permet d’afficher le numéro de la
ligne où la chaı̂ne a été trouvée.
5
5.1
Manipulation des répertoires
pwd (print working directory)
Lorsqu’un utilisateur se connecte à une station Unix, il est placé dans un répertoire personnel,
en général situé dans le répetoire /home. La commande pwd affiche le chemin d’accès au
répertoire courant.
Taper la commande :
pwd
et noter le résultat.
5.2
cd (change directory)
Cette commande permet de changer de répertoire courant. Pour chacune des commandes
suivantes, indiquer quel est le répertoire courant après son exécution :
cd .
..................
cd ..
..................
cd /
..................
cd $HOME . . . . . . . . . . . . . . . . . .
5.3
mkdir (make directory)
Cette commande crée un sous-répertoire dans le répertoire courant. Indiquer la commande à
taper pour créer un nouveau répertoire nommé tpunix dans le répertoire courant. Exécuter
cette commande. Comment vérifier que le répertoire a bien été créé?
5.4
rmdir (remove directory)
Cette commande permet de détruire un répertoire vide. Indiquer la commande à exécuter
pour détruire le répertoire tpunix. Exécuter cette commande et vérifier le résultat.
6
6.1
Informations diverses
who et rusers
Cette commande affiche la liste des utilisateurs du système. Sur un réseau local, la commande
rusers permet de voir les utilisateurs des différentes machines.
who
7
6.2
cal
Cette commande affiche un calendrier du mois en cours à l’écran. On peut aussi indiquer le
mois et l’année désirés sur la ligne de commande.
6.3
man (manual)
Cette commande affiche la page du manuel de référence Unix pour une commande. Taper la
commande :
man ls
La commande man accepte l’option -k pour rechercher les pages se rapportant au mot-clé
indiqué. Par exemple :
man -k printer
7
7.1
Gestion des processus
ps (process status)
Cette commande liste les processus de l’utilisateur. Taper la commande :
ps
Les options -ef de la commande permettent de voir tous les processus du système. Comment
combiner les commandes ps et grep pour visualiser les processus exécutant la commande
dtterm?
7.2
time
Cette commande permet d’afficher le temps (utilisateur et système) nécessaire pour exécuter
une commande. Taper la commande :
time ls -al
7.3
Construction de pipes
Unix permet de construire des commandes de type pipelines. Cela signifie que la sortie standard d’une commande est injectée directement dans l’entrée standard d’une autre. Le symbole
(( | )) est utilisé pour construire un pipe. Pour illustrer leur fonctionnement voici un exemple :
ls | wc -l
Comment interpréter le résultat?
8
7.4
Filtres
Les commandes Unix qui peuvent utiliser leur entrée standard pour lire les données et produire
un résultat sur la sortie standard sont appelées des filtres. Voici quelques commandes qui
peuvent être utilisées comme filtre dans un pipe :
Commande Rôle
sort
tri des lignes d’un fichier
uniq
élimination des doublons dans un fichier trié
wc
compte les lignes, mots, signes
grep
recherche d’expressions régulières
cat
copie l’entrée standard sur la sortie standard
tail,head
copie de parties d’un fichier
tr
remplacement de caractères
sed
éditeur de flot de données
awk
langage de génération de rapports
cat fichier | tr ’ ’ ’\n’
remplace les blancs dans un fichier texte par des retours à la ligne.
Quelle commande utiliser pour compter le nombre de mots différents utilisés dans un fichier
texte?
7.5
Tâches de fond
Une autre possibilité d’Unix est le traitement en tâche de fond : lorsqu’une commande est
lancée en tâche de fond (en ajoutant un & à la fin de la ligne de commande, l’interpréteur de
commandes rend la main à l’utilisateur immédiatement et d’autres commandes peuvent être
exécutées pendant le déroulement de la tâche de fond.
Taper la commande :
ls -l > dirlist &
Le shell affiche comme résultat le numéro de la tâche de fond entre crochets et le numéro du
processus créé pour exécuter la commande.
Pour détruire une tâche de fond, on utilise la commande kill avec le numéro du processus
correspondant, ou bien le signe % suivi du numéro de la tâche de fond à détuire, par exemple :
kill %1
7.6
sleep
Cette commande suspend l’exécution pour un intervalle de temps donné en secondes. Taper
les commandes :
sleep 200 &
ps
Commenter le résultat.
9
8
Bases de données
Les commandes Unix fournissent les outils pour gérer des petites bases de données sous forme
de fichier texte où chaque ligne représente un enregistremement de la base. Les champs de la
base de données peuvent être séparés par des espace ou par n’importe quel caractère choisi
par l’utilisateur.
Des commandes telle que sort disposent d’options pour sélectionner le champ d’un fichier sur
lequel elles opèrent.
8.1
cut (extrait des colonnes)
cut permet d’extraire d’un fichier organisé en colonnes un ensemble de colones désignées par
les paramètres. Par exemple, étant donné le fichier liste-prix ci-dessous :
cerises 17.80
oranges 14.10
poires 16.30
pommes 12.40
la commande (( cut -f1 liste-prix )) extrait la colonne des noms des produits.
8.2
paste (réunit les colonnes)
La commande paste réalise l’opération inverse de cut. Observer l’effet de la séquence suivante :
cut -f1 liste-prix > produits
cut -f2 liste-prix > prix
paste produits prix
8.3
join (jonction de bases de données)
La commande join permet de réaliser une jonction de bases de données sur des fichiers triés.
Par exemple si en plus du fichier liste-prix, on dispose d’un fichier origines avec le contenu
suivant :
allemagne cerises
syrie
figues
maroc
oranges
espagne
poires
france
pommes
La commande join -j1 1 -j2 2 liste-prix origines construit une table qui contient
toutes les informations connues sur les fruits.
Comment utiliser join pour extraire un enregistrement d’une base de données à partir de la
valeur d’une colone (quel est le pays qui fournit des poires?).
10

Documents pareils