Prise en main de Linux

(Vos commentaires sont les bienvenus : mailto:jciehl@bat710.univ-lyon1.fr)



Acces Internet

    La suite d'outils internet Mozilla est installée, elle est accessible par le menu de votre environnement graphique. Un WebMail (si vous souhaitez lire vos mails depuis un naviguateur internet) est également accessible à l'adresse http://sqmail710.univ-lyon1.fr (remarque: les cookies doivent être activés pour vous connecter). La documentation du WebMail est disponible sur FAQ710. Un  serveur POP3 (pop710.univ-lyon1.fr) est également disponible, si vous souhaitez récupérer vos mail sur une autre machine.

Organisation des fichiers

    Les fichiers sont organisés d'une manière particulière sous Unix / Linux. Tous les périphériques apparaissent dans la même arborescence (il n'y a pas A:, C:, D:, etc.). La racine de l'arborescence est notée '/'.

Essayez la commande : "ls -lF /" (tapez la commande précédente, sans les "", dans un terminal -- icone avec un écran et une patte)

vous devriez obtenir quelquechose qui ressemble à cela :

total 96
drwxr-xr-x    2 root     root         4096 Jan  5  2003 bin/
drwxr-xr-x    2 root     root         4096 Dec  2  2002 boot/
drwxr-xr-x    2 root     root         4096 Mar 18  2003 cdrom/
drwxr-xr-x    5 root     root        24576 Sep 16 18:17 dev/
drwxr-xr-x   91 root     root         8192 Sep 30 14:39 etc/
drwxr-xr-x    2 root     root         4096 Mar 18  2003 floppy/
drwxr-xr-x    3 root     root            0 Sep 30 12:07 home/
drwxr-xr-x    2 root     root         4096 Jul  5  2000 initrd/
drwxr-xr-x    6 root     root         4096 Oct  2  2002 lib/
lrwxrwxrwx    1 root     root           15 Mar 18  2003 linux_ext -> /misc/linux_ext/
drwxr-xr-x    2 root     root        16384 Oct 29  2000 lost+found/
drwxr-xr-x    2 root     root            0 Sep 29 16:20 misc/
drwxr-xr-x    2 root     root         4096 Mar 18  2003 mnt/
drwxr-xr-x    2 root     root            0 Sep 16 18:17 net/
dr-xr-xr-x   81 root     root            0 Sep 16 20:17 proc/
drwxr-xr-x    2 root     root            0 Sep 16 18:17 projet/
drwx------   11 root     root         4096 Mar 18  2003 root/
drwxr-xr-x    2 root     root         4096 Mar  7  2003 sbin/
drwxrwxrwt    8 root     root         4096 Sep 30 14:15 tmp/
drwxr-xr-x   15 root     root         4096 Mar 18  2003 usr/
drwxr-xr-x   16 root     root         4096 Jun 14  2002 var/
drwxr-xr-x    6 root     root            0 Sep 30 14:39 vol/

    La commande ls (cf. man ls) permet de lister les fichiers présents à un point de l'arborescence. ls /  liste les fichiers présents à la racine. Chaque ligne de l'affichage correspond à un fichier ou à un répertoire. La première colonne donne les droits d'accès de chaque fichier ou répertoire. Ensuite les colonnes indiquent le propriétaire, puis la taille, l'heure de modification et enfin le nom du fichier.

Le répertoire bin (marqué par un /) contient les commandes de base que vous pouvez utiliser.
Le répertoire cdrom contient éventuellement les fichiers présents sur le cdrom. (voir plus loin)
Le répertoire floppy contient éventuellement les fichiers présents sur la disquette (voir plus loin)
Le répertoire home contient les espaces de travail des utilisateurs du système, dont le votre. Il doit se trouver dans le répertoire /home/<votre login>

    Essayez les commandes ls /home, par exemple, ou ls /floppy.

    Au contraire de Windows et de DOS, les périphériques physiques comme le lecteur de cd et de disquette font partis de l'arborescence de fichiers. Il n'y a pas de A:, C:,  D:, par contre il y a les répertoires /floppy, /home, /cdrom. Il faut cependant indiquer au système que vous souhaitez manipuler les fichiers présents sur une disquette ou un cd : ce sont les commandes mount /floppy et mount /cdrom (man mount) qui essayent de rendre accessible le contenu de la disquette ou du cd. Lorsque les manipulations de fichiers sont terminées, il faut aussi l'indiquer avec la commande umount /floppy ou umount /cdrom (man umount).

