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