Faculté Informatique & Communications
Introduction à la Programmation Objet
J. Sam
EPFL
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.


Utiliser le gestionnaire de fichiers (file manager)

  • Pour ouvrir le gestionnaire de fichiers, cliquez avec le bouton «Home Folder» dans le menu «Places» dans la barre en haut.

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é en guise d'exemple, mais il en existe d'autres comme par exemple bash ou zsh. Les commandes présentées pour tcsh ont un équivalent dans les autres shell.s Une rapide recherche sur internet vous permettra de trouver aisément les variantes.

Pour connaître le shell avec lequel vous êtes tapez ceci dans le terminal:

echo $0
Si cette commande affiche autre chose de tcsh, vous pouvez passez à ce dernier shell en tapant la commande
tcsh
sur les machines des salles de TP (retournez à votre shell habituel par la commande exit).

Variable 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@icvdi.epfl.ch:/>»).

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éé 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. Le répertoire dans lequel on se trouve en se connectant sur son compte est le répertoire principal, ou «répertoire maison» (home directory, noté ~ ou $HOME).

Commandes principales

Nous allons décrire ici la syntaxe de quelques commandes UNIX importantes : pwd, cd, ls, mkdir, rm, rmdir, cp, mv, 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éér le répetoire en question (droit d'écriture dans le répetoire père) !

rm destruction de fichier(s)

Permet de détruire un fichier. Les fichiers ainsi supprimés sont alors irrémédiablement perdus s'ils n'ont pas été archivés.
Pour pallier ce défaut, vous pouvez préférer la command trash qui, au lieu de détruire le fichier le met dans la poubelle (ceci dit, depuis que sur nos machines seul myfiles est archivé, votre poubelle sera perdue lors de votre déconnexion :-().

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.

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.

Note : cette commande chmod ne fonctionne pas sous myfiles (en tout cas en 2016); si vous voulez la tester, il faut aller ailleurs que sous myfiles, par exemple à la racine de votre répertoire personnel en faisant tout simplement : cd.

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 propié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 command 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 (machines EPFL) : 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 .snapshot (à 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 :

  • soit par la ligne de commande avec par exemple un cd .snapshot (ou autre, cp, etc..)

  • soit depuis le gestionnaire fichier en tapant Ctrl-L et ajoutant .ckpt (puis 'Entrée') à la fin de la «Location».


Editeurs de textes

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

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/.

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.

  • Pour ouvrir un nouveau fichier dans la même fenêtre d'édition, allez dans le menu File puis Open In New Window. Une boîte de dialogue vous invitant à choisir le fichier à ouvrir apparaîtra.

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) :
;; remap de la commande de compilation
(add-hook 'java-mode-hook
	  '(lambda () 
	     ;; Indentation de 2 espaces au lieu de 4:
	     (setq c-basic-offset 2)
             ;; Le parenthèse ou l'accolade correspondant(e) 
	     ;; clignotera 
             (paren-set-mode 'blink-paren)
	     ;; Commande de compilation: 
	     (make-local-variable 'compile-command)
	     (setq compile-command (concat "javac " buffer-file-name))
             ;; Enclenchement des couleurs:
 	     (turn-on-font-lock)
           ))   
En salles CO, il faudra systématiquement archiver ce fichier dans myfiles pour pouvoir le retrouver lors de la prochaine session.

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 :

  • Supprimer l'écran de démarrage :

    1. Allez dans Option -> Customize Emacs -> Top-level Customization Group
    2. Cliquez sur le Go to Group qui suit Environement
    3. Cliquez sur le Go to Group qui suit Initialization
    4. Cliquez sur le bouton Toggle qui suit Inhibit Startup Screen
    5. Cliquez sur le bouton «State» juste en dessous, et choisissez «Save for Future Sessions».
  • mettre la barre de défilement à droite :

    1. Allez dans Option -> Customize Emacs -> Top-level Customization Group
    2. Cliquez sur le Go to Group qui suit Environement
    3. Cliquez sur le Go to Group qui suit Frames
    4. Cliquez sur le bouton Value Menu qui suit Scroll Bar Mode et choisissez «right»
    5. Cliquez sur le bouton «State» juste en dessous, et choisissez «Save for Future Sessions».
  • changer les couleurs («color theme») :

    1. Allez dans Option -> Customize Emacs -> Specific Group...
    2. Tapez «color-theme» (ou plus rapidement, en utilisant la completion, «colo» puis la touche TAB). Tapez ensuite la touche ENTRÉE.
    3. Cliquez sur le bouton Show Value qui suit Color Theme Selection (première entrée) et choisissez votre thème (par exemple «Dark Blue 2») en cliquant sur le début de la ligne («( )»)
    4. Cliquez soit sur le bouton «State» tout en bas de la liste, et choisissez «Save for Future Sessions», ou alors cliquez directement sur le bouton «Save for Future Sessions» en haut de la page (on dit «en haut du buffer»)

    Pour choisir votre thème de couleurs avant de le sauvegarder définitivement, vous pouvez utilisez «Color Themes» tout en bas du menu «Tools» (dans la barre du haut). En cliquant avec le bouton du milieu de la souris (= roulette) sur un nom de thème vous voyez de suite à quoi il ressemble. Effectuez ensuite la manipulation ci-dessus pour le sauvegarder pour les prochaines sessions.

Fonctionnalités d'Emacs :

  • indentation Java automatique ;
  • 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 .java pour un programme Java (ou .cc/.cpp si d'aventure vous vous mettiez à 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. Aucune configuration n'est nécessaire de votre part. Cependant, si vous désirez ajouter vos paramètres personnels, il vous suffit d'éditer le fichier suivant: ~/.geany/geany.conf.

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 Java 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 .java pour un programme Java.


Page gérée par J. Sam