Remarque : vous êtes la seule personne à pouvoir "démonter" votre disquette ou votre cd, si vous oubliez la commande umount /floppy ou umount /cdrom, les autres utilisateurs seront bloqués (même si vous avez éjecté la disquette ou le cd). Faîtes attention.

Commandes élémentaires

    Les manipulations de fichiers peuvent se faire de plusieurs manières : soit à la souris avec l'interface Gnome, soit en utilisant des commandes du shell (comme ls, par exemple). De manière générale, il s'agit de taper le nom d'une commande suivie de ses paramètres dans un terminal pour l'éxécuter.     Les commandes de manipulation de fichiers sont, avec un peu d'entrainement, plus pratiques, plus puissantes et plus rapides à utiliser que l'interface graphique. Les filtres, ou jokers, permettent d'effectuer la même opération sur plusieurs fichiers/répertoires simultanément.

Exemples :
    lister tous les fichiers sources : ls *.c (facile), tous les fichiers sources et les entêtes ls *.c *.h ou ls *.[ch]
    déplacer tous les fichiers vers un autre répertoire : mv * autre
   
    L'annexe ci-dessous contient un extrait de la documentation sur les constructions possibles.

    Il est possible de créer ses propres fonctions ou commandes en utilisant soit des raccourcis (avec alias, cf. man bash), soit le langage interne de l'interpréteur de commande (man bash).

Environnement de travail

    Le compilateur C/C++ est le compilateur GCC de la Free Software Foundation. En plus d'être gratuit et de proposer son code source complet, c'est aussi l'un des plus performants. Il s'utilise comme n'importe quelle commande, il s'agit de taper gcc dans le shell.

    Bien qu'il existe de nombreux environnement de développement intégré sous Linux, nous n'en utiliserons pas. Ce n'est pas par pure perversité, mais dans un but pédagogique. Si vous comprennez toutes les étapes du cycle de développement, vous n'aurez aucune difficulté à configurer n'importe quel environnement intégré.

    L'autre outil absolument nécessaire est un éditeur de source, xemacs, nedit et Gnome edit, sont disponibles.
    Deux derniers outils fortement utiles : un debugger (des suggestions pour la traduction ? traqueur de bogues, peut-être ?) et un gestionnaire de projet. Pour les dépisteurs (ou dévermineurs ?), gdb (mode terminal), xxgdb (mode graphique) et ddd sont installés. Pour le gestionnaire de projet, il y a make.

    L'utilisation de xxgdb est suffisament simple pour que vous l'appreniez au fur à mesure, par contre l'utilisation du gestionnaire de projet nécessite quelques explications supplémentaires : voir cette page.

    De manière générale, l'aide est disponible avec la commande man, ou info, vous pouvez aussi utiliser le gnome help system (icone bulle avec un point d'interrogation). La version française des pages de man de la plupart des commandes et des fonctions C sont disponibles sur cette page.

    Par commodité, vous pouvez accéder à ces informations directement à l'url http://www710.univ-lyon1.fr/~jciehl/, rubrique Cours/Sujet/Notes / Licence.



Suite de la lecture : première compilation sous Linux avec GCC





Annexe : noms de fichiers, jokers et filtres ...

Ceci est un extrait de la documentation de bash, l'interpréteur de commandes (man bash).


Développement des noms de fichiers

