Introduction à Linux
- Introduction à Unix
- version 1.1 (2006)
-
Partie 1 : Introduction à Linux
Introduction à Linux : plan (1)
- I. Introduction
- L'environnement de travail
- L'interpréteur de commandes
- Aide et documentation
Introduction à Linux : plan (2)
Introduction à Linux : plan (3)
Introduction à Linux : plan (4)
Introduction
- I. Introduction
-
- L'environnement de travail
- Principes de base de Linux
- L'interpréteur de commandes
- Aide et documentation
-
-
Principales caractéristiques d'Unix
- Depuis le début dans les années 1970
- Multi-utilisateur et sécurisé
Par défaut, les utilisateurs ordinaires ne peuvent pas toucher aux fichiers d'autres utilisateurs.
En particulier, ils ne peuvent ni modifier les paramètres du système, ni supprimer des programmes, etc.
Utilisateur “root” : utilisateur administrateur, ayant tous les droits.
- Multi-tâche, prise en charge de multiples processeurs
- Extrêmement flexible
- Prise en charge du réseau
Couches dans un système Unix
- Noyau
- Bibliothèque C
- Bibliothèques système
- Bibliothèques d'applications
- Programmes utilisateurs :
- au même niveau que les
- commandes systèmes
Environnement de travail (1)
- L'accès aux fonctionnalités et aux données dans votre environnement de travail Linux s'effectue de deux façons complémentaires :
- via une interface graphique : assurée par un Window Manager (KDE)
- via un (ou plusieurs) terminal (ou terminaux) en mode texte constitué par une fenêtre dans laquelle on interagit avec le système (Konsole )
- Les fonctionnalités graphiques changent avec le Window Manager : elles constituent une interface graphique aux commandes de bases du système
- Les commandes de base ne changent pas : elles sont les mêmes (à quelques exceptions près) pour tous les systèmes Unix et sont standardisées
- Tout est paramétrable et programmable : l'environnement graphique est entièrement paramétrable et le système de base sous-jacent est entièrement programmable
Environnement de travail (2)
Environnement de travail (3)
Environnement de travail (4)
Quelques applications standards
- XEmacs , Kate : éditeurs de texte
- OpenOffice, KOffice : suites bureautique complètes
- Mozilla, Firefox, Konqueror: navigateurs Internet
- Thunderbird, Kmail : clients de messagerie
- Kopete, Gaim : clients de messagerie instantanée
- GIMP : éditeur graphique très puissant
- Gwenview : afficheur de galeries de photos
- Amarok, XMMS, Noatun, Kaffeine : lecteurs audio et multimédia
- K3b : graveur de CD et DVD
- aMule, KMLDonkey, KTorrent : clients P2P
Éditeurs de texte
- Un éditeur de texte est une application qui sert à fabriquer (et modifier) des fichiers de texte (ASCII ou autres)
- Éditeurs de texte graphiques
- Emacs, Xemacs (très vivement conseillé !)
- Kate (uniquement sous KDE)
- Éditeurs en mode texte uniquement
- vi (semi-graphique et très populaire)
- nano (très léger en mémoire et facile à apprendre)
- Éditeurs spécialisés
Emacs / XEmacs
- Emacs et XEmacs sont très semblables (Xemacs par défaut)
- Fonctionnalités d’éditeur de texte extrêmement puissantes
- Editeur multi-modes programmable
- Parfait pour les utilisateurs avancés
- Bien plus d’un simple éditeur de texte (courrier, shell, navigateur)
- Raccourcis clavier non standards mais
très complets et très puissants
- Nécessite un apprentissage assez long
Interpréteurs de commandes (1)
- Interpréteurs de commandes : outils pour exécuter des commandes tapées par un utilisateur dans un terminal
- Appelés “shells” (coquilles) parce qu’ils masquent sous leur surface les détails du système d’exploitation sous-jacent
- Les commandes sont tapées dans un terminal en mode texte, constitué par une fenêtre dans un environnement graphique, ou plus rarement par une console sur un écran en texte seul
- Les résultats sont aussi affichés sur le terminal. Une sortie graphique n’est pas obligatoire (pour la plupart des commandes la sortie est du texte)
- Les interpréteurs de commandes peuvent être programmables : ils fournissent toutes les ressources nécessaire pour l’écriture de programmes complexes (variables, conditions, boucles...)
Interpréteurs de commandes (2)
Interpréteurs les plus courants
- sh : le Bourne shell (par Steve Bourne, obsolète)
Le shell de base qu’on trouvait dans tous les systèmes Unix : maintenant obsolète et remplacé par le bash
- csh : le C shell (obsolète)
Shell avec une syntaxe à la C, qui a connu son heure de gloire
- tcsh : le TC shell (toujours très populaire)
Une implémentation compatible avec le C shell, avec des fonctionnalités avancées (complète les noms de commandes, rappel de commandes antérieures et bien d’autres)
- bash : le Bourne Again shell (par Steve Bourne, le plus populaire)
Une version améliorée de sh avec de nombreuses fonctions nouvelles
- ksh : le Korn Shell (par David Korn, développé chez AT&T)
Compatible avec le Bourne shell et inclut de nombreuses fonctions du C shell
- zsh : un Bourne shell étendu avec beaucoup d'améliorations. Il reprend la plupart des fonctions les plus pratiques de bash, ksh et tcsh
Syntaxe des commandes (1)
- Une commande Unix peut avoir 0, un nombre fixe ou un nombre variable d'arguments, plus un certain nombre d'options. Une option commence en général par un tiret ( - ) et deux tirets à la suite ( -- ) indiquent la fin des options sur une ligne de commande
- [hal@home/bob] date
Une commande sans paramètre qui affiche la date et l'heure courante
- [hal@home/bob] cal 2006
Une commande avec un paramètre (une année) qui affiche le calendrier complet de l'année en question
- [hal@home/bob] cal 9 2006
La même commande avec deux paramètres, le mois et l'année
- [hal@home/bob] echo
Sans argument cette commande affiche une ligne vide
- [hal@home/bob] echo Bonjour tout le monde
Affiche les quatres arguments Bonjour, tout, le et monde, et va à la ligne
- [hal@home/bob] echo -n Bonjour tout le monde
L'option -n empêche le passage à la ligne
Syntaxe des commandes (2)
Exercices I.1
- Testez quelques commandes simples
- Affichez la date courante avec la commande date
- Affichez le calendrier de l'année courante avec cal 2006
- Que fait la commande cal 9 2006 ? la commande cal ?
- Testez la commande echo en évaluant echo Bonjour tout le monde
- Que fait la commande echo sans argument ?
- Essayez d'affichez le message Bonjour tout le monde ! à l'aide la commande echo
- Recommencez en faisant précéder le caractère ' du caractère \ (anti-slash)
- Recommencez en utilisant le caractère ' pour délimiter la chaîne de caractères
- Recommencez en utilisant le caractère " pour délimiter (d'une autre manère) la chaîne de caractères
- Affichez le message précédent mais sans aller à la ligne (utilisez l'option -n)
Edition des commandes (1)
- L'édition d'une commande sous bash est possible pendant la saisie même de la commande, à l'aide de caractères spéciaux qui sont identiques à certains raccourcis clavier de Emacs/XEmacs. Lors de la saisie d'un commande, on est automatiquement en mode insertion, et on dispose des fonctionnalités suivantes :
- Déplacement du curseur
- déplacement du curseur à gauche d'un caractère : flèche gauche ou <ctrl-b>
- déplacement du curseur à droite d'un caractère : flèche droite ou <ctrl-f>
- déplacement du curseur d'un mot à gauche : <meta-b>
- déplacement du curseur d'un mot à droite : <meta-f>
- déplacement du curseur en début de ligne : <ctrl-a>
- déplacement du curseur en fin de ligne : <ctrl-e>
Edition des commandes (2)
- Effacement de caractères
- effacement du dernier caractère saisi (à gauche du curseur) : <backspace>
- effacement du caractère courant (sous le curseur) : <suppr> ou <ctrl-d>
- effacement du mot courant (à partir du curseur) : <meta-d>
- effacement du texte du début de ligne jusqu'au curseur: <ctlr-u>
- effacement de la ligne du curseur à la fin de la ligne : <ctlr-k>
- Insertion des caractères supprmimés
- Les caractères supprimés par les commandes précédentes peuvent être insérés à
- droite du curseur par <ctlr-y>
Edition des commandes (3)
- Historique des commandes
- Le shell bash gère un historique des commandes saisies et on peut se déplacer dans cet historique
- ré-édition de la commande précédent la commande courante dans l'historique : flèche haut ou <ctrl-p>
- ré-édition de la commande suivant la commande courante dans l'historique : flèche bas ou <ctrl-n>
- Complétion
- Le shell bash comprend un mécanisme de complétion pour les noms de commandes comme pour les noms de fichiers
- complétion simple : <tab> à la suite des caractères déjà saisis
- complétion multiple : <tab><tab> à la suite des caractères déjà saisis
Exercices I.2
- Testez à nouveau et séquentiellement les commandes suivantes, mais cette fois en utilisant intensivement l'édition en ligne des commandes :
- Affichez le calendrier de l'année courante avec cal 2006
- Que fait la commande cal 9 2006 ? la commande cal ?
- Testez la commande echo en évaluant echo Bonjour tout le monde
- Essayez d'affichez le message Bonjour tout le monde ! à l'aide la commande echo
- Recommencez en faisant précéder le caractère ' du caractère \ (anti-slash)
- Recommencez en utilisant le caractère ' pour délimiter la chaîne de caractères
- Recommencez en utilisant le caractère " pour délimiter (d'une autre manère) la chaîne de caractères
- Affichez le message précédent mais sans aller à la ligne (utilisez l'option -n)
Aide sur les commandes
- La plupart des commandes de Linux proposent au moins un paramètre d’aide
- -h
(- est surtout utilisé pour introduire des options en 1 caractère)
- --help
(-- est toujours utilisé pour introduire l’option “longue” correspondante, qui rend les scripts plus faciles à comprendre)
- Les commandes affichent souvent un court résumé des options disponibles quand vous utilisez un argument invalide.
Pages de manuel
- man <mot_clé>
Affiche une ou plusieurs pages de manuel pour <mot_clé>
- man man
- La plupart des pages de manuel disponibles concernent des commandes Unix, mais aussi des fonctions, entêtes ou structures de données de bibliothèques C, ou même des fichiers de configuration du système
- man stdio.h
- man fstab (pour /etc/fstab)
- Les pages de manuel sont recherchées dans les répertoires spécifiées par la variable d’environnement MANPATH
Exercices I.4
- A l'aide d'internet, trouvez le nom de la commande Linux qui permet de compresser des fichiers en utilisant l'algorithme de compression de Burrows Wheeler, puis :
- affichez la page de manuel de cette commande
- trouvez le numéro de la version de cette commande actuellement installée sur votre ordinateur
Recherche de ressources sur Internet (1)
- Résolution de problèmes
- La plupart des archives des forums et des listes de discussion sont publiques, et indexées très régulièrement par Google
- Si vous recherchez la cause d’un message d’erreur, copiez-le mot à mot dans le formulaire de recherche, entouré par des guillemets. Il est très probable que quelqu’un d’autre aura déjà rencontré le même problème
- N’oubliez pas d’utiliser Google Groups: http://groups.google.com/
Ce site indexe plus de 20 années de messages de groupes de discussion
Recherche de ressources sur Internet (2)
- Recherche de documentation
- Recherchez <outil> OR <outil> page pour trouver la page d’accueil de l’outil ou du projet et ensuite trouver les plus récentes ressources de documentation
- Recherchez <outil> documentation or <outil> manual (en anglais) dans votre moteur de recherche préféré
- Recherche de documentation générique
- WikiPedia: http://fr.wikipedia.org
De nombreuses et utiles définitions en informatique. Une vraie encyclopédie. Ouverte aux contributions de chacun
Exercices I.5
- Testez l'aide disponible sur les commandes en effectuant les opérations suivantes :
- Affichez l'aide de la commande cal
- Affichez la page de manuel de la commande cal
- Affichez le calendrier de l'année 2000
- Affichez l'aide de la commande date
- Affichez la page de manuel de la commande date
- Affichez l'heure courante (et seulement l'heure, sans les minutes ni les secondes)
- Utilisez la commande touch pour créer un fichier vide de nom vide dans votre répertoire courant
Principes et commandes de base
- II. Principes et commandes
- de base
-
- Système de fichiers
- Commandes de base
- Liens symboliques et physiques
- Droits d'accès
- Impression sous Linux
-
-
Fichiers et répertoires
- Presque tout dans Unix / Linux est un fichier
- Même les répertoires sont des fichiers, contenant une liste de fichiers et de répertoires.
- Depuis le début d’Unix, aucune limitation majeure quant à la longueur d’un nom de fichier. Tout caractère (les espaces en particulier) peut être utilisé dans le nom, et les extensions sont facultatives. Les différences de majuscules ou de minuscules constituent des fichiers distincts.
- Un chemin («path») est une séquence de répertoires imbriqués, avec un fichier ou un répertoire à la fin, séparés par le caractère /
- Chemin relatif: docs/cours/unix.html
Relatif au répertoire courant
- Chemin absolu: /home/john/docs/cours/unix.html
Chemin depuis le répertoire racine du système (/)
Structure de fichiers dans Linux (1)
Structure de fichiers dans Linux (2)
- Rien d’imposé par le système. Peut varier d’un système à l’autre, même entre deux installations de Linux!
-
/ Répertoire racine
/bin/ Commandes de base du système
/boot/ Images, initrd et fichiers de configuration du noyau
/dev/ Fichiers représentant des périphériques
/dev/hda: premier disque dur IDE
/etc/ Fichiers de configuration du système
/home/ Répertoires utilisateurs
/lib/ Bibliothèques de base du système (partagées)
Structure de fichiers dans Linux (3)
- /lost+found Fichiers détériorés que le système a essayé
de récupérer
/mnt/ Systèmes de fichiers montés
/mnt/usbdisk/, /mnt/windows/ ...
/opt/ Outils spécifiques installés par l’administrateur.
Souvent remplacé par /usr/local/
/proc/ Accès aux informations du système
/proc/cpuinfo, /proc/version ...
/root/ répertoire utilisateur de l’administrateur
/sbin/ Commandes réservées à l’administrateur
/sys/ Contrôle du système et des périphériques
(fréquence du processeur, gestion de
l’alimentation des périphériques, etc.)
Structure de fichiers dans Linux (4)
- /tmp/ Fichiers temporaires
/usr/ Programmes utilisateurs ordinaires, non essentiels
au système.
/usr/bin/, /usr/lib/, /usr/sbin...
/usr/local/ Outils spécifiques installés par l’administrateur.
(souvent préféré à /opt/)
/var/ Données utilisées par le système ou ses serveurs
/var/log/, /var/spool/mail (courrier
entrant), /var/spool/lpd (travaux
d’impression)...
Répertoires spéciaux (1)
- Le répertoire relatif ./
- Le répertoire courant. Utile pour les commandes qui ont un répertoire comme argument. Également utile parfois pour lancer des commandes dans le répertoire courant (voir plus tard)
- Ainsi ./lisezmoi.txt et lisezmoi.txt sont équivalents
- Le répertoire relatif ../
- Le répertoire parent. Fait partie toujours partie du répertoire . (voir ls -a). Unique référence au répertoire parent.
- Utilisation la plus courante:
cd ..
Répertoires spéciaux (2)
- Le répertoire absolu ~/
- Pas vraiment un répertoire spécial. Les interpréteurs de commande le remplacent juste par le répertoire utilisateur de l’utilisateur courant
- Ne peut pas être utilisé dans la plupart des programmes, car il n’est pas un vrai répertoire (voir la variable HOME)
- Le répertoire absolu ~bob/
- De façon analogue, remplacé par les shells par le répertoire utilisateur de l’utilisateur bob
Chemins absolus et relatifs
- Un fichier peut être désigné de façon absolu ou relative
- Un chemin absolu identifie de manière unique un fichier ou un répertoire dans l'arborescence :
- /home/bob/src/a.out
- /usr/bin/grep
Un chemin relatif identifie un fichier ou un répertoire en fonction du répertoire courant (on est sous ~bob) :
La commande ls
- ls -a («all»: tous)
Affiche tous les fichiers (y compris les fichiers .*)
- ls -l (long)
Affichage en format long (type, date, taille, propriétaire, permissions)
- ls -t (temps)
Affiche les fichiers les plus récents en premier
Exercices II.1
- Testez la commande ls en affichant, depuis votre répertoire personnel initial (home directory), la liste de tous vos fichiers et sous-répertoires :
- de cinq façons différentes (faites varier le paramètre de ls)
- sous un format condensé
- sous un format long (donnant le propriétaire, les permissions, la taille, ...)
- en affichant aussi les fichiers cachés (dont le nom commence par un point)
- avec un format long et en affichant les fichiers cachés, mais dans l'ordre alphabétique inverse
- avec un format long et en affichant les fichiers cachés, mais du plus récent au plus ancien
- avec un format long et en affichant les fichiers cachés, mais du plus ancien au plus récent
-
Les commandes cd et pwd
- cd rep (change directory)
Fait de rep le nouveau répertoire courant
- cd
Sans argument, fait du répertoire utilisateur le nouveau répertoire courant
- cd – (le caractère tiret : '-')
Fait du répertoire précédent le répertoire courant (le dernier répertoire depuis lequel on a fait cd) le nouveau répertoire courant
- pwd (print working directory)
Affiche le chemin absolu du répertoire courant
Les commandes mv et cp
- mv ancien_nom nouveau_nom (move)
Change le nom du fichier ou du répertoire donné
- mv -i (interactive)
Si le fichier existe déjà, demander confirmation à l’utilisateur
- cp fichier_orig fichier_dest
Crée une copie d’un fichier d’origine
- cp fich1 fich2 fich3 ... rep
Copie tous les fichiers vers le répertoire de destination (dernier argument)
- cp -i (interactive)
Si le fichier de destination existe déjà, demander confirmation à l’utilisateur
- cp -r rep_orig rep_dest (recursive)
Copie du répertoire tout entier
Les commandes rm et rmdir
- rm fich1 fich2 fich3... (remove)
Supprime les fichiers donnés
- rm -i fich1 fich2 fich3... (interactive)
Demande toujours à l’utilisateur de confirmer les suppressions
- rm -r rep1 rep2 rep3... (recursive)
Suppression des répertoires donnés et de tout leur contenu
- rm -f fich1 fich2 fich3... (force)
Suppression des fichiers donnés sans message ni question
- rmdir rep1 rep2 rep3... (remove directory)
Suppression des répertoires donnés seulement s'ils sont vides
La commande mkdir
- mkdir rep (make directory)
Fabrique rep, un nouveau répertoire, dans le courant. Si rep existe dèjà, provoque une erreur
- mkdir rep1 rep2 ... repN
Fabrique séquentiellement plusieurs répertoires
- mkdir rep1/rep2
Il faut que le répertoire rep1 existe déjà, sinon provoque une erreur
- mkdir -p rep1/rep2/.../repN (parent)
Fabrique les répertoires rep1 rep2 ... repN-1 si besoin, et enfin le répertoire repN
Exercices II.2
- Testez les commandes élémentaires relatives à la manipulation des fichiers et des répertoires :
- Créez un répertoire system sous votre homedir, puis un répertoire tp1 sous system
- Effacez le répertoire system avec la commande rmdir. Que constatez-vous ?
- Après avoir effacé les répertoires tp1 et system, créez à l'aide d'une seule commande les répertoires system, system/tp1, system/tp2
- Renommez le répertoire system en linux
- Copiez un fichier de votre choix du répertoire /bin dans le répertoire linux/tp1 :
- depuis le répertoire /bin
- depuis le répertoire linux/tp1
- depuis votre homedir, en utilisant des chemins absolus
- depuis votre homedir, en utilisant des chemins relatifs
- Effacez à l'aide d'une seule commande les répertoires linux/tp1 et linux/tp2
-
Substitutions sur les noms de fichiers
- ls *txt
L’interpréteur remplace d’abord *txt par tous les noms de fichiers et de répertoires finissant par txt (y compris .txt), sauf ceux commençant par . et enfin exécute la ligne de commande ls
- ls -d .*
Affiche tous les fichiers et les répertoires commençant par .
-d indique à ls de ne pas afficher le contenu des dossiers .*
- ls ?.log
Affiche tous les fichiers dont le nom commence par 1 caractère et finit par .log
- rm -rf *
Efface TOUS les fichiers et sous-répertoires du répertoire courant.
A utiliser avec précaution !
Caractères génériques
- Plus généralement :
- * dénote 0, 1 ou plusieurs caractères
? dénote un (et exactement un) caractère quelconque
[...] dénote un caractère appartenant à un ensemble
[^...] dénote un caractère n'appartenant pas à un ensemble
Exercices II.3 (1)
- Placez-vous dans le répertoire /bin puis affichez la liste de tous les fichiers :
- dont le nom commence par la lettre t
- dont le nom termine par la lettre h
- dont le nom a exactement trois lettres
- dont le nom contient la sous-chaîne un
- dont le nom contient au moins un chiffre
- Créez dans votre homedir (avec la commande touch) les fichiers de noms exact fich1, fich2, fich11, fich12, fich1a, ficha1, .fich1, .fich2, afich et toto, puis affichez :
- les fichiers dont le nom commence par fich
- les fichiers dont le nom commence par fich suivi d'un seul caractère
- les fichiers dont le nom commence par fich suivi d'un seul caractère qui est un chiffre
- les fichiers dont le nom commence par le caractère .
- les fichiers dont le nom ne commence pas par f
Exercices II.3 (2)
- Placez-vous dans le répertoire /etc, puis listez tous les fichiers et les noms de répertoires :
- de configuration (i.e. dont le nom termine par le suffixe .conf)
- dont le nom commence par la chaîne cron
- dont le nom ne termine pas par le caractère d
- Placez-vous dans votre répertoire linux , videz-le de son contenu, puis placez-y deux fichiers de noms toto et titi contenant respectivement les lignes toto et titi (utilisez XEmacs)
- Devinez ce que va faire la commande cp t* et vérifiez en l'évaluant
- Construisez le répertoire tata (toujours sous le répertoire linux) puis devinez ce que va faire très exactement la commande mv t* tata . Vérifiez en l'évaluant
- Déplacez tous les fichiers placés sous tata dans linux
- Fabriquez un fichier (avec la commande touch) de nom -i , puis effacez-le
- Fabriquez un fichier de nom t*a , puis effacez-le (et n'effacez que lui !)
- Fabriquez un fichier de nom toto<espace>titi puis effacez-le (et n'effacez que lui !)
Afficher le contenu de fichiers
- Plusieurs façons d’afficher le contenu de fichiers
- cat fich1 fich2 fich3 ... (concaténer)
Met bout à bout et affiche le contenu des fichiers donnés
- more fich1 fich2 ... (plus de détails)
A chaque page, demande à l’utilisateur d’appuyer sur une touche pour continuer. Peut aussi aller directement à la première apparition d’un mot clé (commande "/")
- less fich1 fich2 fich3 ... (moins)
Un more plus puissant !
Ne lit pas le fichier entier avant de commencer à afficher
Permet de remonter en arrière dans le fichier (commande "?")
Les commandes head, tail et cat
- head [-n] fichier (tête)
Affiche les n premières lignes (ou 10 par défaut) du fichier donné.
N’a pas besoin d’ouvrir le fichier en entier pour le faire
- tail [-n] fichier (queue)
Affiche les n dernières lignes (ou 10 par défaut) du fichier donné
Ne charge pas tout le fichier en mémoire. Très utile pour les gros fichiers.
- tail -f fichier (follow)
Affiche les 10 dernières lignes du fichier donné et continue à afficher les nouvelles lignes au fur et à mesure qu’elles sont rajoutées en fin de fichier. Très pratique pour suivre les rajouts à un fichier de journal (“log”)
- cat [-n] fichier
Affiche le contenu du fichier donné. Avec l'option -n numérote chaque ligne affichée de 1 à n (le nombre de lignes)
La commande wc
- wc fichier (word count)
Affiche le nombre de lignes, de mots et de caractères du fichier fichier
- wc -c fichier
Affiche le nombre d'octets contenus dans le fichier fichier
- wc -m fichier
Affiche le nombre de caractères contenus dans le fichier fichier
- wc -l fichier
Affiche le nombre de lignes contenues dans le fichier fichier
- wc -w fichier
Affiche le nombre de mots contenus dans le fichier fichier
La commande sort
- sort fichier
Trie les lignes du fichier selon l’ordre des caractères et les affiche.
- sort -r fichier (reverse)
Idem, mais en ordre inverse
- sort -ru fichier (unique)
Idem, mais ne produit qu’une seule fois les lignes identiques.
- Plus de possibilités seront abordées plus tard
Exercices II.4
-
- Affichez la première ligne du fichier .bashrc de votre homedir
- Affichez les 10 dernières lignes du fichier .bashrc
- Visualisez le fichier /etc/termcap successivement avec les commandes cat, more et less
- Visualisez le fichier /etc/termcap avec la commande less et sautez directement aux lignes contenant la chaîne de caractères ANSI (en utilisant / et n)
- Testez la commande wc et ses différentes options sur le fichier /etc/termcap
- Créez un fichier de texte (dans votre répertoire linux) contenant quelques caractères sur deux lignes mais ne terminant pas par un newline (ligne vide en fin de fichier) et comptez le nombre de caractères du fichier avec la commande wc
- Recommencez en ajoutant cette fois un newline en fin de fichier
- Testez la commande sort sur plusieurs fichiers comme /usr/lib/helix/README ou /var/www/icons/README
- Testez les commandes cat, wc et sort sans arguments et en saisissant des lignes interactivement (tapez Ctrl-d pour terminer)
-
La commande grep (1)
- grep motif fichiers
Parcourt les fichiers donnés et affiche les lignes qui correspondent au motif spécifié.
- grep erreur *.log
Affiche toutes les lignes contenant erreur dans les fichiers *.log
- grep -i erreur *.log
Idem, mais indifférent aux majuscules / minuscules
- grep -ri erreur .
Idem, mais récursivement dans . et ses sous-répertoires
- grep -v info *.log
Affiche toutes les lignes des fichiers, sauf celles qui contiennent info
La commande grep (2)
- Le motif (le premier paramètre) de grep est une expression régulière qui utilise des caractères semblables aux caractères génériques du shell mais dont l'interprétation diffère
- grep 'es*ai' fichier
Affiche les lignes qui contiennent e suivi d'un ou plusieurs s et terminant par ai
- grep 'es.ai' fichier
Affiche les lignes qui contiennent es suivi d'un caractère quelconque et terminant par ai
- grep '[0-9]' fichier
Affiche les lignes qui contiennent au moins un caractère numérique
- grep '^Je' fichier
Affiche les lignes qui commencent par Je
- grep '\.$' fichier
Affiche les lignes qui termine par le caractère .
- grep '[^;:0-9]' fichier
Affiche les lignes qui ne contiennent ni chiffres, ni ; ou :
La commande find
- Plus facile à expliquer par quelques exemples
- find . -name “*.pdf” [-print]
Recherche tous les fichiers *.pdf dans le répertoire courant (.) et ses sous-répertoires. Vous devez utiliser les guillemets pour empêcher le shell de substituer le caractère *
- find docs -name "*.pdf" -exec xpdf {} ';'
Recherche tous les fichiers *.pdf dans le répertoire docs et les affiche l’un après l’autre
- De nombreuses possibilités existent et il faut lire la page de manuel ! Cependant, les 2 exemples ci-dessus couvrent la plupart des besoins
La commande locate
- Outil de recherche à base d’expressions régulières, essentiellement pour trouver l'emplacement de fichiers ou de répertoires
- locate clé
Affiche tous les fichiers sur votre système contenant clé dans leur nom
- locate “*.pdf”
Affiche tous les fichiers *.pdf existant sur votre système.
- locate “/home/frigo/*mousse*”
Affiche tous les fichiers *mousse* dans le répertoire indiqué (chemin absolu)
- locate est très rapide grâce à l’indexation de tous les fichiers dans une base de données dédiée, qui est mise à jour régulièrement
- locate est beaucoup moins précis que find qui est beaucoup plus adapté aux recherches associées à des actions sur les fichiers trouvés
Exercices II.5
-
- Affichez les lignes du fichier /etc/termcap qui contiennent le caractère #
- Affichez les lignes du fichier /etc/termcap qui commencent par le caractère #
- Affichez les lignes du fichier /etc/termcap qui contiennent des nombres séparés par des points (comme par exemple 3.1 ou 10.2.1)
- Affichez les lignes du fichier /etc/termcap qui contiennent le caractère $
- Affichez les lignes du fichier /etc/termcap qui terminent par le caractère \
- Affichez tous les fichiers réguliers (les fichiers, et non pas les répertoires ou les liens) vous appartenant (i.e. se trouvant dans votre homedir ou récursivement dans un de ses sous-répertoires)
- Affichez le nom de tous les répertoires (et seulement des répertoires) vous appartenant
- Affichez tous les fichiers cachés (i.e. de nom .*) vous appartenant
- Créez plusieurs fichiers d'extension .bak dans votre homedir et dans certains de ses sous-répertoires, oubliez leur emplacement, puis effacez-les tous à l'aide d'une seule commande
- A l'aide de la commande touch, créez plusieurs fichiers vides dans votre homedir et dans certains de ses sous-répertoires, oubliez leur emplacement, puis effacez-les tous à l'aide d'une seule commande
Comparaison de fichiers et répertoires
- cmp fichier1 fichier2
Compare deux fichiers quelconques.
- diff fichier1 fichier2
Affiche les différences entre deux fichiers, ou rien si les fichiers sont identiques.
- diff -r rep1/ rep2/
Affiche les différences entre fichiers de même nom dans les deux répertoires.
- Pour examiner en détail les différences, mieux vaut utiliser des outils graphiques
Le programme kompare
- Un autre outil pratique pour comparer des fichiers et fusionner leurs différences
Mesure de la taille de fichiers
- du -h fichier (disk usage)
-h: affiche la taille du fichier donné, sous forme lisible par un humain: K (kilo-octets), M (mega-octets) or G (giga-octets). Sinon du rend le nombre brut de blocs occupés par le fichier sur le disque (difficile à lire).
- du -sh rep
-s: rend la somme des tailles de tous les fichiers dans le répertoire donné
Mesure de l’espace disque
- df -h rep
Affiche des informations sur l’espace disque utilisé et disponible dans le système de fichiers qui contient le répertoire donné.
De même, l’option -h n’existe que dans GNU df.
- Exemple :
> df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/hda5 9.2G 7.1G 1.8G 81% /
- df -h
Affiche les informations d’espace disque pour tous les systèmes de fichiers disponibles sur le système. Quand des erreurs surviennent, utile pour vérifier si des systèmes de fichiers pleins.
Exercices II.6
-
- Copiez le fichier /etc/termcap dans votre homedir
- Editez le fichier termcap , modifiez-en quelques lignes, ajoutez-lui une ligne et supprimez-lui une ligne
- Testez les commandes cmp et diff sur les fichiers /etc/termcap et termcap
- Visualisez les différences entre les fichiers /etc/termcap et termcap à l'aide de la commande kompare, que vous lancerez successivement :
- le menu K (sous-menu Développement)
- par la commande kompare tapée dans un terminal
- par le lanceur de commande (menu K puis action Exécuter une commande)
- Affichez la taille en méga-octets occupée par votre homedir
- Affichez la taille en kilo-octets du fichier /etc/termcap
- Affichez les informations d’espace disque pour tous les systèmes de fichiers disponibles sur votre système
Compression
- Très utile pour compacter de gros fichiers et économiser de la place
- [un]compress fichier
Utilitaire de compression traditionnel d’Unix. Crée des fichiers .Z.
Seulement gardé pour raisons de compatibilité. Performance moyenne.
- g[un]zip fichier
Utilitaire de compression GNU zip. Crée des fichiers .gz.
Assez bonne performance (un peu meilleur que Zip)
- b[un]zip2 <fichier>
Le plus récent et le plus performant des utilitaires de compression. Crée des fichiers .bz2. La plupart du temps 20-25% meilleur que gzip.
Utilisez celui-ci ! Maintenant disponible sur tous les systèmes Unix.
Archivage (1)
- Utile pour sauvegarder ou publier un ensemble de fichiers
- tar: à l’origine “tape archive” (“archive sur bande”)
- Création d’une archive:
tar cvf archive fichiers-ou-répertoires
c (créer) : pour fabriquer l'archive
v (verbeux) : utile pour suivre la progression de l’archivage
f (fichier) : archive créée dans un fichier (et non sur une bande)
- Exemple :
tar cvf /backup/home.tar /home
bzip2 /backup/home.tar
Archivage (2)
- Afficher le contenu d’une archive ou vérifier son intégrité:
tar tvf archive
- Extraire tous les fichiers d’une archive:
tar xvf archive
- Extraire seulement quelques fichiers d’une archive:
tar xvf archive fichiers-ou-répertoires
Les fichiers ou répertoires sont donnés avec un chemin relatif au répertoire racine de l’archive.
Options supplémentaires dans GNU tar
- GNU tar sous GNU / Linux
Permet de compresser et décompresser des archives au vol. Utile pour éviter de créer d’énormes fichiers intermédiaires. Plus facile à faire qu’en combinant tar et gip/bzip2
- j: [dé]compresse au vol avec bzip2
- z: [dé]compresse au vol avec gzip
- Exemples
- tar jcvf projet.tar.bz2 projet/
- tar ztf projet.tar.gz
Exercices II.7
-
- Ouvrez votre navigateur et allez à l'URL http://personal.riverusers.com/~thegrendel/
- Téléchargez l'archive abs-guide-4.0.tar.bz2 (cliquer sur Advanced Bash Scripting Guide)
- Créez le répertoire unix/abs et déplacez l'archive dans ce répertoire
- Visualisez le contenu de l'archive sans la décompresser ni l'extraire
- Décompressez et extrayez l'archive en une seule commande
- Créez un répertoire de nom votre login
- Copiez sous ce répertoire tous les fichiers et sous-répertoires cachés de votre homedir
- Fabriquez une archive compressée de ce répertoire (et non pas seulement du contenu de ce répertoire)
- Echangez-le par mail avec celui d'un autre étudiant
- Sauvez, décompressez et extrayez dans votre répertoire tmp l'archive que vous avez reçue
- ATTENTION : ne décompressez jamais une archive, en particulier dans votre homedir, sans avoir auparavant listé son contenu, et vérifié que son contenu était bien dans un répertoire
Liens symboliques
- Un lien symbolique est un fichier spécial qui est juste une référence au nom d’un autre (fichier ou répertoire)
- Utile pour simplifier et réduire l’utilisation du disque quand deux fichiers ont le même contenu.
- Exemple:
/usr/local/bin/java -> /usr/jdk1.5.0_03/bin/java
- Comment distinguer les liens symboliques:
- ls -l affiche -> et le fichier référencé par le lien
- GNU ls affiche les liens avec une couleur différente
Création de liens symboliques
- Pour créer un lien symbolique (même ordre que dans cp) :
ln -s nom_fichier nom_lien
- Pour créer un lien vers un fichier dans un autre répertoire, avec le même nom :
ln -s ../LISEZ_MOI.txt
- Pour créer plusieurs liens d’un coup dans un dossier donné :
ln -s fich1 fich2 fich3 ... rep
- Pour supprimer un lien :
rm nom_lien
Bien-sûr, cela ne supprime pas le fichier référencé par le lien
Liens physiques
- Par défaut, ln crée des liens physiques
- Un lien physique vers un fichier est un fichier ordinaire, avec exactement le même contenu physique
- Bien qu’ils économisent toujours de la place, les liens physiques sont indiscernables des fichiers d’origine.
- Si vous supprimez le fichier d’origine, cela n’affecte pas le contenu du lien physique.
- Le contenu est supprimé quand il n’y a plus aucun fichier (lien physique) qui y fait référence.
Noms de fichiers et inodes
-
- Pour mieux comprendre les liens symboliques et physiques
Exercices II.8
-
- Créez un fichier de texte linux/lien contenant quelques lignes
- Créez un lien symbolique de linux/lien vers linux/lien.sym
- Créez un lien physique de linux/lien vers linux/lien.phy
- Vérifiez que le contenu des deux liens ainsi créés est bien identique à celui de linux/lien
- Renommez le fichier linux/lien en linux/link
- Le contenu des deux liens est-il toujours le même ? Expliquez !
- Créez un lien symbolique sur le fichier /etc/fstab
- Vérifiez que le contenu du lien est correct
- Recommencez en créant cette fois un lien physique
- Recherchez tous les liens symboliques vous appartenant (i.e. se trouvant dans votre homedir, ou récursivement dans un de ses sous-répertoires)
Droits d’accès aux fichiers
- 3 types de droits d’accès :
- Accès en lecture (r)
- Accès en écriture (w)
- Droits d’exécution (x)
Contraintes de droits d’accès
- x sans r est autorisé mais sans valeur.
Vous devez pouvoir lire un fichier pour l’exécuter
- Les répertoires requièrent à la fois les droits r et x : x pour entrer, r pour accéder au contenu
- Vous ne pouvez pas renommer, supprimer ou copier des fichiers dans un répertoire si vous n’avez pas accès en écriture à ce répertoire
- Si vous avez accès en écriture à un répertoire, vous POUVEZ supprimer un fichier même si vous ne disposez pas de droits d’écriture pour ce fichier (souvenez-vous qu’un répertoire est juste un fichier décrivant une liste de fichiers). Cela permet même de modifier un fichier (le supprimer et le recréer) même protégé en écriture
Exemples de droits d’accès
- -rw-r--r--
Lisible et modifiable pour le propriétaire, seulement lisible pour les autres.
- -rw-r-----
Lisible et modifiable pour le propriétaire, seulement lisible pour les utilisateurs appartenant au groupe du fichier.
- drwx------
Répertoire seulement accessible par son propriétaire
- -------r-x
Fichier exécutable seulement par les autres, mais ni par votre groupe ni par vous-même. Droits d’accès typique d'un piège !
chmod: modifier les permissions
- chmod permissions fichiers
2 formats possibles pour permissions : format en base 8 ou format symbolique
- Format en base 8 : chmod abc fichiers
avec a, b et c valant r*4+w*2+x (r, w, x égaux à 0 ou 1)
Exemple : chmod 644 fichier (rw pour u, r pour g et o)
- Format symbolique : plus facile à comprendre sur des exemples
chmod go+r ajouter le droit en lecture au groupe et aux autres
chmod u-w supprimer le droit d’écriture pour le propriétaire
chmod a-x (all ) enlever les droits d’exécution à tous les
utilisateurs
Autres options de chmod (1)
- chmod -R a+rX linux/
-
Rend linux et tout ce qu’il contient accessible à tout le monde!
- R : applique les changements récursivement
- X : x, mais seulement pour répertoires et fichiers déjà exécutables. Très pratique pour ouvrir récursivement l’accès à des répertoires, sans donner le droit d’exécution à tous les fichiers
Autres options de chmod (2)
- chmod a+t /tmp
- t : (“sticky”: collant). Permission spéciale pour les répertoires, autorisant uniquement l’effacement d’un fichier par son propriétaire ou par celui du répertoire
- Utile pour les répertoires accessibles en écriture par plusieurs utilisateurs, comme /tmp
Exercices II.9
- Placez-vous dans le répertoire linux, puis :
- Créez le fichier vide fichier, et examinez ensuite ses permissions
- Modifiez successivement les permissions du répertoire linux pour :
- supprimer tous les accès à tout le monde
- ajouter l'accès en lecture, écriture et traversée pour vous seul
- ajouter l'accès en lecture et traversée pour le groupe
- Créez le répertoire linux/tmp, puis le fichier linux/tmp/perm, et positionnez successivement les permissions adéquates pour que vous puissiez :
- lire, modifier et supprimer perm
- lire, modifier mais pas supprimer perm
- lire, supprimer mais pas modifier perm
- lire mais ni modifier et ni supprimer perm
- Créez le fichier linux/tmp/share et positionnez les permissions nécessaires pour qu'un utilisateur de votre groupe puisse lire, modifier mais pas supprimer share
Impression sous Unix
- Multi-utilisateurs, multi-travaux, multi-clients, multi-imprimantes :
Sous Unix / Linux, les commandes d’impression n’impriment pas vraiment. Elles envoient des tâches à des queues d’impression, soit sur la machine locale, soit sur des serveurs d’impression ou sur des imprimantes réseau
- Système indépendant de toute imprimante :
Les serveurs d’impression n’acceptent que des
travaux en PostScript ou en texte. Les pilotes
d’imprimante sur le serveur se chargent de la
conversion vers le format propre à chaque imprimante
- Système robuste :
Redémarrez un système, il continuera à imprimer les travaux en attente
- L'impression est soit pillotée par l'application (comme OpenOffice) soit lancée par l'utilisateur (impression de fichier PostScript ou texte)
Impression de fichiers PostScript
- Variable d’environnement utile: PRINTER
Définit l’imprimante par défaut sur le système. Exemple:
export PRINTER=niv2a
- lpr [-Pimp] fichiers
Envoie les fichiers à la file d'attente de imp, l'imprimante spécifiée. Les fichiers doivent être en format texte ou PostScript, sinon, vous n’imprimerez que des déchets
- a2ps [-Pimp] fichiers
Convertit de nombreux formats vers PostScript et l’envoie le résultat vers la queue spécifiée. Fonctionnalités utiles: plusieurs pages / feuille, numérotation des pages, cadre d’informations
- a2ps -o fichier.ps fichier
Convertit fichier dans le fichier PostScript fichier.ps
Contrôle de travaux d’impression
- lpq [-Pqueue]
Affiche tous les travaux d’impression de la queue par défaut ou de la queue donnée
lp is not ready
Rank Owner Job File(s) Total Size
1st asloane 84 troyens_windows_nsa.ps 60416 bytes
2nd amoore 85 gw_bush_erreurs_irak.ps 65024000 bytes
- cancel numéro_tâche [queue]
Retire la tâche spécifiée de la queue d’impression
- Le contrôle des travaux d'impression est également possible depuis le Window Manager : KjobViewer sous KDE
Utilisation de fichiers PostScript et PDF
- Manipulation d’un fichier PostScript
- Visualisation avec Kghostview
- Conversion possible en PDF avec ps2pdf :
ps2pdf document.ps [document.pdf]
- Impression directe avec lpr
- Manipulation d’un fichier PDF
- Visualisation avec acroread, Kpdf
- Conversion possible en PostScript avec pdf2ps:
pdf2ps document.pdf [document.ps]
- Impression après conversion en PostScript
Exercices II.10
- Créez le fichier de texte linux/texte.txt qui contient plusieurs ligne de texte
- Fabriquez le fichier linux/texte.ps, version PostScript du fichier linux/texte.txt, à l'aide la commande a2ps, et visualisez-le successivement avec les commandes kpdf et acroread
- Copiez le fichier /usr/share/doc/bash-3.1/loadables/cat.c dans votre répertoire linux
- Fabriquez le fichier linux/cat.ps, version PostScript du fichier linux/cat.c, à l'aide la commande a2ps, et visualisez-le successivement avec les commandes kpdf et acroread
- Recommencez, mais en produisant cette fois un fichier PostScript à raison d'une page (de source ASCII) par page (PostScript) dans lequel les lignes de code C sont numérotés
Redirections et processus
- III. Redirections et processus
-
- Entrées/sorties et redirections
- Les tuyaux
- Contrôle de tâche et de processus
Descripteur de fichier
- Les entrées/sorties des commandes sont repérées par des descripteurs de fichier ("file descriptor")
- Un descripteur de fichier est un entier associé à un fichier spécial
- On peut modifier (en les redirigeant) les descripteurs de fichier associés aux entrées/sorties de n'importe quelle commande
- Les entrées/sorties standards ne sont que des descripteurs de fichier prédéfinis associés par défaut aux entrées/sorties des commandes
- Pour chaque commande, on distingue :
- l'entrée standard : c'est le clavier
- la sortie standard : c'est l'écran
- la sortie d'erreur standard : c'est l'écran
Entrée standard (1)
- De nombreuses commandes, invoquées sans arguments en entrée, lisent leurs données sur l’entrée standard
- Le file descriptor décrivant l'entrée standard est 0
- L'e