Faculté Informatique & Communications Cours d'informatique |
|
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.
Note importante : les fichiers créés sur le disque local de la machine virtuelles (i.e. hors myfiles) sont effacés (= perdus !) en fin de connexion. Il est donc impératif que vous stockiez sous myfiles tous les fichiers/répertoires que vous souhaitez conserver.
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, 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.
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. |
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.
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. | |||||||||
|
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 : | |||||||
|
mkdir | création de répertoire | ||
Permet de créer un répertoire. | |||
|
rm | destruction de fichier(s) |
Permet de détruire un fichier. Les fichiers ainsi supprimés sont alors
irrémédiablement perdus.
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). | |||||||||
|
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
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 :
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).
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 :
-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. |
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 .ckpt (ou autre, cp, etc..)
soit depuis le gestionnaire fichier en tapant Ctrl-L et ajoutant .ckpt (puis 'Entrée') à la fin de la «Location».
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 »).
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.
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.
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 |
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).
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) "\"" ) ) ) ) )
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 :
mv .emacs .emacs.d myfiles/epfl_roaming/icit/inco
ln -s $HOME/myfiles/epfl_roaming/icit/inco/.emacs.d $HOME ln -s $HOME/myfiles/epfl_roaming/icit/inco/.emacs $HOMENote : il se peut que le fichier .emacs n'existe pas encore (il n'existe pas au départ). Dans ce cas il suffit d'en créer un vide avec
touch myfiles/epfl_roaming/icit/inco/.emacspuis de refaire le lien symbolique comme ci-dessus si cela n'a pas fonctionné (mais normalement le lien est fait, même si le fichier n'existe pas... c'est juste un «lien mort»).
export SAVEPATH="$HOME/myfiles/epfl_roaming/icit/inco" SAVEDFILES=".emacs .emacs.d" for name in $SAVEDFILES; do from="$SAVEPATH/$name" if [ -e "$from" ]; then ln -s "$from" "$HOME" fi doneà la fin de votre fichier .profile (puis sauvegardez le).
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 :
mettre la barre de défilement à droite :
changer les couleurs («color theme») :
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.
|
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++.
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/.
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 &
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.
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 |
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).
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 :
-std=c++11
après g++
dans les deux lignes Compile et Build :g++ -std=c++11 -Wall ...
Fonctionnalités de Geany :
|
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++.
.