Faculté Informatique & Communications
Cours d'informatique
EPFL

Mini-Référence :
Environnement UNIX - Fichiers / éditeurs Emacs et Geany

Introduction

Ce document a pour but de vous présenter le système UNIX ainsi que l'environnement de travail que vous utiliserez tout au long de cette année. Il n'a pas la prétention d'être exhaustif, mais plutôt de décrire les manipulations de base du système.


Contenu


Utiliser le gestionnaire de fichiers (file manager)


Langage de commande UNIX

Guide du système

M. Schaeffer est l'auteur d'un guide d'information sur le système UNIX ; bien que ce document soit spécifique à un environnement qui n'est pas celui des salles d'exercices, il contient néanmoins suffisamment d'informations d'ordre général (comme par exemple une description détaillée d'Emacs) pour être utile à ceux qui désire approfondir leur connaissances du système, sans pour autant envisager l'achat d'un ouvrage [voir à ce propos la bibliographie du document en question, ainsi que les références bibliographiques du cours].

La version pdf est disponible en cliquant ici.
Il existe également une version html, disponible ici.
Attention : ce texte est soumis à des droits d'auteur !

L'interface de commande (shell tcsh)

L'interface de commande, ou shell, permet d'entrer des commandes au clavier et de recevoir des messages en retour. Elle permet également de définir des variables d'environnement, qui contrôlent le comportement de votre environnement. Seul le shell tcsh sera présenté, car c'est l'un des plus pratiques et c'est également celui qui se trouve sur vos machines, mais il en existent d'autres comme par exemple bash ou zsh.

Variables d'environnement

Les variables d'environnement sont un moyen de personnaliser votre environnement de travail, ainsi que certains programmes. Par exemple, le shell tcsh utilise la variable

$prompt

qui définit l'allure du message d'invite (par exemple «vous@cosunrays12:/>»).

Les variables d'environnement commencent par un dollar ($) et, par convention, sont écrites en majuscules. Les instructions suivantes permettent de les manipuler :

setenv
  Affiche toutes les variables ainsi que leurs valeurs.
setenv TEST montestamoi
  Créer ou met à jour la variable $TEST avec la valeur «montestamoi»
echo $TEST
  Affiche la valeur de la variable $TEST.

Fichiers et répertoires

Sous UNIX, les fichiers sont organisés d'après une architecture en arborescence, similaire à celle utilisée par les systèmes DOS ou Windows. Les fichiers sont disposés en répertoires, eux-mêmes pouvant être subdivisés en sous-répertoires. Chaque étudiant possède un répertoire principal, ou «répertoire maison» (home directory, noté ~ ou $HOME). Seul le propriétaire pourra lire ou écrire dans ce répertoire. Ce dernier sera également accessible depuis n'importe quelle station des salles CO/20, CO/21 et CO/23.

Principales commandes

Nous allons décrire ici la syntaxe de quelques commandes UNIX importantes : pwd, cd, ls, mkdir, rm, rmdir, cp, mv, cat, chmod, man, quota.