Après le découpage des mots, et si l'option -f n'est pas indiquée, bash recherche dans chaque mot les caractères *, ?, (, et [. Si l'un d'eux apparaît, le mot est considéré comme un motif, et remplacé par une liste, classée par ordre alphabétique, des noms de fichiers correspondant à ce motif. Si aucun nom de fichiers ne correspond, et si l'option shell nullglob n'est pas active, le mot reste inchangé. Si l'option nullglob est active, et si aucune correspondance n'est trouvée, le mot est supprimé. Si l'option shell nocaseglob est activée, la correspondance a lieu sans tenir compte des différences majuscules / minuscules. Quand un motif est utilisé pour créer des chemins d'accès, le caractère ``.'' au début d'un nom, ou immédiatement à la suite d'un slash doit être explicitement mis en correspondance, à moins que l'option shell dotglob ne soit active. Le caractère slash doit toujours être mis en correspondance explicitement. Dans tous les autres cas, le caractère ``.'' n'est pas traité spécifiquement. Voyez la description de la commande shopt dans COMMANDES INTERNES DU SHELL pour une description des options shell nocaseglob, nullglob, et dotglob.

la variable shell GLOBIGNORE peut servir à restreindre l'ensemble des noms de fichiers correspondant à un motif. Si GLOBIGNORE est remplie, chaque nom de fichier qui correspond aussi à un motif de GLOBIGNORE est supprimé de la liste des correspondances. Les noms de fichiers ``.'' et ``..'' sont toujours ignorés, même quand GLOBIGNORE est remplie. Toutefois, configurer GLOBIGNORE a pour effet d'activer l'option shell dotglob, ainsi tous les autres noms de fichiers commençant par ``.'' correspondront. Pour obtenir l'ancien comportement ignorant les noms commençant par ``.'', placez ``.*'' dans l'un des motifs de GLOBIGNORE. L'option dotglob est désactivée si la variable GLOBIGNORE n'existe pas.

Motifs génériques

Tout caractère apparaissant dans un motif, hormis les caractères spéciaux décrits ci-après correspond à lui-même. Le caractère NUL ne peut pas se trouver dans un motif. Les caractères spéciaux doivent être protégés si ils doivent se correspondre littéralement.

Les caractères spéciaux ont les significations suivantes :

*

Correspond à n'importe quelle chaîne, y compris la chaîne vide.

?

Correspond à n'importe quel caractère.

[...]

Correspond à l'un des caractères entre crochets. Une paire de caractères séparés par un signe "moins" indique un intervalle; qui correspond à n'importe quel caractère situé entre les deux bornes incluses. Si le premier caractère suivant le [ est un ! ou un ^ alors la correspondance se fait sur les caractères non-inclus. Un - peut être mis en correspondance en l'incluant en premier ou dernier caractère de l'ensemble. Un ] peut être mis en correspondance en l'incluant en premier caractère de l'ensemble.

Entre [ et ], on peut indiquer une classe de caractère en utilisant la syntaxe [:classe:], où classe est l'une des classes suivantes, définies dans le standard POSIX.2 :

alnum alpha ascii blank cntrl digit graph lower print punct space upper xdigit
Une classe correspond à un caractère quelconque qui s'y trouve.

Entre [ et ], on peut indiquer une classe d'équivalence en utilisant la syntaxe [=c=], qui correspond à n'importe quel caractère ayant le même ordre (comme indiqué dans la localisation en cours) que le caractère c.

Entre [ et ], la syntaxe [.symbole.] correspond au symbole de classement symbole.

Si l'option extglob du shell option est activée par la commande shopt plusieurs opérateurs de correspondance étendue sont reconnus. Dans la description suivante, une liste-motif est une liste d'un ou plusieurs motifs séparés par des |. Les motifs composés sont formés en utilisant un ou plusieurs sous-motifs comme suit :

?(liste-motif)

Correspond à zéro ou une occurrence des motifs indiqués

*(liste-motif)

Correspond à zéro ou plusieurs occurrences des motifs indiqués

+(liste-motif)

Correspond à une ou plusieurs occurrences des motifs indiqués

@(liste-motif)

Correspond à une occurrence exactement des motifs indiqués

!(liste-motif)

Correspond à tout sauf les motifs indiqués