Premiers pas en Linux 1 Bref historique Linux Système d'exploitation créé en 1991. Par Linus Torvalds un étudiant nlandais. Développé et amélioré par des centaines de spécialistes dans le monde. Particularité : librement disponible avec code source (licence GPL). Distribution : téléchargement et sociétés commerciales. Notoriété et consécration en 1998 pour Linux et les logiciels libres : Avril 1998, Netscape transforme Communicator en logiciel libre. Mai 1998, Corel Computer annonce la sortie de Netwinder, un NC fonctionnant sous Linux. Juin 1998, IBM abandonne son serveur Web et distribue et supporte APACHE, sous GPL. Juillet 1998 portage des SGBD Informix et Oracle vers Linux. Septembre 1998, Intel entre dans le capital de RedHat (distributeur commercial de Linux). 2 Généralités Linux = système d'exploitation à la norme UNIX. dialogue dans une fenêtre xterm (ou en mode console) via un langage : le shell. Bourne shell (sh) : le plus ancien C shell (csh) Korn shell (ksh) mélange des deux. tcsh (csh amélioré) et le bash (sh amélioré). 1
3 Connection sur une machine Linux : un nom d'utilisateur, (ou userid ou login) un mot de passe ou password. Chaque utilisateur appartient à un groupe, > privilèges (écrire, lire ou exécuter un programme) communs à tous les utilisateurs de ce groupe. un utilisateur particulier, nommé root qui a tous les privilèges. 4 Système de chier 4.1 Structure arborescente, points de montage. Chaque noeud s'appelle un répertoire ou directory (en anglais). Dans ces répertoires se trouvent des chiers (ou le en anglais). Les diérents périphériques de stockage (disques, disquette, CD-ROM,...) sont montés dans un des répertoires (commande mount) 4.2 Chemin d'accès (path) Répertoires et chiers sont désignés par leur chemin d'accès (path) absolu ou relatif. Exemple /home/puiseux/sources/zorro.c (chemin absolu) 2
Exemple : si le répertoire courant est /home/puiseux/sources (chemin absolu). Alors /home/puiseux/lib,../lib (chemin relatif). A la connexion, chaque utilisateur est connecté dans son répertoire personnel (ou répertoire home) : /home/puiseux. Le répertoire personnel d'un utilisateur est aussi désigné par ~, ou $HOME. '.' (point) désigne le répertoire courant, '..' désigne le répertoire parent du répertoire courant. 4.3 Arborescence sous Linux (d'après Premiers pas sous Linux Auteur : Armand Delcros) Voici l'arborescence d'un système UNIX classique : / répertoire racine. /bin binaires de gestion de Linux. Et les commandes étudiées plus loin. /dev chiers spéciaux. /dev/hda1 première partition de mon disque dur IDE, /dev/fd0 lecteur de disquettes. /etc chiers de conguration. (Par ex /etc/passwd) /sbin les binaires du système. (Par ex shutdown) /home est le répertoire qui contient les répertoires des utilisateurs du système. /lost+found chiers perdus. (Erreurs disque : sans chemin d'accès) /tmp chiers temporaires, accessible par tous. /var/spool le d'attente. (Par ex, les les d'attente de l'imprimante). /usr utile à tous les utilisateurs : /usr/bin les binaires pour utilisateurs et des scripts. /usr/x11r6 concerne Xfree86 (les bibliothèques, les binaires, la documentation). /usr/include les "headers" ou include pour la programmation. /usr/lib les bibliothèques. (Par ex. la bibliothèque C ou C++). /usr/local chiers d'usage local et des logiciels qui ne sont pas propres à Unix. 3
5 Commandes fondamentales Interrompre une commande, utiliser les touches : Ctrl c Les noms des commandes sont des abbréviations de mots anglais. Par ex. cd signie Change Directory. A vous... man, info, apropos obtenir de l'aide (commande ou mot clé). $ info ls $ apropos float $ man cd cd se déplacer dans les répertoires. $ cd /home/puiseux/sources (chemin ou path absolu) $ cd ~/sources $ cd.. (chemin relatif ) $ cd est équivalent à cd ~ pwd Où suis-je? ls lister les chiers d'un répertoire. option -l : liste détaillée $ ls -l total 40 -rwxrwxr-x 1 puiseux puiseux 16557 aoû 29 17:20 a.out* -rw-rw-r-- 1 puiseux puiseux 491 aoû 29 17:20 copie -rw-rw-r-- 1 puiseux puiseux 519 aoû 29 17:11 monfichier -rw-rw-r-- 1 puiseux puiseux 519 aoû 29 17:11 toto.cxx option -a : lister aussi les chiers cachés (leur nom commence par un point). $ ls -a./../ a.out* copie.fichiercache monfichier toto.cxx chmod changer les droits d'un chier ou d'un répertoire en lecture, écriture ou exécution. Syntaxe chmod [options] mode fichier. options :[ugoa][+-][rwx] 4
u=user, g=groupe, o=other, a=all +=ajouter les droits, -=supprimer les droits r=lecture, w=écriture, x=exécution Exemples $ chmod a+x monscript : change le chier monscript en exécutable (+x) pour tous (a). $ chmod g-w toto.cxx : change le chier toto.cxx en chier non-modiable (-w) pour tous les utilisateurs du groupe (g). less Voir le contenu d'un chier texte. $ less toto.cxx emacs Éditer un chier (autre éditeurs : vi, nedit...) cp Copier un chier. $ cp toto.cxx sauvegarde/toto.cxx.bak $ cp toto.cxx sauvegarde (recopie dans le répertoire sauvegarde, même nom) rm Supprimer un chier. $ rm toto.cxx.bak (avec conrmation) $ rm -f toto.cxx.bak (sans conrmation) $ rm -r sauvegarde/ (suppression récursive de tous les sous répertoires et chiers) $ rm -rf sauvegarde/ (idem, sans conrmation, danger) mkdir Créer un répertoire : $ mkdir toto mv Déplacer ou renommer un chier ou un répertoire $ mv toto.cxx toto.cxx.bak $ mv toto.cxx.. locate Retrouver un chier $ locate toto : liste tous les chiers contenant la chaîne toto, indifférent à la casse. which et whereis localise une commande : 5
$ which ls /bin/ls grep Trouver du texte dans un chier et ache la ligne correspondante syntaxe : grep [-il] reg_exp fichiers où : reg_exp est la chaine de caractères à trouver (en réalité, une expression régulière. Consulter $ man perlretut). fichiers : la liste des chiers où chercher, option -i pour ignorer les diérences majuscules/minuscules, option -l n'ache que les noms des chiers (sans la ligne). Exemple : $ grep main *.cxx ln Liens entre chiers. ( raccourcis de windows). ln -s source [dest] ln -s sources repertoire. ou bien $ ln -s toto.cxx toto.cc crée un lien symbolique entre toto.cxx et toto.cc gzip Compacter et décompacter des chiers au format.gz $ gzip toto.cxx remplace toto.cxx par toto.cxx.gz, la version compactée. $ gunzip toto.cxx.gz décompacte le chier. tar Archivage de données. tar [options] archive [fichiers] $ tar -czvf rep.tgz rep crée une archive compactée au format gzip de tout le répertoire rep et la place dans le chier rep.tgz $ tar -xzvf rep.tgz pour détarer, i.e. extraire les chiers de l'archive et reconstituer le répertoire. df du Connaître l'espace disque restant (df, du) $ df-h 6
Filesystem Size Used Avail Use% Mounted on /dev/sda2 99M 66M 28M 70% / /dev/sdb2 8.2G 6.8G 1.5G 82% /home /dev/scd0 72M 72M 0 100% /mnt/cdrom ps et kill Gestion des processus. Si un processus (ou job) bloque ou ralentit la machine (mozilla ici) il est possible de le tuer : $ ps -u puiseux PID TTY TIME CMD 16457 pts/4 00:00:00 bash 27547 pts/4 02:19:10 vmware 30904 pts/4 00:00:00 mozilla-bin 31146 pts/4 00:00:00 ps $ kill -9 30904 1 6 Jobs, tubes, redirections Les pipes (ou tubes) : pour chaîner plusieurs commandes, la sortie de l'une étant l'entrée de la suivante $ ls less $ cat toto sort > > > Les redirections : pour rediriger la sortie standard (écran) vers un chier $ ls > list.txt : le chier list.txt est créé et contient le résultat de la commande ls. $ df > > list.txt : ajoute le résultat de la commande df à la suite du chier list.txt & lancer un job en background : $ toto& : pour lancer la commande toto et récupérer la main durant son exécution. 7 Bibliographie Ouvrages de référence Le Système Linux, Matt Welsh & Lar Kaufman, ed. O'Reilly&Associate, inc.,1999. 1 Si l'écran graphique est gelé, il est possible de passer en mode non graphique : Ctl+Alt+F1. Puis se connecter et tuer le job fautif. Ctl+Alt+F7 vous permet ensuite de repasser en mode graphique. 7
Linux in a nutshell, Manuel de référence, J.P.Hekman et l'équipe de O'Reilly&Associates, 1997. Tutoriaux, apprentissage en ligne : http://linux.uhp-nancy.fr/gs-french-2.1.1/gs2/html/gs.html http://www.linux-kheops.com/doc/bien-debuter/html/gs.html http://www.ee.surrey.ac.uk/teaching/unix/index.html 8