pwd affichage du répertoire courant
Le chemin absolu (i.e. de la racine du système de fichiers à la position courante dans l'arborescence) est indiqué.

cd changement de répertoire
Permet de se déplacer dans l'arborescence des répertoires.
cd dir aller dans le répertoire dir. dir peut être un chemin absolu ou un chemin relatif.
cd .. revenir au répertoire précédent dans l'arborescence.
cd / revenir à la racine de l'arborescence.
cd (tout seul) revenir au répertoire «maison» (home directory) de l'utilisateur.

ls liste le contenu d'un répertoire
Permet de voir le contenu d'un répertoire de diverses manières. Beaucoup d'options sont disponibles, dont les suivantes :
ls -l liste les fichiers sous forme longue, c'est-à-dire avec la taille, les droits de lecture, écriture, exécution, etc...
ls -a liste tous les fichiers, y compris les fichiers cachés (commençant par un point).
ls -la liste tous les fichiers, sous forme longue.

mkdir création de répertoire
Permet de créer un répertoire.
mkdir dir crée le répertoire dir.  dir peut être un chemin absolu ou un chemin relatif ; mais il faut avoir le droit de créer le répertoire en question (droit d'écriture dans le répertoire père) !

rm destruction de fichier(s)

Permet de détruire un fichier. Les fichiers ainsi supprimés sont alors irrémédiablement perdus.
Pour pallier ce défaut, voir la FAQ Unix de J.-C. Chappelier à ce sujet.

La commande rmdir permet de détruire un répertoire préalablement vidé.

cp et mv copie et déplacement de fichiers
Ces deux commandes s'utilisent de façon similaire. cp permet de copier des fichiers d'un répertoire à l'autre, tandis que mv efface le fichier source après avoir effectué la copie (il déplace donc le fichier).
cp fichier1 fichier2 copie fichier1 vers fichier2.
cp fichier1 dir copie le même fichier dans le répertoire dir.
mv fichier1 dir déplace fichier1 dans le répertoire dir.
mv fichier1 fichier2 renomme fichier1 en fichier2.

cat concaténation de fichiers
Concatêne, sur la sortie standard, les fichiers passés en arguments (ou l'entrée standard si aucun argument n'est fourni).
cat fichier1 fichier2 > fichier3 crée le fichier3 comme concaténation (mise bout à bout) des fichiers fichier1 et fichier2.

chmod droits d'accès aux fichiers
Lorsqu'on liste un fichier monfichier avec la commande ls -l monfichier, on obtient une ligne de la forme suivante :
-rw-r--r--   1 prog     liaguest      135 Oct 27 13:56 monfichier
  • Le premier caractère indique le type du fichier (un "-" pour un fichier classique, et un "d" pour un répertoire).
  • Les neuf caractères suivants indiquent les droits d'accès dans l'ordre user, group, other (voir ci-dessous).
  • Le chiffre qui suit indique la profondeur de l'arborescence démarrant à l'entrée monfichier (1 pour un fichier, au moins 2 pour un répertoire).
  • Le code qui suit est le nom de l'utilisateur propriétaire du fichier
  • Le second code est le nom du groupe propriétaire du fichier
  • Ensuite viennent : la taille du fichier, les dates et heures de sa dernière modification, et son nom.

Les droits d'accès sont codés par neuf caractères en trois blocs de trois caractères. Le premier bloc correspond aux droits du propriètaire, le suivant aux droits du groupe, et le dernier aux droits des "autres" (utilisateurs qui ne font pas partie du groupe spécifié).

Dans chacun des blocs la présence de la lettre :

  • r indique un droit de lecture
  • w indique un droit d'écriture (modification)
  • x indique un droit d'exécution

Dans l'exemple ci-dessus, monfichier peut être lu par l'utilisateur "prog", les utilisateurs appartenant au groupe "liaguest", et les autres. Seul l'utilisateur "prog" peut le modifier. Personne ne peut l'exécuter.

chmod permet de changer ces droits (par exemple, pour empêcher les autres utilisateurs de pouvoir lire un fichier).
La syntaxe en est :

chmod [ugo][+-][rwx] nom_de_fichier

Le +/- ajoute/enlève les droits de lecture/écriture/exécution (r/w/x) pour le propriétaire/groupe/monde (u/g/o).

Exemples :
Après la commande chmod go-r monfichier, l'entrée monfichier listée plus haut apparaîtra ainsi :

-rw-------   1 prog     liaguest     135 Oct 27 13:57 monfichier

Maintenant, seul l'utilisateur "prog" peut alors lire (et modifier) le contenu du fichier monfichier.

Si l'on exécute ensuite chmod u-w monfichier, l'entrée devient :

-r--------   1 prog     liaguest     135 Oct 27 13:58 monfichier

Le fichier est protégé de toute modification, par n'importe qui. Il ne peut pas non plus être effacé.

Enfin, avec chmod ugo+rwx monfichier, l'entrée devient :

-rwxrwxrwx   1 prog     liaguest     135 Oct 27 13:59 monfichier

Tout le monde peut alors manipuler le fichier comme il l'entend, y compris essayer de le faire exécuter.

man manuel en ligne
Permet d'obtenir des informations sur des commandes (pages de «manuel» ou «manpage» dans le jargon). Ce manuel peut aussi être accessible par le biais de l'environnement de fenêtres via le bouton «Help» dans le menu principal (celui du chapeau rouge).
man man donne la manpage de la commande man (!)

quota -v place disponible
La commande "quota -v" vous permet de connaître l'espace disponible sur votre compte, ainsi que l'espace occupé par vos fichiers. Attention : s'il vous arrive de dépasser l'espace autorisé pour vos fichiers, vous ne pourrez plus rien écrire sur votre compte; il se peut même que vous ne puissiez plus vous connecter.
Récupération de données perdues : Il vous est possible de retouver des données indûment effacées dans myfiles (pour peu qu'elles aient eu le temps d'être archivées). Pour ce faire, il suffit d'aller dans le répertoire .ckpt (à l'endroit de l'arborescence que vous souhaitez). Ce répertoire contient des archivages périodiques du contenu du répertoire courant.

Attention ! Ce répertoire n'est pas automatiquement présent, mais chargé à la demande lorsque vous y accéder. Il est donc normal que vous ne le voyez pas. Pour y accéder :


Editeurs de textes

Le développement de programmes peut se faire au moyen d'un simple éditeur (dont trois variantes sont décrites ci-dessous), c'est-à-dire un programme servant à créer/éditer de simples fichiers textes.

C'est cette option que nous choisissons dans ce cours. Il est cependant assez courant en programmation plus avancée d'avoir recours à des outils plus sophistiqués, les « Environnement de développement intégrés » (IDE en anglais pour « Integrated Developement Environment ») offrant de nombreuses commodités pour la gestion de projets. Nous n'avons pas retenue cette dernière solution pour des raisons pédagogique (montrer « ce qu'il y a vraiment derrière »).

L'éditeur Emacs

Emacs est un éditeur offrant de très nombreuses fonctionnalités dépassant la simple édition de fichiers textes. Ce n'est pourtant que dans ce rôle que nous allons en parler ici.

Le but de ce mode d'emploi est de vous familiariser avec la puissance d'Emacs et de faciliter ainsi votre travail. Un conseil important : utiliser autant que nécessaire les commandes d'aide d'Emacs qui sont très complètes et suivre son didacticiel. La version d'Emacs qui sera décrite est la 22.2 (celle que vous avez). On trouvera un manuel complet de la dernière version sur le site http://www.gnu.org/software/emacs/.

Frames & Buffers

Emacs permet d'ouvrir plusieurs fichiers en même temps. Il est d'ailleurs recommandé de procéder ainsi (plusieurs fichiers dans le même emacs) plutôt que d'ouvrir un nouvel emacs pour chaque fichier.

Parmi les commodités de Emacs, notez la possibilité de visualiser plusieurs fichiers simultanément dans la même fenêtre (voir plus bas « Séparer une fenêtre en deux buffers »). Ceci peut s'avérer pratique pour comparer le contenu de fichiers.

Quelques raccourcis claviers importants

Voici quelques raccourcis clavier utiles à connaître. Il faut noter que ces combinaisons de touches sont rarement intuitives. La convention suivante est utilisée :

«Ctrl» (parfois aussi noté C-) signifie qu'il faut laisser enfoncée la touche «Control» pendant que l'on presse la suivante. Par exemple, Ctrl-c indique qu'il faut presser la touche Control et la laisser enfoncée en pressant c. La même convention a cours pour la touche Meta notée «M-», représentée sur le clavier par un losange (on peut aussi utiliser la touche Escape - «Esc»).

La liste exhaustive des raccourcis clavier peut être obtenue à l'aide de l'éditeur (menu Help - Commands & Keys - Bindings) ou par la commande Ctrl-h b.

Ctrl-x Ctrl-f Ouvrir un fichier
Ctrl-x Ctrl-s Sauvegarder le fichier courant
Ctrl-x Ctrl-c Quitter Emacs
Ctrl-x 5 2 Ouvrir une nouvelle fenêtre
Ctrl-x 5 f Ouvrir un fichier dans une nouvelle fenêtre
Ctrl-x 2 Sépare une fenêtre en deux buffers
Ctrl-x 1 Affiche un seul buffer dans la fenêtre
Ctrl-h t Lancer le didacticiel
Ctrl-x b Changer de buffer
Ctrl-s Rechercher une chaîne de caractères
M-g Rechercher un numéro de ligne
M-% Remplacer les occurrences d'une chaîne de caractères par une autre

Copier - Coller

Les opération d'édition de type "Couper - copier - coller" peuvent être effectuées à l'aide des commandes :
Ctrl-space Délimiter le début d'une sélection
Ctrl-w Supprimer la sélection courante
Ctrl-y Coller la dernière sélection

Vous pouvez aussi utiliser les commandes du menu "Edit", ainsi que les touches Cut (couper), Copy (copier) et Past (coller) sur la gauche du clavier.

Pour le copier-coller cependant, la solution la plus simple est d'utiliser uniquement la souris : sélectionnez la partie du texte qui vous intéresse en pressant le bouton gauche et en déplaçant la souris; relâchez le bouton gauche lorsque le texte sélectionné vous convient, puis placez le pointeur de la souris à l'endroit où vous voulez coller le texte, et cliquez avec le bouton du milieu. Cette technique a l'avantage de fonctionner avec quasiment tous les programmes pour Unix (vous pouvez l'utiliser par exemple pour copier du texte depuis Firefox (navigateur Internet) et le coller dans Emacs).

Configuration de Emacs

La configuration de l'éditeur Emacs est définie dans un fichier caché (en fait, un programme en langage Lisp) situé à la racine de votre arborescence personnelle. Ce fichier est nommé .emacs.

Au départ ce fichier n'existe pas chez vous car, a priori vous n'avez rien à changer et la configuration par défaut devrait convenir. Mais pour votre confort de compilation (dans le futur de ce cours), il pourrait être utile de créer ce fichier .emacs et d'y ajouter les lignes suivantes (utilisez le copier-coller à la souris, i.e. sélectionnez le texte ci-dessous avec le bouton gauche de la souris enfoncé, puis cliquez avec le bouton du milieu dans Emacs. Attention a bien sélectionner toutes les parenthèses finales ci-dessous) :
;; raccourci clavier pratique pour compiler
(define-key global-map "\C-cc" 'compile)

;; remap de la commande de compilation par defaut
(add-hook 'c++-mode-hook
   (lambda ()
     (unless (or (file-exists-p "makefile")
                 (file-exists-p "Makefile"))
       (set (make-local-variable 'compile-command)
            (concat "c++ \"" buffer-file-name
                    "\" -o \""
                    (file-name-sans-extension buffer-file-name)
                    "\""
             )
       )
     )
   )
)

Sauvegarde du .emacs sur les machines CO

En salles CO, seuls les fichiers stockés sur myfiles sont sauvegardés d'une session à l'autre. Si vous laissez votre fichier .emacs dans votre répertoire d'accueil (là où il doit en principe être), il sera donc perdu.

Si vous souhaitez la sauvegarder, voici comment faire :

Vous pouvez ensuite, après avoir sauvegardé les modifications ci-dessus et avoir quitté ce fichier .emacs (File -> Close) , changer le «look» de votre emacs, comme par exemple :

Fonctionnalités d'Emacs :

  • indentation C++ automatique (mode 'débutant' et 'pro') ;
  • commande de compilation (simple) définie automatiquement ;
  • colorisation contrastée (cf. image ci-contre) ;
  • affichage des n° de ligne, colonne et horloge ;
  • positionnement sur les erreurs de compilation par un click-centre ;
  • touche delete avec effacement vers l'avant ;
  • aide: F1 / sauvegarde: F2 / ouverture: F3
  • début\fin d'une zone: F4 / annulation dernière action: F5
  • couper:F6 / copier: F7 / coller: F8
  • etc.
Emacs screenshot

Pour que la mise en évidence syntaxique, l'auto-indentation et surtout l'adaptation automatique de la commande de compilation puissent se réaliser, il est obligatoire que vous spécifiez un nom de fichier avec une extension correcte, c'est-à-dire .cc ou .cpp pour un programme C++.


L'éditeur Geany

Geany est un éditeur de texte léger basé sur le toolkit GTK2. Geany excelle comme éditeur de code source du fait qu'il intègre les fonctionnalités de base d'un IDE (Integrated Development Environment).

Le but de ce mode d'emploi est de vous familiariser avec la puissance de cet éditeur et de faciliter ainsi votre travail. Un conseil important : utiliser autant que nécessaire les commandes d'aide. La version de Geany qui sera décrite est la 0.14 (celle que vous avez). On trouvera un manuel complet de la dernière version sur le site http://geany.uvena.de/.

Lancement de Geany

Pour démarrer Geany, taper la commande suivante depuis un terminal :

geany &

Attendre que la fenêtre apparaisse.
Vous pouvez également passer en paramètre un nom de fichier à éditer :

geany monfichier &

Frames & Buffers

Geany permet d'ouvrir plusieurs fichiers en même temps à l'aide d'onglets (buffers). Il est d'ailleurs recommandé de procéder ainsi (plusieurs fichiers dans le même Geany) plutôt que d'ouvrir un nouveau Geany pour chaque fichier.

Quelques raccourcis claviers importants

Voici quelques raccourcis clavier utiles à connaître. Il faut noter que ces combinaisons de touches sont intuitives. La convention suivante est utilisée :

«Ctrl» (parfois aussi noté C-) signifie qu'il faut laisser enfoncée la touche «Control» pendant que l'on presse la suivante. Par exemple, Ctrl-c indique qu'il faut presser la touche Control et la laisser enfoncée en pressant c. La même convention a cours pour la touche Meta notée «M-», représentée sur le clavier par un losange (on peut aussi utiliser la touche Escape - «Esc»).

La liste exhaustive des raccourcis clavier peut être obtenue à cette adresse: http://geany.uvena.de/manual/0.14/index.html#configurable-keybindings our directement depuis Geany via le menu «Help» / «Keyboard Shortcuts».

Ctrl-o Ouvrir un fichier
Ctrl-s Sauvegarder le fichier courant
Ctrl-q Quitter Geany
Ctrl-PgDn Passer au buffer suivant
Ctrl-PgUp Passer au buffer précédent
Ctrl-w Fermer le buffer courant
Ctrl-f Rechercher une chaîne de caractères
Ctrl-l Rechercher un numéro de ligne
Ctrl-h Remplacer les occurrences d'une chaîne de caractères par une autre

Copier - Coller

Les opération d'édition de type "Couper - copier - coller" peuvent être effectuées à l'aide des commandes :
Ctrl-x Couper la sélection courante
Ctrl-c Copier la sélection courante
Ctrl-v Coller la dernière sélection

Vous pouvez aussi utiliser les commandes du menu "Edit", ainsi que les touches Cut (couper), Copy (copier) et Past (coller) sur la gauche du clavier.

Pour le copier-coller cependant, la solution la plus simple est d'utiliser uniquement la souris : sélectionnez la partie du texte qui vous intéresse en pressant le bouton gauche et en déplaçant la souris; relâchez le bouton gauche lorsque le texte sélectionné vous convient, puis placez le pointeur de la souris à l'endroit où vous voulez coller le texte, et cliquez avec le bouton du milieu. Cette technique a l'avantage de fonctionner avec quasiment tous les programmes pour Unix (vous pouvez l'utiliser par exemple pour copier du texte depuis Firefox (navigateur Internet) et le coller dans Geany).

Configuration de Geany

La configuration de l'éditeur Geany est définie de manière globale. La seule configuration spécifique qui vous sera demandée dans ce cours est celle permettant à Geany de compiler en mode C++11 :

Cette configuration ne doit évidemment se faire qu'une fois au début du cours et non pas à chaque utilisation de Geany.
.

En salles CO, il faudra systématiquement archiver ce fichier dans myfiles pour pouvoir le retrouver lors de la prochaine session.
Fonctionnalités de Geany :
  • indentation C++ automatique ;
  • commande de compilation (simple) définie automatiquement ;
  • colorisation contrastée (cf. image ci-contre) ;
  • affichage des n° de ligne ;
  • positionnement sur les erreurs de compilation par un click ;
  • etc.
Geany screenshot

Pour que la mise en évidence syntaxique, l'auto-indentation et surtout l'adaptation automatique de la commande de compilation puissent se réaliser, il est obligatoire que vous spécifiez un nom de fichier avec une extension correcte, c'est-à-dire .cc ou .cpp pour un programme C++.

.
Dernière mise à jour : 2014/02/14 06:58:07   (1.30)