Initiation à Unix ; L'environnement de travail à l'Ensimag
À propos de ce document
Intervenants Rentrée sept. 2024: Intervenants 2024/2025: Olivier Alphand, Danilo Carastan dos Santos, Grégory Mounié, Lucie Muller, Pierre Neyron, Frédéric Pétrot, Pierre Ravenelle.
La version PDF
Il existe aussi une version de ce document dans le format pdf pour l'impression ou la lecture hors-ligne.
Navigation dans la version HTML
Cette version est optimisée pour une lecture à l'écran, et quelques fonctionnalités devraient vous aider à vous retrouver dans le document : sur les écrans suffisamment larges, la table des matières s'affiche à gauche de l'écran. La section courante est mise en évidence, et les sections parcourues depuis que vous avez lancé votre navigateur apparaissent avec une couleur différente. Pour que votre navigateur se souvienne des sections visitées d'une fois sur l'autre, cliquez sur les liens dans la table des matières : les liens visités de cette manière changent de couleur.
Taille du texte
Vous pouvez agrandir les caractères affichés en gardant appuyée la touche « Ctrl » et en tournant la molette de la souris.
1. Introduction
1.1. Bienvenue
Tout d'abord :
Bonjour, et bienvenue à l'Ensimag !
1.2. Au sujet du stage
Le stage que vous suivez ici a pour but de vous familiariser avec l'environnement de travail à l'Ensimag.
Cette brochure offre un certain nombre d'explications et des suggestions de manipulations. Nous vous demandons de lire la brochure et de réaliser les manipulations. Si vous ne réussissez pas ou si vous ne comprenez pas quelque chose, ne passez pas outre, demandez de l'aide à la personne qui vous encadre (en direct, ou bien par e-mail en dehors des séances si besoin). À la fin de ce stage, vous saurez vous connecter à un ordinateur via le réseau, créer et gérer des fichiers, créer et exécuter des programmes.
Ce document se veut d'abord pédagogique. Il fait donc peu d'hypothèses sur vos connaissances préalables de l'informatique ou d'Unix. Certaines parties peuvent sembler presque triviales si vous savez déjà vous servir d'un clavier et d'une souris. Néanmoins le but étant aussi d'attiser votre curiosité, chaque partie contient des aspects plus avancés.
1.3. Wiki des Bugbusters
En parallèle avec cette brochure papier, un Wiki est a votre disposition : Bubu Wiki. Il contient des informations un peu plus techniques que ce document, et il devrait contenir les réponses aux questions que vous vous poserez pendant votre scolarité à l'Ensimag.
Vous trouverez sa page d'accueil à l'adresse suivante :
Vous devrez vous identifiez.
Nous vous invitons en particulier à lire la partie Ensimag (« ensimag », ou « Foire Aux Questions » dans la langue de Molière), accessible dans la barre latérale du Wiki.
D'une manière générale, vous trouverez aussi beaucoup d'informations sur l'intranet de l'école, comme le calendrier de l'année (vacances universitaires, des dates des examens, dates des périodes de stages) :
1.4. Jeu de piste
En plus des exercices proposés dans ce document, vos enseignants et enseignantes vous ont préparé un jeu de piste à travers les systèmes informatiques de l'école. La première étape du jeu de piste se trouve sur la page du « Stage Unix de Rentrée ». Cette étape donne les instructions pour arriver à la seconde étape, qui donne les instructions pour la troisième, et ainsi de suite. Au fur et à mesure que vous avancerez dans ce document, vous devriez pouvoir avancer dans les étapes du jeu de piste. Certaines questions sont difficiles, mais toutes sont réalisables avec un peu de persévérance et l'aide de vos enseignants. Pour vous guider dans votre progression, vous trouverez dans ce document des remarques vous disant jusqu'où vous êtes censés être arrivés, comme ceci :
Pour l'instant, vous n'avez pas encore commencé, c'est juste un exemple !
1.5. Examen de TP
Pendant vos partiels de mi-semestre, un examen de TP permettra de vérifier que vous avez assimilé les bases suite à ce stage de rentrée. L'examen est constitué d'une séries de questions fortement inspirées du jeu de piste. Pour chaque question, une manipulation sur machine (en général en ligne de commande) vous permettra d'obtenir la réponse à cette question. L'examen comportera beaucoup de questions, chacune étant relativement simple si vous avez terminé et compris le jeu de piste, et lu ce document en entier.
1.6. Notations utilisées dans ce document
Quand on parle d'un langage, on se pose le problème de déterminer ce qui est langage et ce qui est méta-langage. En d'autres termes, quand on dit : écrivez votre nom, faut-il écrire « votre nom » ou faut-il écrire « Pierre Durand » ? Nous lèverons cette ambiguïté à l'aide des notations suivantes :
- ce qui est écrit avec une fonte à largeur constante
comme ceci
fait partie du langage ; - ce qui est écrit en italique comme ceci est du méta-langage.
Quand on dit : taper Entrée, cela ne signifie pas taper E,n,t,r,é,e
mais taper sur la touche marquée Entrée (Elle sera notée
dans la suite). Quand on dit : taper
rm
nom-de-fichier, rm
doit
être tapé tel quel, mais nom-de-fichier doit être remplacé par un
nom de votre choix.
Le document est ponctué par des remarques, des petites manipulations à effectuer, des avertissements sur les points les plus importants. Les notations suivantes sont utilisées.
Exemple de concepts fondamentaux à retenir
Comprendre tous ces points est strictement indispensables pour comprendre le monde informatique dans lequel vous évoluer. Ils sont rédigés de manière provocatrice pour vous aider à les mémoriser. Heureusement, vous n'avez pas à les apprendre par cœur immédiatement. Peut-être.
Les remarques finales ont pour but de nuancer, ou contredire, des opinions un peu hatives.
Exemple de remarque pour utilisateurs avancés
Ces remarques présentent quelques détails et subtilités, des références historiques, des options supplémentaires, etc. Elles ne sont pas strictement indispensables. Les débutants peuvent passer dessus rapidement.
Exemple d'exercice
Voici un exemple d'exercice. Ces exercices sont des petites manipulations que vous pouvez faire au fur et à mesure de votre lecture.
Exemple de point délicat
Voici un exemple de point délicat à lire avec beaucoup d'attention.Voici un exemple d'une longue commande, à taper dans un terminal et sa sortie (la dernière ligne).
you@ensipc$ python3 -c "import pwd; print('Bienvenue ' + str(pwd.getpwnam('$USER').pw_gecos).split(',')[0])" Bienvenue Grégory Mounié
Le symbole dollar ($) termine le prompt du terminal. Ce qui est avant n'est pas à taper. Le terminal sera survolé à la section 2.3.5, et discuté en profondeur à la section 4.2.
Enfin ce document contient quelques images de personnages de l'histoire de l'informatique. Mais pour cet exemple, nous avons choisi Jean Kuntzmann, le fondateur du laboratoire de calcul de Grenoble en 1951, puis en 1957 de la section spéciale d'Ingénieurs Mathématiciens de l'Institut Polytechnique de Grenoble, qui deviendra l'Ensimag. C'est par son impulsion que Grenoble a été un des berceaux de l'informatique mondiale.
2. Premiers contacts avec l'environnement
Tous vos processus et vos fichiers naissent et demeurent libres et égaux avec vos droits
Vous avez une identité numérique. Elle est héritée par chaque processus et chaque fichier que vous créez. Les manipulations (lire, écrire, communiquer) sont autorisés, ou pas, en fonction de cette identité, par exemple, pour empêcher les processus d'un autre utilisateur de modifier vos fichiers.
L'unicité de cette identité est un mirage. Cette unicité est organisée, ou pas, à plusieurs niveaux. Elle dépend du domaine d'authentification (votre compte sur un réseau de machines), de la machine (votre compte sur la machine), du système d'exploitation (sa configuration) et des contextes d'isolation au sein du système exécutant vos processus (les conteneurs).
2.1. La connexion à un ordinateur
Le but de ce chapitre est de faire connaissance avec les PC GNU/Linux et d'apprendre la procédure de connexion à un ordinateur.
2.1.1. Démarrage d'un PC
Première chose à faire, bien sûr : allumer la machine ! Les PC de l'école peuvent exécuter plusieurs systèmes d'exploitations, c'est à l'utilisateur de choisir lequel il veut utiliser au démarrage. Après quelques secondes, un menu s'affiche, sélectionnez (avec les flèches haut/bas du clavier) Linux Ubuntu.
2.1.2. La procédure de login
La machine choisie vous invite à renseigner deux champs : login
et
password
. Le login est un nom qui vous identifie ; on choisit en
général le nom de famille, dans votre cas suivi de l'initiale du
prénom. Il fait en général moins de 8 caractères, pour des raisons
pratiques. Le password est un mot de passe, qui contribue à garantir
que vous serez seul à pouvoir accéder à vos données. Pour la première
connexion, on vous indique votre login (définitif) et un password
provisoire.
Procédure de login
Un identifiant (login) et un mot de passe ont dû
vous être distribués. Entrez-les et validez avec la touche
. Les majuscules et les minuscules sont
différenciées. Vous n'aurez aucun mal à savoir si vous avez réussi
ou pas. En cas d'échec, vous avez pu vous tromper dans le login,
dans le password ou dans les deux. Essayez encore.
Pour éviter qu'un individu mal intentionné puisse connaître votre mot de passe ou même le nombre de lettres qui le constitue en regardant votre écran, il est fréquent sous Unix que rien ne s'affiche pendant que vous entrez votre mot de passe. Si c'est le cas, pas de panique : c'est normal ! La solution de l'exercice est à la fin du guide.
2.1.3. La session
Après la procédure de login, une session s'ouvre et vous avez maintenant accès à vos données, à votre espace de travail et à vos préférences (profil). Cette session vous est personnelle : elle n'interfère pas avec celles des autres utilisateurs connectés.
2.1.4. La procédure de Verrouillage
Quand vous laissez votre poste de travail pour une courte pause, il est indispensable que votre session soit verrouillée afin d'éviter qu'elle soit utilisée par un tiers. Attention toutefois de ne pas abuser du verrouillage de session, utilisez-le uniquement pour de courtes pauses et si vous êtes sûr de revenir sur le poste dans un délai relativement court. Sinon, déconnectez-vous pour libérer votre machine.
Verrouillage
Votre session étant ouverte, verrouillez votre session (menu en haut à
droite de l'écran).
Une fois votre session verrouillée, appuyez sur une touche.
Vous devez alors vous identifier pour retrouver votre environnement de
travail tel que vous l'avez laissé.
2.1.5. La procédure de logout
Selon toute logique, une session devrait se terminer lorsque l'utilisateur arrête de se servir du système. Pour cela, vous devez demander explicitement l'arrêt de la session (telle une déconnexion).
Oublier de se déconnecter n'est pas sans poser des problèmes, notamment en matière de sécurité. Que peut-il se passer si vous quittez votre place en laissant une connexion active ? Une personne arrivant après vous aurait la possibilité d'accès à vos données ; les machines ne feront pas la distinction ! Elle pourrait aussi agir en votre nom.
Gestion de votre identité
Prenez donc l'habitude de ne partir qu'après avoir terminé proprement votre session (ou éventuellement verrouillé votre écran), et conservez votre mot de passe aussi secret que votre code de carte bancaire ! Nous verrons un peu plus loin comment choisir un mot de passe fiable.
Avant de vous déconnecter, prenez l'habitude de fermer proprement toutes vos applications : cela évitera de laisser des applications tourner et consommer des ressources sur l'ordinateur pendant que vous n'y êtes pas !
Pour terminer votre session, cliquez sur le menu en haut à
droite de l'écran, puis sur l'icône
dans ce menu et
choisissez d'éteindre (Power Off) la machine (à
choisir de préférence). Il est également possible de terminer la
session sans éteindre la machine (pour qu'un autre utilisateur puisse
l'utiliser juste après vous) : cliquez sur votre nom dans le menu
puis choisissez (Log Out ..., ou Se
Déconnecter).
Logout
Après avoir fermé les éventuelles fenêtres ouvertes, déconnectez-vous (pour ne pas perdre de temps, terminez simplement votre session sans éteindre/redémarrer la machine).
Reconnectez-vous pour continuer les manipulations. La solution de l'exercice est à la fin du guide.
2.2. L'environnement graphique
Quand vous vous identifiez sur une machine Unix (ou vous connectez à un serveur depuis un terminal), le premier programme qui démarre est un environnement graphique (aussi nommé gestionnaire de fenêtres, window manager in english).
Première remarque : il est sans doute différent de celui dont vous avez l'habitude. La majorité des ordinateurs grand-public fonctionnent avec le système d'exploitation Microsoft Windows, ou bien Mac OS X. L'ordinateur que vous utilisez maintenant fonctionne avec Unix, ou plus précisément GNU/Linux.
Unix
Le mot Unix
dans ce document est utilisé de manière générique pour
désigner les systèmes d'exploitation proposant les mêmes interfaces
de manipulations (héritées du système Unix d'origine).
Parmi les systèmes Unix les plus courants, citons GNU/Linux, Mac OS X, Solaris, FreeBSD, AIX.
Généralement, un environnement graphique sous Unix affiche des menus permettant de démarrer d'autres programmes. Il peut offrir des fonctions plus ou moins avancées, comme l'affichage de l'heure, de la météo, un calendrier, un contrôle des paramètres réseaux ou du son…
Il existe de très nombreux environnements graphiques pour les systèmes Unix,
dont KDE
, GNOME
, XFCE
, LXDE
, IceWm
, WindowMaker
,
Fvwm
, TWM
, Enlightenment
…
2.2.1. L'environnement graphique : Gnome 3 Classic
L'environnement utilisé par défaut sur les PC est Gnome 3 Classic.
Cela ressemble à Windows ?
En fait, ils ressemblent tous plus ou moins à leur ancêtre, le
projet Alto, conçu au Xerox PARC, en 1973. Xerox n'a pas su
l'exploiter commercialement. Steve Jobs, le fondateur d'Apple, après
avoir visité le PARC en 1979, a lancé le Macintosh en 1984. Mais
X11 permet aussi de s'éloigner du modèle classique de fenêtre à
bandeaux et icônes, avec par exemple les familles de gestionnaires à
pavage comme ion3
ou awesome
.
En haut de l'écran se trouve une barre de menus. Les menus permettant de lancer des applications se trouvent à gauche (« Applications »). Ceux permettant de configurer l'ordinateur, le clavier et de fermer la session se trouvent sur la droite.
Lancer LibreOffice
En utilisant la barre de menu de Gnome
, lancez l'application
LibreOffice Writer
. Pour cela, cliquez sur Applications pour
dérouler le menu.
En mettant la souris dans le coin supérieur gauche, vous basculez vers la partie Activités qui vous permet également de passer d'une fenêtre à l'autre rapidement, de garder vos applications préférées dans les boutons de gauches et de les grouper en plusieurs Bureaux Virtuels à droite.
2.2.2. Quelques exercices avec le clavier Azerty
L'application LibreOffice Writer
que nous venons de lancer est un
traitement de texte. Nous allons en profiter pour voir quelques
subtilités du clavier Azerty, utiles surtout pour les étudiantes et
étudiants non-francophones qui ne l'auraient jamais utilisé.
Le clavier Azerty permet de saisir des caractères accentués. La
plupart sont disponibles directement sur le clavier (par exemple,
« é
» accessible sur la touche 2), mais il faut parfois utiliser
des touches mortes, comme ^ : pour saisir un « ê
»,
appuyez successivement sur ^ et sur e. Pour saisir le
caractère « ^
» lui-même, appuyez sur ^ puis sur Espace.
Les caractères les moins fréquents en Français (mais malheureusement
assez présents en informatique) sont accessibles via la touche AltGr, à droite de la touche Espace, et sont en général
dessinés en bas à droite des touches (par exemple, « @
»
est accessible via AltGr + 0 et le
caractère « ^
» s'obtient également via AltGr +
9).
Le clavier (exercice difficile pour œ, æ, Œ et Æ)
Essayez d'écrire les caractères accentués français « àéèïôùëâœæÉÈÛŒÆ
» dans la fenêtre de LibreOffice
, puis « #@|[]{}()&!*+-/<>.;?
»
qui sont omniprésents dans les langages de programmation. Pour vous y
aider, vous devez utiliser les touches AltGr et
Maj, représentée par une flèche dirigée vers le haut, à
droite et à gauche du clavier.
2.3. Illustration de quelques différences entre Unix et Windows
Les points suivants montrent quelques fonctionnalités utiles, répandues et assez originales des gestionnaires de fenêtres Unix.
2.3.1. La souris a trois boutons !
Votre souris possède au moins trois boutons :
- celui de gauche, le bouton principal, utilisé pour la plupart des actions ;
- celui de droite, qui permet d'afficher un menu contextuel, c'est-à-dire que le menu est fonction de ce qu'il y a en dessous du pointeur de la souris ;
- celui du milieu (ou la molette), qui sert au copier-coller dans les applications. La molette de votre souris est un bouton que l'on peut appuyer normalement sans faire tourner la molette. Pour les souris à deux boutons, on peut en général appuyer sur les deux boutons en même temps pour simuler le troisième bouton.
Le bandeau des fenêtres et les trois boutons !
Essayez les différentes actions possibles en cliquant sur chacun des trois boutons sur le bandeau d'une fenêtre, affichant son titre, en haut. Essayez aussi les doubles-clics et de maintenir un clic droit sur le bandeau.
Faire tourner la molette d'une souris est identique à appuyer sur des boutons (les boutons 4 et 5). Comme pour les autres boutons, il est donc possible de configurer des interactions du gestionnaire de fenêtre répondant à la molette.
2.3.2. Des astuces qui changent la vie
2.3.2.1. Le copier-coller juste avec la souris (bouton du milieu)
Ce point est sans doutes l'un de ceux qui vous manqueront le plus dans les autres environnements.
La plupart des applications Unix graphiques acceptent un copier-coller « à la Windows » (en fait, à la IBM):
- sélectionner à la souris ce que l'on veut copier ;
- faire Ctrl + c, ou faire Copier dans le menu de l'application ;
- mettre la souris à l'endroit où l'on souhaite coller ;
- cliquer avec le bouton gauche de la souris pour mettre le curseur de l'application au bon endroit ;
- faire Ctrl + v, ou faire Coller dans le menu de l'application.
Ces trois raccourcis ont été définis par Apple en 1984.
Il existe une norme alternative, nommée CUA, définie par IBM en 1987 qui fonctionne aussi bien sous Linux que sous Windows (cf https://en.wikipedia.org/wiki/IBM_Common_User_Access): Maj + Suppr (couper), Ctrl + Inser (copier), Maj + Inser (coller).
La norme CUA a toujours une forte influence. Elle impose de nombreux autres comportements (définir un raccourci clavier pour toute action à la souris, Le menu Fichier en premier puis le menu Édition, en second, qui inclue le copier-coller, etc.) et nombreux autres raccourcis (F5 pour rafraîchir, etc.) que vous avez l'habitude d'utiliser partout.
Néanmoins, les terminaux et les shells Unix existaient plus de 15 ans avant. L'affichage graphique sous Unix est contemporain de celui de MacOS, 5 ans avant CUA. Ils ont donc leur propre culture, plus ancienne, ce qui explique les différences observables encore aujourd'hui.
Sous Unix, il y a plus simple et plus rapide !
- sélectionner à la souris ce que l'on veut copier ;
- mettre la souris à l'endroit où l'on veut coller ;
- cliquer avec le bouton du milieu de la souris.
Le schéma suivant explique les deux chemins possibles et le fait qu'il y a deux tampons mémorisant ce qui est à copier !
Le copier-coller à la souris
Lancez un navigateur (firefox ou chrome)(en utilisant le menu
« Activités » de Gnome
), et une fenêtre LibreOffice
si vous
n'en avez pas déjà une ouverte. Essayez de copier-coller depuis
votre navigateur vers LibreOffice
, en utilisant les deux méthodes.
2.3.2.2. Gestion des fenêtres, utilisation des touches Alt, Ctrl et Majuscule
Certaines touches ou combinaisons de touches permettent de modifier le comportement des interactions de la souris avec les applications ou le gestionnaire de fenêtres.
Déplacer et redimensionner les fenêtres avec Gnome
- Vous pouvez déplacer une fenêtre en maintenant enfoncée la touche Windows (à gauche de la barre espace), et en cliquant avec le bouton gauche n'importe où sur la fenêtre (pas uniquement sur le bandeau).
- Vous pouvez redimensionner une fenêtre en appuyant sur Windows et le bouton du milieu (ou le bouton droit, suivant les gestionnaires), sans avoir besoin d'attraper un coin !
- On peut maximiser une fenêtre en double-cliquant sur son bandeau, ou bien en faisant glisser ce bandeau vers le haut de l'écran.
- On peut obtenir une fenêtre qui couvre la moitié gauche (resp. droite) de l'écran en attrapant son bandeau à la souris et en le faisant glisser contre le bord gauche (resp. droit) de l'écran.
- On peut passer en arrière-plan une fenêtre avec un clic du milieu sur sa barre de titre.
Les touches Alt, Ctrl et AltGr sont appelées, en terme X11, des modificateurs. Verr num, les deux Alt, les deux Ctrl (quatre touches différentes, à droite et à gauche du clavier), Menu, Windows (la touche Super de son vrai nom) et Maj sont aussi des modificateurs qui peuvent être utilisés pour configurer des interactions.
2.3.3. Les options du clavier
Lorsque vous pressez une touche de votre clavier, celui-ci renvoie un code. Ce code correspond à la position physique de la touche. Le code n'est pas lié physiquement avec le dessin marqué sur la touche. La liaison est purement logicielle, dans la configuration de votre système. C'est pour cela qu'il est facile de reconfigurer son clavier, pour le mettre en QWERTY ou en BÉPO.
Il se révèle aussi très pratique d'ajouter des options qui améliorent la
vie à votre clavier, comme activer la
touche "Compose". En appuyant successivement sur
Compose (sans la garder appuyée) puis
o puis e, on obtient "œ". Plus
besoin de garder appuyée la touche Altgr et de
mémoriser des combinaisons compliquées pour faire des æ, des ß ou
des ø, y compris pour les crochets Compose ( (
, les accolades
Compose ( -
, les guillemets français Compose < <
, etc. ! Mais
cette touche n'existe pas physiquement sur les claviers de PC
standard, il faut donc lui affecter une autre touche physique, par
exemple Ctrl-droit (la touche "control" à droite de
votre barre d'espace)
Pour ceux et celles utilisant beaucoup les raccourcis claviers, une autre option classique, et pratique, est d'échanger la touche Verrouillage-Majuscule et la touche Ctrl-gauche.
Dans Ubuntu, avec l'environnement par défaut (Gnome 3), la configuration de Compose se trouve dans les Settings (en haut à droite), pour le clavier.
Pour d'autres configurations, gnome-tweaks
permet positionner
facilement certaines options avancées, dont celles concernant le
clavier. Celle de l'échange de Verrouillage-Majuscule
se trouve dans la section Keyboard & Mouse en cliquant sur
"Additional Layout Options", puis en cochant votre choix dans la
sous-section "Ctrl position".
Vous pouvez pré-tester cette configuration dans votre session sans modifier vos défauts en tapant la commande suivante:
setxkbmap -option 'ctrl:swapcaps,compose:rctrl'
2.3.4. Les bureaux virtuels
Les bureaux virtuels permettent de grouper les fenêtres et de pouvoir passer aisément d'un groupe à l'autre. Par exemple, il est possible d'utiliser un bureau pour lire son courriel et un autre bureau pour éditer le code d'un programme.
Les bureaux virtuels (Workspace)
Il est possible d'ouvrir les fenêtres dans différents bureaux
virtuels, accessible sous Gnome
à droite dans les Activités (tout à droite dans l'écran gérant les activités), ou avec les raccourcis claviers
Ctrl + Alt + ←
ou →. Le menu
contextuel obtenu par un
clic droit sur le bandeau permet de déplacer les fenêtres d'un
bureau à l'autre
Essayez d'ouvrir plusieurs fenêtres et de les mettre dans des bureaux différents.
L'environnement Gnome 3 ajoute automatiquement un bureau virtuel supplémentaire aux bureaux virtuels que vous utilisez.
2.3.5. Le terminal et le shell
Un des principes d'Unix consiste à avoir un outil (un programme) pour chaque tâche, et qui fasse cette tâche très bien.
Ces outils portent le nom de commandes.
Pour pouvoir utiliser ces commandes (les exécuter), il faut utiliser un programme particulier appelé interpréteur de commande (shell en anglais).
C'est une interface textuelle qui lit les commandes tapées au clavier, les interprète et lance leur exécution. Concrètement, c'est une petite fenêtre toute simple qui affiche un prompt (début de ligne non modifiable en face duquel vous tapez vos commandes) ainsi que ce que vous tapez. En dehors de ce guide, ou nous essayons de minimiser le jargon technique, l'interpréteur est le plus souvent appelé par son nom anglais shell.
L'exécution d'une commande se nomme un processus (process en anglais). L'interpréteur de commande permet de contrôler finement l'exécution des processus et de manipuler facilement les fichiers.
Commandes, Interpréteur de commandes, processus, fichiers et répertoires
Tous ces concepts sont fortement imbriqués les uns dans les autres. Une seule commande lance un programme composé de séquences de millions d'instructions élémentaires. Elles ne peuvent pas être refabriquées en un temps raisonnable à chaque fois que l'ordinateur est allumé. Donc, les programmes sont stockées de manière pérenne dans des fichiers. Pour exécuter une commande, l'interpréteur de commande, cherche un fichier ayant le nom de la commande (le premier mot de la commande) dans certains répertoires spécifiques, puis il fabrique le processus exécutant le programme et lui passe ses arguments (le reste des mots de la commande).
À l'inverse, un ordinateur stocke couramment des millions de fichiers. Il n'est pas raisonnable d'imaginer les gérer efficacement un par un. Ils sont donc manipulés en groupe par des commandes exécutées dans des processus.
Techniquement, ce qu'on appelle le terminal,
ou xterm
, est
la fenêtre qui gère l'affichage et la saisie de texte (prompt,
commandes, résultats des commandes exécutées…). L'interpréteur
de commande,
ou shell est l'application qui s'exécute à l'intérieur et
exécute vos ordres. Le même shell pourrait tourner sur une machine
entièrement en mode texte. En fait le terminal est un émulateur de
machine en mode texte, d'où son nom complet X Terminal Emulator.
Les habitués du système Windows confondent souvent le shell Unix et MS-DOS. Il n'en est rien, et le seul point commun entre les deux est le fait d'avoir une interface textuelle. Vous verrez que la ligne de commande sous Unix est en fait un outil très puissant. La plupart des utilisateurs d'Unix l'utilisent au quotidien. Au point que les versions contemporaines de Windows proposent un PowerShell qui se rapproche du shell Unix.
Les commandes de base seront discutées au chapitre 7.
Le shell exécute votre commande lorsque vous tapez sur .
Ouvrir une fenêtre avec un shell
Dans Gnome
, on peut lancer un terminal depuis l'écran
Activités. Le terminal se trouve dans les icônes de gauche
Favoris. L'icône permettant de lancer un shell
ressemble à un écran d'ordinateur avec une invite de commande (>
).
On peut ajouter une commande aux Favoris en cliquant avec le bouton droit sur l'icône.
On peut aussi lancer une commande par son nom. En tapant
Alt + F2, on obtient une petite
invite de commande dans lequel on peut taper gnome-terminal
.
Lancez un shell et tapez dans le terminal la commande cal
puis .
Vous pouvez maintenant fermer le shell. Notre
shell étant dans une fenêtre graphique, il est possible
de simplement fermer la fenêtre via la croix en haut à gauche. Une
méthode plus générale est de taper dans le terminal la commande exit
puis , ou bien encore plus rapide : taper
Ctrl + d.
Une autre solution pour obtenir un shell, consiste à ouvrir une
nouvelle session en mode texte. Sous GNU/Linux, on peut faire cela avec
Ctrl + Alt + F2 (ou F3, F4…), pour ouvrir des sessions textes sur
plusieurs terminaux virtuels en même temps (sur certains PC, ça ne
marche pas parce que le driver de la carte graphique ne sait pas
passer en mode texte, on obtient alors un écran noir). On peut ensuite revenir
à la session graphique avec Ctrl+Alt+F1 (ou F7, selon les
systèmes). Attention, on peut circuler d'un terminal virtuel à
l'autre, mais les sessions restent ouvertes. Si vous avez lancé une
session texte sur le terminal virtuel associé à Ctrl+Alt+F2, et
que vous êtes revenus en mode graphique, votre session texte est
encore ouverte et restera accessible même après avoir terminé la
session graphique (donc permettra potentiellement à un utilisateur
mal intentionné d'utiliser votre compte une fois que vous serez
parti de la machine). Pensez bien à terminer toutes vos sessions, avec
la commande exit
ou bien la séquence de touches Ctrl +
d.
Tous les programmes que vous avez lancés depuis l'interface graphique
sont également accessibles depuis ce terminal texte ; chaque bouton de
menu d'un environnement de bureau n'est en réalité rien de plus qu'un
lanceur d'une commande prédéfinie (l'icône sur laquelle vous venez
de cliquer exécute la commande gnome-terminal
ou xterm
).
Commande
Dans un terminal, tapez la commandefirefox
: elle ouvre un
navigateur web. Essayez maintenant lowriter
(ou oowriter
si ça
ne marche pas), vous devriez
reconnaître LibreOffice
que l'on a utilisé un peu plus haut.
Les processus gérant l'environnement
La plupart des environnements riches (KDE
, GNOME
, XFCE
…)
sont gérés par plusieurs processus indépendants mais coopérants. Il
est donc possible d'utiliser en même temps le gestionnaire de
fichiers et d'icônes de GNOME
(nautilus
), la barre des tâches
de XFCE
(xfce4-panel
) et le gestionnaire de fenêtre de KDE
(kwin
).
2.4. Règles élémentaires de sécurité
Un ordinateur est un outil de travail puissant, mais peut aussi permettre une utilisation malveillante, voire illégale ou criminelle dans des cas extrêmes. Un bon usage et une protection efficace de votre identité peuvent vous éviter de sérieux ennuis, car vous êtes pénalement responsables de votre utilisation des moyens informatiques.
2.4.1. Les risques
Votre compte informatique contient des données personnelles et vous offre un accès à Internet et à certaines ressources de calcul. Il sert aussi à vous identifier. Les attaques qu'une personne mal intentionnée peut mettre en œuvre à votre encontre peuvent prendre par exemple les formes suivantes :
- usurpation d'identité pour se livrer à des actes malveillants (transactions douteuses, piratage, e-mails injurieux, téléchargements illégaux…) dont vous seriez tenu responsable ;
- diffusion de virus (par e-mail notamment) ;
- fouille de vos fichiers ou mails personnels ;
- vol (copie) de votre travail (comptes-rendus, rapports, brouillons…) ;
- utilisation de vos ressources informatiques à votre insu ;
- attaques sur les serveurs de Grenoble-INP, dans une autre école, provoquant la décision d'extinction de tous les ordinateurs Grenoble-INP (absolument tous: salles de TP, serveurs web, administration, scolarité, etc.) pendant les deux mois du nettoyage (novembre 2022);
- …
Bien entendu, cette liste n'est pas exhaustive et vise seulement à vous sensibiliser à l'importance de la sécurité informatique. Ces attaques sont monnaie courante, et si les techniques de sécurisation informatiques sont de plus en plus perfectionnées, elles peuvent être ruinées par l'imprudence d'utilisateurs se faisant pirater leur compte.
Par ailleurs, mal protéger votre compte, c'est aussi potentiellement permettre à des individus extérieurs de s'introduire dans le réseau local de l'école, et potentiellement d'attaquer d'autres machines. La sécurité de l'ensemble des systèmes de l'Ensimag repose donc sur l'application des bonnes pratiques par chacun d'entre vous.
2.4.2. Un vrai mot de passe
Si un mot de passe vous a été attribué, il n'est certainement pas sûr, puisque vous n'avez même pas la garantie d'être le ou la seul(e) à le connaître. Il faut donc en changer.
Mais avant de choisir un nouveau mot de passe, il faut savoir ce qu'est un bon mot de passe. Ici, bon signifie robuste, comme dans « un bon cadenas ». Comme pour les cadenas, il y a toujours un moyen d'ouvrir sans avoir de clef. Si vous détenez des secrets d'État, ne les stockez pas sur votre compte Unix. Cela n'est pas seulement dû aux mots de passe ; beaucoup d'aspects du fonctionnement d'Unix le rendent « fragile » aux yeux de certains. Mais rassurez-vous, il reste néanmoins un système beaucoup plus sûr que les autres.
Un mot de passe sûr est un mot de passe difficile à deviner !
En effet, les logiciels de « cassage » de mot de passe procèdent par devinettes, en s'aidant de dictionnaires et d'ensemble de règles. Donc les noms propres et les noms communs sont de très mauvais mots de passe, quelle que soit leur origine. Le pire choix est d'utiliser son login comme mot de passe : c'est souvent le premier mot testé par les logiciels de cassage.
Parmi les erreurs à ne pas faire : choisir un mot de passe trop court. Un mot de passe de moins de 8 caractères peut être considéré d'office comme fragile. D'un autre côté, le service centralisé de mot de passe COPASS (http://copass-client.grenet.fr) impose une limite à 24 caractères.
Un bon mot de passe est un mot de passe d'au moins 8 caractères alpha-numérique (lettre et chiffre).
Il y a souvent des règles annexes.
Les règles locales (COPASS en septembre 2022) étaient:
Votre mot de passe doit suivre les règles de sécurité suivantes:
- 12 à 24 caractères (uniquement des lettres sans accent, des chiffres et des caractères spéciaux)
- 3 caractères identiques ne peuvent pas se suivre
- au moins une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial parmi !@#$%&*_-+=(){}<>/;:,.|?
Enfin, il faut que vous puissiez le mémoriser facilement.
Une stratégie possible pour concilier ces contraintes apparemment contradictoires est la suivante.
- Prendre comme base une phrase facile à mémoriser, et retenir les
initiales des mots de la phrase, après en avoir éliminé les mots
de liaison (le, de, un…) s'il y en a trop.
Imaginons un proustien qui choisit la phrase « Longtemps je me suis
couché de bonne heure », ça lui donne
ljmscdbh
. - Une autre possibilité est de choisir quatre mots indépendants au
hasard. Attention, les mots doivent bien être difficiles à deviner,
et indépendants (connaitre 3 mots ne doit pas aider à trouver le
quatrième). Par exemple, « Ensimag Informatique Mathématiques
Appliquées » serait un très mauvais choix. Un bon choix, s'il
n'était pas déjà connu, pourrait être
« correct cheval pile agrafe ». Ce qui
donne en remplaçant le i par un 1 et en mettant des majuscules aux
mots :
CorrectChevalP1leAgrafe
. - Introduire ensuite quelques variations permettant soit de compliquer encore, soit d'amener le mot de passe à au moins 8 caractères.
Exemple de variations faciles à mémoriser.
- Remplacer de par
2
, i par 1, o par 0, etc. - Utiliser des majuscules. Dans l'exemple précédent, je peux choisir
de mettre les initiales de l'auteur au début et de tronquer la fin,
ça donne
MPljmsc2
.
- Indépendamment des limitations grenobloises, il est déconseillé d'utiliser des caractères accentués (éàùèïœæÔÉÀÙԌƅ) parce que vous ne pourrez pas toujours les taper facilement pour faire un accès à distance (cf. chap 10) depuis un pays non francophone.
Pré-requis pour entrer un mot de passe au clavier
Vérifier que les deux touches Maj (cf. l'exercice de la section 2.2.2) et Verr num (pavé numérique) sont dans un état compatible avec les caractères qui vous intéressent.C'est une cause classique d'erreurs lors du changement de mot de passe, ou lors de leur utilisation. À tel point que les interfaces graphiques de login indiquent si Verrouillage-Majuscule est activé.
Changer de mot de passe
Maintenant que vous avez choisi un mot de passe sûr, il faut l'indiquer à la machine. La procédure pour changer de mot de passe est disponible à l'adresse https://copass-client.grenet.fr/
La commande pour changer de mot de passe sous Unix est en principe
passwd
, mais la
synchronisation de mots de passe entre les machines (PC, serveurs,
machines virtuelles, intranet, …) rend les choses plus complexes à l'ENSIMAG.
2.5. L'intranet de l'Ensimag
Vous connaissez sans doute déjà le site Web de l'Ensimag :
Mais l'Ensimag dispose aussi d'un grand nombre d'outils accessibles uniquement depuis l'école, ou bien via votre mot de passe depuis n'importe où sur Internet. Cet intranet se trouve à l'adresse :
Intranet
Ouvrez un navigateur web (Firefox
par exemple), et ouvrez la page de
l'intranet de l'école.
Parmi les outils que vous utiliserez régulièrement sur cet intranet figurent les suivants.
- Le calendrier annuel des formations
- pour obtenir les dates des vacances universitaires, des semaines d'examens, des débuts et fins de stage, des gros projets, etc.
- Gitlab :
- une plateforme de développement, qui sert à la diffusion de squelette de code et de support de cours
- Gitlab Pages :
- la plateforme web liée à gitlab qui sert à la diffusion des pages de ce cours, du wiki des bubu, de supports d'autres cours.
- Wiki des BugBusters :
- dont nous avons déjà parlé en section 1.3.
- Chamilo :
- une plateforme de e-learning, une fois connecté vous aurez accès à une page recensant toutes les matières de l'Ensimag, où vos enseignants et enseignantes mettront à disposition des supports de cours.
- Moodle :
- une autre plateforme de e-learning, inter-universitaire, moins utilisée à l'Ensimag.
- Zenith :
- des trombinoscopes des étudiants et étudiantes de l'école.
- ADE :
- l'application qui gère les emplois du temps.
- TEIDE :
- une application Ensimag de rendu des TP et projets.
Chamilo
Dans votre navigateur, accéder à Chamilo via l'intranet. Connectez-vous et retrouvez ce cours en naviguant dans les cours de l'école. Le cours se trouve dans « Tronc Commun », « 1ère année », « Introduction à l'algorithmique et à la programmation ».
Dans l'immédiat, nous allons nous intéresser au Bubu Wiki.
Les Bug Busters
Dans votre navigateur, ouvrez l'URL https://bugbusters.pages.ensimag.fr/wiki
Vous aurez besoin de vous authentifier.
Vous trouverez des sections et des liens du Wiki auxquelles ce document fait référence.
Si on parle de Bubu Wiki, « obtenir-linux/ssh/ », vous pouvez donc soit taper l'URL https://bugbusters.pages.ensimag.fr/wiki/obtenir-linux/ssh directement dans votre navigateur, soit aller sur la page principale de Bubu Wiki et utiliser le champ « recherche » en haut à gauche de chaque page.
Emacs
(et Python)
Dans la page web de ce cours, ouvrez la section « Éditeurs » à la rubrique Emacs (la deuxième moitié parle de Python) (nous la lirons un peu plus tard).
2.6. Un problème ?
En cas de problème avec les machines de l'école uniquement vous pouvez contacter
le service informatique par email service.info@ensimag.fr
.
En cas de problèmes avec les machines de l'école ou votre machine personnelle vous pouvez contacter les Bug Busters, dont les contacts sont affichés dans chaque salle informatique.
3. Internet et courrier électronique à l'Ensimag
3.1. Navigation sur le Web : Firefox
Vous le connaissez sans doute, et il gagne à être connu : Firefox
est
un navigateur web très pratique, rapide, et très bien sécurisé. S'il
ne vous suffit pas, vous trouverez probablement votre bonheur parmi
les milliers d'extensions disponibles !
Rendez-vous sur https://www.mozilla.org/fr/firefox/ pour
les détails.
Firefox est accessible via la barre de menus de Gnome
, ou via
la commande unix firefox
.
D'autres bons navigateurs web sont disponibles sous GNU/Linux, comme
Chromium
(sous-partie libre de Chrome) ou Opera
, mais ils ne sont
pas forcément installés à l'Ensimag.
3.2. Votre adresse de courriel
Votre adresse a été choisie de manière canonique en utilisant le
modèle suivant : prenom.nom@grenoble-inp.org
. Les espaces présents dans les
noms ou prénoms sont remplacés par des tirets (« -
»). Les caractères
accentués sont remplacés par le caractère non accentué le plus proche.
Dans une adresse de courriel, les majuscules et minuscules ne sont, normalement, pas différenciés.
Pour résoudre les problèmes d'homonymies, de légères adaptations autour de ce modèle sont aussi réalisées au cas par cas.
Nous allons maintenant voir comment échanger des courriers électroniques avec n'importe quelle personne ayant également une « boîte aux lettres électroniques » sur Internet. À nouveau, nous avons besoin d'une application cliente pour recevoir, envoyer, et gérer notre courrier. Nous ne verrons pas ici apparaître les serveurs et les agents communicants, mais sachez qu'ils existent. Une fois encore, il y a de nombreux clients disponibles, certains graphiques, d'autres s'exécutant dans des terminaux textuels. Nous allons décrire ici trois clients : un client graphique, un client web, et un client texte.
Nous vous demandons d'essayer de vous envoyer à vous-même des courriels et de les lire avec les trois interfaces. Le but est ici de vous montrer les avantages et les faiblesses de ces trois approches.
Adresses des enseignants et enseignantes
Les enseignantes, enseignants, et autres intervenants à
l'Ensimag ont, en grande majorité, une adresse électronique de
la forme prenom.nom@imag.fr, prenom.nom@univ-grenoble-alpes.fr
et/ou prenom.nom@grenoble-inp.fr (NB: grenoble-inp.fr
et non
grenoble-inp.org
ou grenoble-inp.pro
qui sont utilisés pour les
adresses en école puis les adresses à vie des étudiantes et
étudiants).
Les emails, le téléphone ou l'adresse du bureau de vos enseignants et enseignantes sont dans l'annuaire des personnels des universités grenobloise (https://annuaire.grenet.fr).
3.3. Netiquette
Qui dit droit dit également devoir. Vous avez signé une charte informatique donnant le règlement d'utilisation des ressources, mais le bon usage est plus pointilleux que ce document (de même que les bonnes manières comportent plus d'exigences que la loi).
Par exemple, vous n'apprécieriez sans doute pas qu'une personne transmette à toute la promo (sans votre avis) un e-mail personnel que vous venez de lui envoyer. Cela fait donc partie des choses à ne pas faire.
L'ensemble des règles de bon usage d'Internet forme ce qu'on appelle la Netiquette (contraction de « Net » et « étiquette »). Ces règles ont été normalisées au niveau international et il est de bon augure (et surtout prudent) de les respecter. Le document de référence est la RFC 1855 https://tools.ietf.org/html/rfc1855. Vous trouverez facilement sur Internet une traduction française de ce document. Nous ne mentionnons ici les règles les plus importantes concernant le courrier électronique.
3.3.1. Rédaction
- Remplissez toujours le champ
objet
, et ce le plus précisément possible. Votre destinataire reçoit peut-être un grand nombre de mails et doit pouvoir savoir immédiatement de quoi il est question. - Signez vos courriels à la fin du texte, même si votre adresse e-mail est censée pouvoir être visible. Votre signature doit inclure votre nom complet et adresse e-mail.
- N'écrivez jamais rien de confidentiel dans un e-mail, et plus généralement rien que vous n'oseriez écrire dans une carte postale.
- Écrire tout en majuscules revient à CRIER.
Pour insister sur un mot ou une phrase,
entourez-le (la) du caractère * ou _,
*comme ceci*
. - N'écrivez pas en langage SMS, vous n'êtes pas limité à 160 caractères.
- Soyez bref (mais courtois), venez-en au fait.
- Manipulez l'humour et l'ironie avec prudence (ils passent mal par écrit et peuvent être mal interprétés, même avec un smiley).
- Soyez toujours modéré et prudent dans vos propos, même si on vous provoque, car votre message peut être transféré (parfois partiellement, hors de tout contexte) et lu par n'importe qui.
- Gardez toujours un esprit critique devant les e-mails que vous recevez: il est très facile de se faire passer pour n'importe qui.
- Lorsque vous répondez à une personne, gardez si nécessaire la portion de mail à laquelle vous répondez, en effaçant ce qui n'est plus de circonstance ; cela évite d'avoir des mails très longs et illisibles au bout de quelques échanges.
- Utilisez une adresse professionnelle pour les communications
professionnelles. Vous serez plus crédibles en écrivant à un
enseignant ou une enseignante depuis une adresse
@grenoble-inp.org
que depuistoto_a_la_plage@hotmail.com
. - Limitez, si possible, à un sujet le contenu de vos messages.
3.3.2. Transfert, envoi à de multiples personnes
- Ne transmettez pas un courrier reçu à d'autres personnes sans l'autorisation de l'émetteur.
- Lorsque vous transmettez un message, n'en modifiez pas le contenu.
- Ne transmettez jamais de chaînes de mail.
- Lorsque vous recevez un mail destiné à une liste de diffusion, éviter de « répondre à tous » mais sélectionnez soigneusement vos destinataires. Faites toujours attention aux personnes en « copie carbone » des mails auxquels vous répondez.
- Lorsque vous envoyez un mail à beaucoup de personnes, utilisez de
préférence le champ « copie cachée » (
cci
, oubcc
) pour les adresses e-mail, sauf si les personnes se connaissent et qu'elles doivent avoir connaissance des autres destinataires. - Vérifiez toujours le(s) destinataire(s) avant d'envoyer un mail.
- Évitez de relayer des hoax ou canulars en français (alertes pour de faux virus, rumeurs, fausses informations). Afin de vérifier la véracité ou non d'une information véhiculée par un mail, vous pouvez vous rendre sur http://www.hoaxbuster.com. En pratique, un message qui vous demande de transmettre une information a tout votre carnet d'adresse a 99% de chances d'être un canular !
3.3.3. Pièces jointes
- Limitez la taille et le nombre de vos pièces jointes. En plus de surcharger les boîtes aux lettres de vos destinataires vous prenez le risque que votre message soit supprimé (sans notification) par un des serveurs de messagerie responsable de son acheminement si sa taille excède les limites autorisées. Utilisez la compression et archivage (section 7.3). De manière générale, évitez les messages de plus de 5 Mo. De plus sachez que les fichiers binaires subissent une expansion d'environ 33 % en raison d'un procédé de transcodage binaire → ASCII.
- Utilisez des formats portables, libres d'utilisation, et non spécifiques à une
plateforme. À la place de
.doc
créés avecMicrosoft Office
, on préférera ainsi des documents au format PDF, qui préserve la mise en forme d'un document indifféremment du système d'exploitation ou de l'application utilisée pour le lire, ou encore le format ODF (.odt
pour les textes) si le document doit pouvoir être modifié par le destinataire. - Quand c'est possible, privilégiez un lien vers un fichier.
3.4. Un client de messagerie simple à utiliser : Thunderbird
Thunderbird est un lecteur de courriel graphique classique mais très
complet. Il est historiquement le compagnon de Firefox
avec qui il
a un certain nombre de points communs. En particulier il dispose
lui aussi d'un grand nombre de modules d'extensions pour divers
usages ou adaptations de l'interface.
Envoyez un courriel à votre voisin
Demandez à un de vos voisins son adresse et envoyez-lui un courriel.
3.5. Lire et envoyer des mails depuis n'importe où : le webmail
Lorsque vous êtes en déplacement, la méthode la plus simple pour lire et répondre à vos mails est d'utiliser n'importe quel navigateur Internet pour contacter le serveur webmail de l'Ensimag à l'URL : https://webmail.grenoble-inp.org/
Sécurité
Attention, le webmail est un site sur lequel vous allez entrer votre mot de passe, il est important de vous assurer que vous êtes sur le bon site ! Ne surtout pas se contenter de chercher « mail ensimag » dans un moteur de recherche en cliquant aveuglément sur le premier lien, qui a de bonnes chances de ne pas être le bon : il faut connaître l'adresse (votre navigateur peut vous aider) ou passer par un lien depuis l'intranet.
Le nom d'utilisateur et le mot de passe sont ceux de votre compte INP.
Limitations du webmail
Un webmail ne vous permet pas de travailler hors ligne. Ainsi, des déconnexions intempestives peuvent conduire à la perte de votre projet de message. De plus, l'interface webmail est quand même relativement lourde et lente :
- l'interface n'est pas faîte pour un usage intensif mais plutôt pour un accès d'appoint avec un trafic de courriel réduit.
- la quantité d'information transitant sur le réseau juste pour lire le texte de vos courriels est parfois non négligeable pour la bande passante dont vous disposerez.
- en général, un webmail ne vous donne pas d'accès à vos mails hors-ligne. Un client lourd permet de synchroniser les messages sur le disque local, et de pouvoir y accéder sans être connecté.
- Beaucoup d'utilisateurs apprécient de pouvoir choisir leur client lourd (Thunderbird, pine, ou leur client préféré sur Android ou iOS), alors que le webmail offre peu de choix de configuration.
Comme le webmail Zimbra de l'école, plusieurs clients
lourds vous offrent des services collaboratifs (souvent standardisés)
tel que la synchronisation des agendas, des carnets d'adresses… Si
ces perspectives vous intéressent, vous pouvez vous renseigner sur les
extensions de Thunderbird
, ou du projet Evolution
de GNOME
.
3.6. IMAP
Les deux lecteurs présentés (section 3.4, 3.5) utilisent le protocole IMAP pour gérer votre boîte aux lettres à distance. De manière plus générale, IMAP peut être considéré comme un protocole de synchronisation centralisé de boites aux lettres. Il en résulte que les messages que vous manipulerez seront les mêmes, quel que soit le client de messagerie utilisé.
IMAP à l'Ensimag
Votre serveur de courriel IMAP est : imap.partage.renater.fr
. Vous
pouvez l'utiliser de n'importe où sur
la planète. Dans ce cas il faut activer l'utilisation du chiffrement
SSL pour éviter d'avoir votre mot de passe circulant en clair sur le
réseau.
Les détails de la configuration qui vous serviront à configurer votre email dans différents lecteurs, si l'auto-configuration ne fonctionne pas:
Pour lire vos emails
Nom Complet | Prénom Nom |
Adresse électronique | Prenom.Nom@grenoble-inp.org |
Identifiant | Prenom.Nom@grenoble-inp.org |
Serveur entrant (IMAPS) | imap.grenoble-inp.org |
Port (IMAPS) | 993 (le défaut) |
SSL | SSL (et pas Autodétection) |
Authentification | normal password, devrait être trouvé par l'autodétection |
Pour envoyer vos emails
Serveur sortant (SMTPS) | smtp.grenoble-inp.org |
Identifiant | Prenom.Nom@grenoble-inp.org |
Port | 587, devrait être trouvé par l'autodétection |
SSL | STARTTLS (et pas Autodétection) |
Authentification | normal password, devrait être trouvé par l'autodétection |
Ces informations sont directement celles utiles dans la configuration de Thunderbird à l'Ensimag. Elles fonctionnent aussi pour les autres lecteurs. Pour les téléphones mobiles sous Android, vous pouvez utilisez, comme lecteur de mails IMAP, l'excellente application libre K9 (https://k9mail.app)
Lire ses comptes courriels externes (Gmail, Free, Hotmail, Laposte.net...) à l'Ensimag
La plupart des services de courriels proposent un accès IMAP aux boîtes aux lettres. Vous pouvez donc ajoutez dans Thunderbird la configuration pour lire directement vos comptes perso aussi.
Comme le protocole IMAP laisse les courriels sur le serveur distant, vous pouvez facilement alterner une lecture avec Thunderbird à l'Ensimag, l'interface de type webmail chez vous, et un lecteur de mail comme K9-Mail sur votre téléphone mobile.
3.6.1. Sauvegarder ses courriels dans des dossiers
Il vous est possible de stocker votre courrier dans des dossiers. Pour que ces dossiers soient accessibles depuis n'importe où en IMAP, il est important de les créer exclusivement dans le dossier IMAP et jamais dans les répertoires locaux à la machine (Local Folders)
3.6.2. L'envoi est différent de la lecture
L'envoi de courriel passe par un protocole différent de la réception: SMTP, ou sa variante sécurisée SMTPS.
En ce qui vous concerne, vous pouvez utiliser le serveur
smtp.partage.renater.fr
sur le port 465, en SSL/TLS avec comme
identifiant VOTRE_LOGIN@grenoble-inp.org
et votre mot de passe
habituel.
Envoi avec un client texte
En fait, si vous êtes connectés de l'extérieur sur un serveur de l'école (par exemple via SSH), vous pouvez parfaitement utiliser les clients textuels présentés dans la section 3.7 pour envoyer vos courriels, puisque vous travaillez sur une machine de l'Ensimag.
3.7. Les lecteurs de courriel textuels : Mutt, Alpine
Les courriels contiennent principalement du texte. Il existe donc de nombreux clients textuels dont l'avantage principal est la rapidité et la facilité d'utilisation à travers une connexion SSH.
La différence est notable par rapport au webmail lorsque votre volume de courriel devient important. Le fait qu'ils ne soient pas graphiques ne signifie pas qu'ils sont plus difficiles à utiliser. Ils affichent directement dans le terminal la liste des touches de commandes qui ont une action pertinente à un instant donné.
Alpine
est un lecteur de courriel
convivial et qui vous guide beaucoup dans son utilisation. Il demande
néanmoins un peu de configuration si vous êtes en dehors de
l'Ensimag. Mutt
est un peu plus minimaliste
mais son usage depuis n'importe où pour lire votre courriel en IMAP
sécurisé est aussi simple que la commande :
you@ensipc$ mutt -f imaps://prenom.nom@grenoble-inp.org@imap.grenoble-inp.org
(Votre login est votre email, prenom.nom@grenoble-inp.org
,
d'où la présence de deux @
dans la ligne de commande)
Si vous n'avez pas encore commencé le jeu de piste, rendez-vous sur la page du cours, « ». Si vous avez bien lu ce document jusqu'ici, vous devriez pouvoir terminer les étapes A1 à A5, et atteindre l'énoncé de l'étape B1. Si vous bloquez sur une étape, discutez-en avec d'autres étudiantes et étudiants et/ou demandez de l'aide à vos enseignants ou enseignantes.
4. Le b.a.-ba pour survivre sous Unix
4.1. Système d'exploitation
Un ordinateur est composé d'un ensemble d'unités matérielles, chacune destinée à réaliser une tâche particulière. Que ce soit le processeur et la mémoire qui servent à exécuter les logiciels et à « piloter » l'ordinateur complet (comprenez par là : demander des services aux autres composants), les éléments d'interface avec un humain (clavier, souris, écran…), de persistance de données (disque dur…), ou encore l'infrastructure de communication entre ces composants et avec d'autres machines (interface réseau, USB…), tous ces composants nécessitent d'être gérés et éventuellement partagés entre plusieurs utilisateurs : c'est le rôle du système d'exploitation. Ce dernier est généralement constitué d'un noyau (Linux par exemple) et d'un ensemble de logiciels permettant aux utilisateurs d'assurer la gestion de l'ordinateur et des programmes et applications exécutés.
Certains constructeurs d'ordinateur possèdent leur système d'exploitation « maison », mais dans le domaine de la micro-informatique, des systèmes standard sont majoritairement utilisés. Windows et la famille Unix (MacOS, GNU/Linux 1…) sont les plus répandus.
Le système d'exploitation travaille pour vos processus
Votre système d'exploitation (le noyau) est composé d'un programme comme les autres, qui s'exécute sur le processeur, comme les autres. Enfin presque. Votre système est le seul programme de votre machine à avoir le droit de manipuler directement le matériel. Tout le matériel.
Chaque processus, un programme qui s'exécute, est complètement isolé, dans sa mémoire virtuelle. Un processus a besoin de faire des choses vers son extérieur: obtenir plus de mémoire, lire un fichier, écrire un fichier, communiquer sur le réseau, afficher quelque chose, créer un nouveau processus, communiquer avec un autre processus, avoir la liste des processus, la liste des fichiers, etc.). Le processus demande poliment au système d'exploitation de faire l'action en son nom puis de mettre le résultat dans sa mémoire virtuelle.
Quant il n'a rien à faire, le système d'exploitation ne s'exécute pas. Il donne le processeur aux processus qui en ont besoin, et il le reprend lorsque nécéssaire, soit pour lui, soit pour le donner à un autre processus qui en a besoin.
4.2. Commandes et interpréteur de commandes
4.2.1. Notion de commande
Nous allons parler ici de la fraction du système d'exploitation que nous avons définie comme permettant la gestion de l'ordinateur et des applications. Dans Unix, ces services sont réalisés par des programmes portant le nom de commande, que nous avons déjà vues en section 2.3.5. Certaines commandes, particulièrement simples, ne nécessitent pour être exécutées, que la frappe de leur nom sur le clavier, dans un terminal.
Lancez un shell (c'est-à-dire un terminal). Tout ce qui suit dans ce chapitre se fera dans cette fenêtre.
4.2.1.1. Exemple :
Unix comporte une commande permettant d'afficher un calendrier. Par défaut, le mois
courant est affiché. Cette commande porte le nom de cal
.
Lancez-la en tapant sur votre clavier:
you@ensipc$ cal
puis .
Certaines commandes nécessitent ou permettent qu'on leur fournisse des paramètres lors de leur lancement. L'exécution d'une telle commande se fait en tapant sur la même ligne le nom de la commande suivi de ses paramètres, comme ceci:
you@ensipc$ nom-de-la-commande param_1 param_2 ... param_n
puis
On parle aussi souvent d'« argument » à la place de paramètre. Ce document utilise « argument » et « paramètre » indifféremment.
La même commande, cal
,
permet aussi d'imprimer le calendrier d'un mois quelconque d'une année
comprise entre 0 et 9999. Au lancement, il faut lui fournir en
paramètre le numéro du mois et de l'année choisis. Pour vous
familiariser avec son emploi, tapez par exemple :
you@ensipc$ cal 2 1998
puis
puis affichez le mois de votre naissance.
A partir de maintenant, nous omettrons dans les
exemples de commandes : vous savez qu'il faut valider une commande en
appuyant sur cette touche pour qu'elle s'exécute.
N'hesitez pas à consulter l'aide de cal
avec man cal
.
4.2.2. Notion d'interpréteur de commande
Nous avons découvert l'interpréteur de commande de un peu plus haut, en section 2.3.5. Il est maintenant temps d'apprendre à s'en servir réellement. Contrairement aux interfaces graphiques, cet apprentissage va demander un certain investissement : au minimum, vous aurez à connaître quelques dizaines de commandes utiles dans la vie de tous les jours, et pour les ambitieux qui voudraient les connaître toutes, sachez qu'il en existe au total plusieurs milliers.
Au fil de votre apprentissage, vous découvrirez que dans bien des cas, un interpréteur de commande est plus efficace qu'une interface graphique, voire permet d'accéder à des fonctionnalités qui ne sont pas accessibles à la souris.
L'interpréteur de commandes réalise le travail suivant:
- écriture de l'invite de commande ou prompt. Il s'agit d'une
courte chaîne de caractères généralement terminée par le caractère
%
ou$
, et qui sert à inviter l'utilisateur à taper une commande ; - lecture sur le clavier d'une ligne tapée par l'utilisateur et
terminée par
;
- interprétation du premier mot comme étant le nom d'une commande, et des autres mots comme étant les paramètres de la commande ;
- exécution de la commande désirée ;
- retour à l'étape numéro 1.
Commande incorrecte
Que se passe-t-il si l'utilisateur tape un nom de commande incorrect ? Tapez par exemple :
you@ensipc$ xyz32
et mémorisez bien le message d'erreur: c'est celui que vous donnera l'interpréteur de commandes à chaque fois que vous taperez quelque chose qui ne correspond à aucun des noms de commande qu'il connaît.
L'intérêt des commandes et de l'interpréteur de commandes est à la fois sa rapidité et sa puissance. Les commandes à connaître absolument sont décrites au chapitre 7. En attendant, un petit exemple d'utilisation peut vous donner une idée de l'efficacité du shell.
4.2.2.1. Exemple :
On souhaite rechercher un fichier contenant le mot « Factorielle » mais on ne connaît plus son nom. La ligne de commande suivante permet d'identifier tous les fichiers contenant la chaîne de caractères « Factorielle »:
you@ensipc$ grep "Factorielle" *
La réponse donnée par l'exécution de cette commande affiche pour chaque fichier contenant cette chaîne le nom du fichier suivi de la ligne où la chaîne « Factorielle » a été trouvée. Par exemple :
fact.py: def fact(n): # Factorielle
4.3. Le système de fichiers d'Unix
Nous allons maintenant partir à la découverte de l'arborescence de répertoires d'Unix.
4.3.1. Notions de fichier et de répertoire
Les fichiers peuvent être manipulés à l'aide de commandes dans un
shell (cf. section 4.2.2) ou bien à l'aide d'une
application particulière : un gestionnaire de fichiers graphique. Dans
ce chapitre, nous utiliserons simultanément le shell et le
gestionnaire graphique nautilus
2, afin de
bien appréhender l'utilisation du système. Il est important de se
rendre compte que ces deux outils fournissent deux vues différentes
de la même information.
Le côté « graphique » de nautilus
est attrayant, et sa simplicité
d'utilisation peut séduire, mais vous apprendrez progressivement à
vous servir de la ligne de commande, qui, avec de l'expérience, est en
fait beaucoup plus efficace pour la plupart des tâches. Dans
tous les cas, il sera indispensable d'apprendre à utiliser la ligne de
commande. Après avoir fait connaissance avec le système, nous vous
demanderons donc d'arrêter d'utiliser nautilus
pendant au moins
quelques mois.
4.3.2. Un gestionnaire de fichiers graphique : nautilus
Sous Unix, il existe une grande variété de gestionnaires de fichiers
graphiques, chacun ayant ses avantages et ses inconvénients. Dans ce
chapitre nous utiliserons nautilus
.
D'autres choix sont presque équivalents comme Thunar
ou Dolphin
.
En parallèle, nous utiliserons un shell. Le but est
d'illustrer un certain nombre de concepts avancés des fichiers sous
Unix. Il faudra déplacer et redimensionner les fenêtres l'une à côté
de l'autre afin de voir et manipuler simultanément nautilus
et le terminal.
Démarrez nautilus
Pour lancer nautilus
, cliquez sur l'icône « Home » (ou
« Computer ») sur le bureau, ou choisissez un répertoire dans le menu
« Raccourcis » (ou « Places »).
Par défaut, nautilus
affiche le répertoire courant de manière
conviviale, mais nous avons besoin de voir et de comprendre ce qu'il
se passe. Faites Control+l ("L" comme Lima) sur une
fenêtre nautilus
: le répertoire est maintenant affiché sous forme
texte (par exemple, /user/1/toto
), et réciproquement, vous
pouvez entrer le nom d'un répertoire sous forme texte.
Nous vous recommandons d'activer ce mode de manière pérenne pour vous permettre de mieux comprendre et appréhender les notions de fichiers et répertoires, et leurs implications, tout au long de votre scolarité.
Vous pouvez activer ce mode définitivement en lançant la commande suivante:
you@ensipc$ dconf-editor
puis en cliquant sur "org" → "gnome" → "nautilus" → "preferences" → "always-use-location-entry" pour y désactiver "Utiliser la valeur par défaut" et la mettre à "Vrai".
Il est possible aussi de faire cela avec une seule ligne de comande:
gsettings set org.gnome.nautilus.preferences always-use-location-entry true
Équivalent shell
Démarrez un terminal. Le prompt correspond au nom de votre répertoire
personnel. Pour afficher le contenu de ce répertoire, tapez ls
Cette commande (en anglais
list) vous permet d'afficher les fichiers visibles du répertoire où
vous vous placez.
Vous devriez voir les mêmes fichiers depuis nautilus
et dans le terminal.
nautilus
Il propose des possibilités d'accès à distance, entre autres, avec
ftp
(transfert de fichiers), ssh
(protocole réseau crypté), smb
(partage de fichiers Windows). Essayez d'ouvrir l'emplacement
sftp://pcserveur.ensimag.fr/
par exemple.
4.3.3. Définitions
Pour le stockage de l'information, l'informatique s'est inspirée des systèmes de stockage « papier » : un fichier informatique peut être comparé à une feuille de papier, et on peut regrouper ces feuilles en dossiers (ou folders en anglais, qui tient son nom du fait qu'on fabrique un dossier papier en pliant une feuille de carton), ou répertoire (ou directory en anglais). Bien évidemment, un répertoire peut contenir non seulement des fichiers, mais aussi d'autres répertoires.
- Un fichier est l'unité de stockage de l'information dans l'ordinateur. Il est identifié par un nom et un chemin d'accès.
- Un répertoire est une unité d'organisation des fichiers. Chaque répertoire peut contenir des fichiers et/ou des répertoires. Il est identifié par un nom et un chemin d'accès.
- Le chemin d'accès à un fichier (ou à un répertoire) est la suite des répertoires imbriqués qu'il faut ouvrir pour accéder à ce fichier (ou répertoire).
Chaque utilisateur possède un répertoire personnel (« home
directory » en anglais), où sont stockées toutes ses données.
Traditionnellement sous unix, le répertoire personnel de
l'utilisateur toto
se trouve dans /home/toto/
, mais l'Ensimag
utilise une disposition de répertoires un peu plus compliquée.
Mais il n'est pas nécessaire de savoir où se trouve le
répertoire : on peut désigner le répertoire personnel de
l'utilisateur toto
avec le raccourci ~toto
, et dans le cas
particulier où un utilisateur souhaite accéder à son propre
répertoire personnel, on peut utiliser le raccourci ~
.
Subtilités avec la notation ~
Une confusion classique est d'écrire ~user
à la place de ~/user
,
ou l'inverse. ~user
signifie « le répertoire personnel de user
»,
alors que le /
dans la notation ~/user
est le séparateur de
répertoire classique, donc ~/user
signifie « le répertoire nommé
user
à l'intérieur du répertoire ~
(qui est le répertoire
personnel de l'utilisateur courant) ».
4.3.3.1. Exemple :
Le chemin /user/1/perronni/
est le chemin d'accès au répertoire
personnel de l'utilisateur perronni
. Pour accéder à ce répertoire
il faut donc « ouvrir » le répertoire /
(le répertoire racine) qui
contient le répertoire users
qui contient le répertoire 1
qui à
son tour contient le répertoire perronni
.
Majuscules/minuscules.
Pour les noms de fichiers ou de répertoires les minuscules et majuscules ne sont pas équivalentes.
Sous Unix, chaque utilisateur a un répertoire (ou espace) personnel, et n'a en général pas accès aux répertoires des autres utilisateurs (ou au moins, n'a pas l'autorisation d'y écrire).
nautilus
et les répertoires
Dans la fenêtre nautilus
, une barre (dite de localisation)
en
haut à droite devrait afficher quelque chose comme
/user/1/votre-login/
. Il faut lire
cela comme : « dans l'ensemble des fichiers, dans le répertoire
intitulé users
, dans un sous-répertoire intitulé votre-login… »
Essayez par exemple d'effacer la fin de cette ligne pour
afficher seulement /user/1/
(remplacez 1
par le numéro
correspondant qui s'est affiché quand vous avez affiché le nom
complet de votre répertoire personnel), puis validez avec
. Vous voilà maintenant dans un répertoire parent de
votre répertoire personnel, qui contient votre répertoire et ceux
des autres étudiantes et étudiants.
Changer de répertoire dans le terminal
Pour effectuer la même manœuvre dans le terminal, vous pouvez
utiliser la commande cd
qui signifie « Change Directory »:
tapez cd /user/1/
. Vous êtes maintenant dans le
répertoire parent de votre répertoire personnel. Vous pouvez
afficher son contenu en tapant ls
et constater que vous
observez la même chose que dans nautilus
. Pour revenir à votre
espace personnel, vous pouvez taper cd ~votre-login
.
Si vous êtes perdus, la commande cd
, sans argument, permet de
revenir dans votre répertoire personnel.
Une seule arborescence
Un système Unix utilise une seule arborescence, quel que soit le
nombre de périphériques de stockage présents ou de disques réseaux
accédés. Toutes les données sont montées quelque part dans
cette arborescence. Par exemple, un DVD de données contenant un
répertoire toto
peut être monté dans le répertoire
media
en tant que /media/dvd/
. Le répertoire toto
est alors accessible en /media/dvd/toto
. La liste
courante des points de montage est consultable avec la commande mount
.
4.3.3.2. Chemin absolu et relatif
Dans l'exercice précédent, une fois que vous êtes dans le répertoire
parent de votre répertoire personnel, vous pouvez « voir » votre
répertoire personnel en tapant ls
(ou visuellement avec nautilus
).
Lorsque vous tapez la commande cd
, vous lui
donnez en argument le chemin où vous voulez vous placer.
Ce chemin peut aussi être relatif, auquel cas
vous devez seulement
préciser la liste des répertoires à parcourir en partant du lieu où
vous vous trouvez. C'est ce que vous avez fait lorsque vous étiez dans
/user/1/
et que vous avez tapé cd ~votre-login
.
Par ailleurs, le chemin d'accès est dit absolu
lorsqu'il contient la totalité des répertoires d'inclusion, par
exemple lorsque vous avez tapé cd /user/1/
.
L'avantage de cette notation est qu'elle
est plus rapide si vous voulez accéder à un répertoire éloigné de
celui où vous vous trouvez.
Changer de répertoire dans le terminal (chemin relatif)
Pour effectuer la même manœuvre dans le terminal, avec un chemin
relatif, tapez cd ..
(avec un espace et deux
points successifs : le répertoire parent). Vous êtes maintenant dans
le répertoire parent de votre
répertoire personnel. Vous pouvez afficher son contenu en tapant
ls
et constater que vous observez la même chose que dans
nautilus
. Pour revenir à votre espace personnel, vous pouvez aussi
taper cd ./votre-login/
(1 seul point :
le répertoire courant).
Changer de répertoire dans nautilus
(chemin relatif)
Essayez d'entrer et de comprendre le chemin suivant dans la barre de localisation :
/user/1/votre-login/../votre-login/./../votre-login/../votre-login
4.3.4. Naviguer dans l'arborescence
Dans nautilus
, il suffit de cliquer (double-clic, ou 1 clic
simple selon la configuration) sur un répertoire pour le visiter. Pour
remonter d'un niveau, on peut éditer le chemin sur la barre de
localisation s'il est en mode texte, ou cliquer sur le répertoire
parent s'il est en mode graphique. Certaines versions de nautilus
ont
un bouton ↑ pour monter d'un niveau.
Changer de répertoire
Essayez de vous déplacer dans un sous-répertoire de votre répertoire courant puis de revenir.
4.3.5. Déplacer, copier, supprimer des fichiers
Pour manipuler des fichiers sous nautilus
, on commence par les
sélectionner. On peut cliquer sur un fichier pour le sélectionner.
Pour sélectionner plusieurs fichiers à la fois, on peut dessiner un rectangle de
sélection en faisant glisser la souris, ou bien utiliser les touches
Maj et Ctrl.
Sélection de fichiers
Cliquez sur le fichier en haut à gauche de la fenêtre nautilus
,
puis sur un fichier vers la droite de la fenêtre.
Recommencez, mais en maintenant la touche Maj appuyée
pendant que vous sélectionnez le deuxième fichier. Même chose avec
Ctrl.
Une fois les fichiers sélectionnés, on peut les déplacer ou les copier en faisant glisser la souris vers la destination. Pour les effacer, un clic droit ouvre un menu contextuel proposant l'effacement.
L'effacement dans un gestionnaire de fichier graphique n'est souvent pas immédiat. Comme sous d'autres systèmes, les fichiers sont déplacés dans la corbeille. Il faut vider la corbeille pour réellement effacer le fichier.
Votre corbeille est un répertoire de votre compte comme les autres :
~ /.local/share/Trash/files
. Son nom a été fixé par convention entre
les différents gestionnaires de fichiers graphiques (https://freedesktop.org).
4.3.6. L'arborescence de répertoires usuelle sous Unix
4.3.6.1. Notion de répertoire d'origine
Nous avons vu que chaque utilisateur possède dans le système un
ensemble de fichiers et d'arborescences, et bien évidemment le système
est obligé de gérer tous ces objets de manière séparée pour chaque utilisateur.
Pour cela, tous les objets appartenant à un utilisateur sont reliés
à un même répertoire. Ce répertoire est nommé le répertoire d'origine
de l'utilisateur (en anglais, home directory
). Lorsque vous vous connectez (login), le système
fait initialement correspondre votre répertoire courant à votre répertoire d'origine. Vous
ne voyez ainsi que les objets qui vous appartiennent. Le répertoire
d'origine est souvent représenté graphiquement par une petite maison.
Retournez au répertoire d'origine dans le terminal
Essayez de vous déplacer dans le répertoire /tmp
. Retournez
ensuite dans votre répertoire d'origine.
Retournez au répertoire d'origine dans nautilus
idem que précédemment.
4.3.6.2. Le répertoire racine : /
Tous les répertoires du système ont un ancêtre commun. Ce répertoire
s'appelle répertoire racine, ou root en anglais. On le désigne
par /
.
Répertoire racine
En partant de votre répertoire personnel, remontez vers le répertoire parent, puis remontez encore… Que se passe-t-il quand vous atteignez le répertoire racine ?
4.3.6.3. D'autres répertoires du système
Il existe bien sûr beaucoup de répertoires en dehors de votre répertoire personnel. Ce sont les répertoires contenant les fichiers qui permettent au système de fonctionner, et les fichiers correspondant aux applications que vous pouvez utiliser. Voyons-en quelques-uns :
/bin/
- Contient les fichiers exécutables strictement nécessaires au fonctionnement du système.
/usr/bin/
- Contient la plupart des fichiers exécutables du système. Il y en a beaucoup !
/etc/
- Contient les fichiers de configuration globaux du système.
/var/
- Contient les données gérées par le système.
Visite dans le terminal
Rendez-vous dans chacun de ces répertoires et regardez les fichiers
qu'il contient. Trouvez le fichier correspondant à l'exécutable nautilus
…
4.3.7. Manipulations de base sur les fichiers et répertoires
Cette partie vous permet d'apprendre à naviguer efficacement dans
l'arborescence sans utiliser nautilus
, mais simplement à partir
d'un shell. Vous n'utiliserez nautilus
que pour surveiller
les changements d'état.
4.3.7.1. Lister les fichiers et répertoires: ls
Le premier besoin éprouvé est de pouvoir répondre à la question: Quels
sont les fichiers que je possède ? Pour cela, on dispose d'une
commande déjà vue section 4.3.2, la commande
ls
(abréviation de l
i s
t), qui, lorsqu'on la
tape au clavier, demande au système d'afficher la liste des noms des
fichiers que l'on possède.
Tapez donc
you@ensipc$ ls
Le système doit vous répondre par une liste de noms qui sont les noms de vos fichiers. Ce sont des fichiers que nous avons installés sur la machine pour que vous puissiez travailler.
À partir d'ici, vous ne devriez plus avoir besoin de nautilus
. Comme
expliqué ci-dessus, il est très important pour vous d'apprendre à vous
servir de la ligne de commande efficacement, donnez-vous comme
discipline de ne plus utiliser nautilus
, sauf éventuellement pour
vérifier que l'affichage graphique est cohérent avec ce que vous
faites en ligne de commande.
4.3.7.2. Créer un répertoire : mkdir
Les répertoires sont un moyen très efficace de classement, encore
faut-il savoir en créer. Il existe pour cela une commande qui
s'appelle mkdir
, abréviation de
m
a k
e dir
ectory. On l'utilise en lui donnant comme
paramètre le nom du répertoire que l'on désire créer.
Création d'un répertoire TP
Tapez par exemple:
you@ensipc$ mkdir TP
pour créer un répertoire de nom TP
. Utilisez ensuite la
commande ls
pour vérifier que vous avez bien maintenant un
autre objet de nom TP et de type répertoire. Utilisez la commande
cd
pour vous positionner sur ce répertoire, et ensuite
utilisez ls
pour voir ce qu'il contient. La commande ls
ne répond rien, indiquant ainsi que le répertoire est vide. Vérifier
dans nautilus
.
Faites maintenant :
you@ensipc$ mkdir Python you@ensipc$ ls
Vous venez de créer un répertoire dans lequel vous pourrez travailler vos TP de Python d'ici peu.
4.3.7.3. Détruire un fichier : rm
Quand on ne désire plus conserver un fichier, on peut l'effacer de
l'espace disque à l'aide de la commande rm
(abréviation de r
e m
ove). Utilisez ls
pour vérifier
que vous possédez un fichier qui porte le nom brouillon
.
Détruisez ce fichier en tapant :
you@ensipc$ rm brouillon
utilisez ensuite ls
pour vérifier qu'il a bien
disparu. Vérifier aussi dans nautilus
.
Pour supprimer un répertoire et tout ce qu'il contient, utilisez la commande :
you@ensipc$ rm -r repertoire
Si la commande vous demande confirmation pour chaque fichier et que ces
demandes vous ennuient, utilisez l'option -f
de la commande \rm
(il y a un anti-slash devant
rm
), mais avec précautions…
L'effacement est définitif !
Avec le système Unix, il n'y a aucun moyen de récupérer un fichier que
l'on a détruit. Bien réfléchir avant d'utiliser rm
.
Il y a deux nuances. Les gestionaires de fichiers graphiques
(nautilus
) utilisent une « corbeille », le répertoire
~/.local/share/Trash
de votre HOME. Et votre compte Ensimag est
archivé chaque nuit. C'est la raison majeure des quotas: avoir le temps de
faire une sauvegarde complète en quelques heures.
4.3.7.4. Copier un fichier : cp
Il arrive souvent que l'on veuille dupliquer un fichier,
pour faire une sauvegarde avant modification par exemple. On dispose d'une
commande permettant de procéder à cette opération de duplication, il
s'agit de la commande cp
(abréviation de
c
o p
y). Cette commande admet deux paramètres qui sont respectivement
le nom du fichier original, et le nom du fichier que l'on désire
créer. Faites une copie du fichier factorielle.py
en tapant:
you@ensipc$ cp factorielle.py nom-de-fichier
en utilisant un nom de votre choix pour nom-de-fichier. Puis, vérifiez à l'aide de ls
qu'un nouveau
fichier vient d'apparaître, et vérifiez à l'aide de less
3 que son
contenu est bien le même que celui de factorielle.py
.
Pour copier un répertoire, on ajoute l'option -r
à la ligne de
commande :
you@ensipc$ cp -r repertoire-source destination
4.3.7.5. Changement du nom d'un fichier (et déplacement) : mv
La commande permettant de changer le nom d'un fichier est la commande
mv
(abréviation de m
o v
e)
qui, comme la commande cp
admet deux paramètres. Le premier
paramètre est l'ancien nom du fichier, et le deuxième paramètre est le
nouveau nom :
you@ensipc$ mv ancien-nom-de-fichier nouveau-nom-de-fichier
Changement de nom
Changez le nom d'un fichier et vérifiez à
l'aide de ls
et less
que tout
s'est bien passé.
La même commande permet de déplacer un fichier d'un répertoire à un autre. On l'utilise comme ceci :
you@ensipc$ mv ancien-répertoire/ancien-fichier \ nouveau-repertoire/nouveau-fichier
ou bien
you@ensipc$ mv ancien-répertoire/ancien-fichier nouveau-repertoire
Déplacement de fichier
Déplacez le fichier LISEZ_MOI
dans le répertoire stage-unix
,
puis remettez-le dans le répertoire courant avec :
you@ensipc$ mv stage-unix/LISEZ_MOI .
(le .
désigne le répertoire courant)
A ce stade, vous devriez pouvoir sans problème résoudre l'étape B1 du jeu de piste. Pour l'étape B2, elle vous demandera un mot de passe, que voici : « jeu2piste » (sans les guillemets).
5. Applications utiles
5.1. Quelques applications déjà vues par ailleurs
5.2. Bureautique : LibreOffice
Vous connaissez probablement le traitement de texte Microsoft Word
et
le reste de la suite Microsoft Office
. Ces applications sont
disponibles sur les machines Windows de l'Ensimag.
La suite LibreOffice
est une autre suite bureautique, sans doute
moins connue, mais de qualité tout à fait comparable. Elle présente
entre autres les avantages d'être gratuite (et libre), et de fonctionner
sur beaucoup de systèmes d'exploitation, dont l'Unix que
vous utilisez ici (mais aussi Windows). LibreOffice
est basée sur une
autre suite bureautique libre, appelée
OpenOffice.org
, qui est encore utilisée sur
certaines machines.
Notez que cette suite vous permet d'ouvrir et
d'éditer des fichiers créés avec Microsoft Office
, comme les .doc
,
« .xls
» ou « .ppt
» par exemple. Le format de fichier par défaut
de LibreOffice
s'appelle OpenDocument (extensions .odt
pour le
traitement de texte, .ods
pour le tableur, .odp
pour le module
présentation…).
Le format OpenDocument est un standard ISO, pérenne (lire votre
document dans 10 ans), supporté par de nombreux des logiciels de
bureaux: LibreOffice et OpenOffice, mais aussi, en leur demandant
poliment, Google docs
, Microsoft Office
, MS Office 365
, ….
La suite se décompose en plusieurs outils, dont :
oowriter
oulowriter
(le nomoowriter
vient d'un ancètre de LibreOffice : OpenOffice.org) pour le traitement de texte, utile pour les compte-rendus, rapports ;oocalc
oulocalc
un tableur comparable àMicrosoft Excel
;oodraw
oulodraw
un logiciel de dessin vectoriel à l'instar d'Adobe Illustrator
,CorelDraw
ouInkscape
;ooimpress
ouloimpress
pour les présentations (semblableMicrosoft PowerPoint
).
Rendez-vous sur https://www.libreoffice.org/ pour plus d'informations.
5.3. Visualiser des images : Eye of Gnome
, Gthumb
…
Pour visualiser des images (fichiers JPEG, PNG, GIF…), il existe
une multitude de petits programmes, au choix. On pourra citer Eye of
Gnome
(commande eog
), ou gthumb
. Pour visualiser une image
contenue dans mon-image.jpg
, il suffit donc d'utiliser la commande eog mon-image.jpg
.
5.4. Visualiser des documents PDF : Evince
, Acrobat Reader
…
Un format très utilisé pour des documents imprimables est le format
PDF, c'est même un standard ISO depuis 2008. Un fichier PDF n'est pas
fait pour être édité, mais surtout pour être visualisé à l'écran, et
éventuellement imprimé. Là encore, il existe une multitude de
logiciels pour lire des fichiers PDF, les plus communs sont Acrobat
Reader
, le lecteur officiel d'Adobe (commande acroread
), ou le lecteur de
l'environnement Gnome
, evince
.
5.5. Dessin et retouche d'images : GIMP
Pour la retouche de photographies numériques ou le dessin (bitmap),
les habitués de Photoshop retrouveront une partie de leurs habitudes
avec GIMP
(commande gimp
).
5.6. Composition de documents : LaTeX
LaTeX
(prononcer « latec ») est un
logiciel comparable à un logiciel de traitement de texte, mais suivant
une approche totalement différente : on édite le texte avec des
commandes de mise en forme comme s'il s'agissait d'un programme, que
l'on compile pour obtenir le document. Il permet d'obtenir des
documents de grande qualité typographique avec un effort raisonnable.
Toutefois, LaTeX requiert un apprentissage initial plus important
que celui qui est nécessaire pour les logiciels de type Microsoft Word
ou LibreOffice. Pour cette raison, il est peu connu du grand public,
mais très utilisé des informaticiens, mathématiciens et physiciens
devant produire un contenu parfois complexe. Il va sans dire que ce
document est écrit en LaTeX !
Le principe de LaTeX est d'écrire un document texte (fichier.tex
),
qu'on peut compiler avec par exemple pdflatex fichier.tex
pour
obtenir un fichier fichier.pdf
.
Inutile d'en dire plus, vous avez eu ou vous allez avoir d'ici peu une initiation à LaTeX par vos enseignantes et enseignants de méthodes numériques.
Ouvrir des fichiers de types différents
Regardez le contenu du répertoire exemples
qui se trouve à la
racine de votre compte. Essayez d'ouvrir chaque fichier qui s'y
trouve (par exemple avec libreoffice
, gimp
, evince
, et
less
).
5.7. Tout ça est gratuit ?
Tous les logiciels mentionnés dans cette section, comme beaucoup de logiciels que l'on utilise fréquemment sous GNU/Linux, sont disponibles gratuitement. En fait, une grande partie de ceux-ci ne sont pas seulement gratuits : ils sont aussi libres 4, c'est-à-dire que la licence du logiciel vous garantit 4 libertés:
- liberté 0
- la liberté de l'utiliser pour n'importe quel usage
- liberté 1
- la liberté de l'étudier et de le modifier (ce qui implique d'avoir accès au code source)
- liberté 2
- la liberté de le redistribuer
- liberté 3
- la liberté de collaborer en distribuant votre version modifiée (ce qui implique de aussi distribuer le code source de ses modifications)
Le mouvement du logiciel libre est né au début des années 1980, et aujourd'hui les logiciels libres sont pour beaucoup de très bonne qualité, et un grand nombre d'utilisateurs les préfèrent à leurs équivalents propriétaires indépendamment de leur prix. Pour plus d'informations, on pourra consulter la page suivante : https://www.gnu.org/philosophy/free-sw.fr.html
Ce chapitre devrait vous avoir donné les clés pour aller jusqu'à l'étape D1 du jeu de piste.
6. Les éditeurs de texte
Avant tout, qu'est-ce que ça veut dire, un « éditeur de texte » ? Vous avez sûrement déjà utilisé un logiciel de « traitement de texte », qui permet de taper du texte, de le mettre en forme (gras, italique, taille et choix des polices…). Un éditeur de texte permet avant tout d'éditer du texte brut : pas de mise en forme, pas de dessins, juste du texte : une suite de caractères. Cela peut sembler restrictif, mais en informatique, on trouve du texte brut partout : un programme écrit dans un langage de programmation classique est un fichier texte, une page HTML est un fichier texte, la plupart des fichiers de configuration des logiciels en sont également…
On pourrait essayer d'éditer le texte d'un programme Python avec un outil
de traitement de texte classique, comme Microsoft Word
ou LibreOffice
,
mais la plupart des fonctionnalités offertes par ces programmes seraient
inutiles. À l'inverse, il manquerait énormément de fonctions spécifiques
à l'édition de texte brut.
Il existe plusieurs dizaines d'éditeurs de texte couramment utilisés
sous Unix. Nous vous présentons ici Vim/Nvim
, GNU Emacs
et
Code
, qui sont trois éditeurs « classiques », parmi les plus
populaires, et tous les trois permettant un usage
quasi universel. Tous les trois sont très puissants, mais différents,
et demandent chacun un apprentissage particulier.
Vim/Nvim
et GNU Emacs
sont des éditeurs bien plus puissants que
Code
mais ne vous le montrent pleinement que quand vous les avez
configurés à votre goût. Ce processus de configuration est facile, mais
s'étale dans le temps, car cela vous demande de comprendre la
globalité des actions (tests des erreurs, compilation, affichage de la
documentation, quelle documentation, débogage, etc.). Vim/Nvim
et
GNU Emacs
sont assez transparents, et les configurer participe à
votre apprentissage. À l'inverse, vos apprentissages nourriront aussi
l'exigence et la finesse de votre configuration.
Code
vient, pour toutes les actions courantes, avec une
configuration très correcte, une interface habituelle, mais trois grosses
contreparties: Code
vous masque les actions qu'il fait réaliser par
d'autres applications, or, vous aurez à comprendre ces actions; ce que
l'interface ne vous propose pas, est invisible et quand vous
découvrirez un manque, vous hésiterez à utiliser autre chose par peur
d'un hypothétique surcoût alors que ce sera le meilleur choix; enfin,
il reste difficile de le mettre totalement à votre goût.
Votre éditeur de texte est l'outil que vous allez avoir devant vous la majorité du temps quand vous programmerez. Il est très important d'être à l'aise, et surtout d'être rapide dans son utilisation. Ne vous arrêtez pas au minimum vital (ouvrir/enregistrer). Posez-vous la question du temps qu'il vous faut pour des tâches classiques comme : faire un rechercher-remplacer, placer le curseur sur un numéro de ligne donné, indenter un bloc de code… Si la réponse est supérieure à environ 5 secondes, vous n'utilisez probablement pas la bonne méthode (par exemple, vous ne connaissez pas le raccourci clavier), et vous allez perdre beaucoup de temps cumulé dans la suite.
Nous vous proposons dans la suite d'essayer les trois en passant trois fois 20 minutes à faire leurs tutoriels pour utiliser et comprendre leurs bases et quelques-uns de leurs raccourcis.
Les récompenses immédiates seront:
- les raccourcis Vim, omniprésents dans les applications Unix (y
compris
Emacs
etCode
si vous les configurez pour) - les raccourcis Emacs, omniprésents dans votre terminal, l'outil qui
vous utiliserez de manière intensive, tous les jours, tout le temps,
y compris avec
Code
etVim
. Code
est le plus « facile » à prendre en main, car il utilise des conventions que vous connaissez déjà et il masque complètement ce qu'il fait faire par d'autres outils, donnant une illusion de simplicité. Son utilisation se paye par le surcoût pour comprendre ce qui se passe réellement derrière.
6.1. L'éditeur Vim
Vim
est l'éditeur le moins intuitif, mais très
puissant. Ses raccourcis claviers sont étudiés pour que les tâches
courantes puissent se faire en appuyant sur un minimum de touches. Un
autre avantage de Vim
est qu'il est disponible sur pratiquement tous
les systèmes de la famille Unix. Connaître les bases sous vi
est indispensable pour un
bon administrateur système, car c'est parfois le seul éditeur
installé sur des machines un peu exotiques.
La version historique, vi
, est assez
rudimentaire, mais la version améliorée appelée Vim
(pour
« vi
improved »), ou neovim
, et sa variante graphique gVim
sont
aujourd'hui activement développées, et fournissent tout ce qu'un
programmeur peut attendre d'un bon éditeur.
En bref, si vous êtes déjà informaticien chevronné et que vous
cherchez un éditeur flexible et rapide, regardez ce que Vim
peut
faire pour vous. Si vous êtes débutant en informatique, à moins d'être
particulièrement curieux, vous n'apprécierez probablement pas Vim
,
mais qui sait.
vim
Investissez 20 minutes pour faire les 4 premières leçons du tutoriel officiel de vim. Vous apprendrez ainsi certains des principaux raccourcis que vous retrouverez dans nombres d'applications sous UNIX.
you@ensipc$ vimtutor
ou en français
you@ensipc$ LANG=fr_FR.UTF-8 vimtutor
Comme pour Emacs
et Code
, vous trouverez une introduction plus détaillée sur
le site, « editeurs/vim ».
Une configuration par défaut, activant les choses les plus utiles est
disponible sur les machines de l'Ensimag dans le répertoire de ce
cours servant au jeu de piste.
you@ensipc$ mv -i ~/.vimrc ~/.vimrc$(date '+%s') you@ensipc$ cp -i ~jdpunix/default-config/.vimrc ~/.vimrc
6.2. GNU Emacs
GNU Emacs
(aka Emacs
par la suite) a longtemps été l'éditeur de texte
recommandé à
l'Ensimag. Il est un peu déroutant pour les débutants, mais on
s'habitue rapidement aux commandes de base. L'intérêt d'Emacs
est
qu'il a beaucoup de fonctionnalités 5 qui facilitent la vie du
programmeur, dans la plupart des langages de programmation.
Emacs
est un interpréteur LISP, le premier langage de programmation
dynamique fonctionnel, né 1958. C'est le langage de la première
révolution de l'IA dans les années 1970-1980, et un des ancêtres de
Python. Cet interpréteur exécute par défaut les fonctions d'un éditeur
de texte. Tout est fonction. Appuyer sur A déclenche
l'exécution de (insert-char 65)
. Toutes les fonctions sont
remplaçables dynamiquement. Une fonction peut recevoir facilement en
argument une autre fonction. Une fonction est éditable à la volée (si
! si !). Bref, de très nombreuses combinaisons complexes ailleurs s'écrivent
avec un code qui reste conçis.
Vocabulaire
Comme Emacs est programmable, il a besoin d'un vocabulaire précis pour nommer les objects manipulés. Comme il est ancien, ce vocabulaire est un peu différent de celui utilisé courammment maintenant, mais cette séparation des concepts apporte clarté et illumination.- Frame
- le cadre. Le nom le plus déroutant. C'est une fenêtre dans le sens moderne. L'idée ici est qu'une Frame contient les Windows.
- Window
- la fenêtre. Dans un cadre, elle affiche un Buffer. Plusieurs fenêtres sont affichables dans un même cadre (split).
- Buffer
- le tampon. Un contenu en mémoire affiché par une Window. Il est issu de la visite (ouverture et copie en mémoire) d'un fichier, ou de l'exécution d'une commande. Il peut être affiché simultanément dans plusieurs fenêtres, à des positions différentes.
- File
- fichier, stockage de donnée sur votre disque.
Emacs
Investissez 20 minutes pour faire le premier quart du tutoriel officiel d'Emacs dans la langue de votre choix. Vous apprendrez ainsi les principaux raccourcis de déplacement que vous retrouverez dans votre terminal.
En allant jusqu'au premier 1/3 vous apprendrez aussi quelques raccourcis d'édition du terminal (supprimer un mot, aller à la fin d'une ligne, au début d'une ligne, se déplacer de mots en mots).
you@ensipc$ emacs
Dans le menu "Help", ouvrir la deuxième entrée "Emacs tutorial(choose
language)…" et tapez "french" et .
La possibilité de combinaison de fonctions dans Emacs n'est pas un concept facile à comprendre. Alors voici une action simple en Emacs et difficile à reproduire avec un autre éditeur. Si vous savez faire les trois choses suivantes en Emacs:
- sélectionner des lignes qui contiennent un texte particulier et limiter l'édition à ses lignes (occur, puis mode édition en tapant "e");
- faire un rechercher-remplacer de nombres dans un texte
(expression régulière trouvant une séquence de chiffres et les
groupant:
\([[:digit:]]+\)
); - faire une multiplication par 2 en LISP (pour le groupe 1 d'une
expression régulière,
\,(* 2 \#1)
dans la chaine de remplacement précédente).
Alors vous savez remplacer dans votre sélection de ligne, et uniquement dans la sélection, tous les nombres par le double de leurs valeurs.
En pratique, Emacs
vous aide à indenter votre code,
à trouver rapidement les erreurs de syntaxe, et il peut même taper une
partie du code pour vous, comme beaucoup d'IDE Java, Python ou C++,
mais pour tous les langages utilisés en pratique ! Pour vous, en 1A, en plus,
Latex, R, VHDL, Bash, Makefile, CMake, etc. Il sait aussi lire des PDF
et des ODT, vous donner la date du jour dans le calendrier Maya, vous
permettre de jouer à tetris et sokoban, ou calculer une intégrale
symbolique. Ces exemples n'utilisent aucune de la dizaine de milliers
d'extensions disponibles pour augmenter encore ses capacités.
L'introduction à Emacs
en couleur et en images se trouve sur la page web du cours,
« editeurs/emacs/ ».
Une configuration par défaut, activant les choses les plus utiles est disponible sur les machines de l'Ensimag dans le répertoire de ce cours servant au jeu de piste.
you@ensipc$ mv -i ~/.emacs.d ~/.emacs.d.old$(date '+%s') you@ensipc$ cp -ir ~jdpunix/default-config/.emacs.d ~/.emacs.d
Suivez les explications de la page « Premiers pas avec Emacs et Python ». Revenez à ce document quand vous aurez terminé.
6.3. Visual Studio Code
Visual Studio Code
(VSCode
ou Code
) est l'éditeur de texte
recommandé par défaut à l'Ensimag. Il s'agit d'un éditeur porté
par Microsoft relativement jeune (2015). Code
se veut à la fois
moderne et adapté aux besoins des développeurs. On trouvera donc
l'indentation automatique du code, la coloration syntaxique appropriée
au langage de programmation, l'auto-complétion, et plein d'autres
outils qui facilitent le développement.
À l'instar de ses aînés que sont Emacs
et vim
, Code
propose une
navigation au clavier permettant une certaine rapidité d'écriture et
« d'accélération » de certaines tâches grâce aux nombreux raccourcis proposés.
Néanmoins, l'ensemble des actions sont réalisables à la souris, ce qui pourra
rassurer certains d'entre vous le temps d'apprendre à exploiter pleinement
l'éditeur.
Code
a cependant le défaut d'être un éditeur entièrement graphique.
Contrairement à ses aînés, il ne peut pas être exécuté directement dans un
terminal. Ce seul point fait qu'il
vous est très utile de connaître quelques bases d'Emacs
et
Vim
dès que vous accéderez à une machine distante.
Vous pouvez retrouver une introduction à Code
sur le site web du cours
« editeurs/vscode ».
Code
Suivez les explications de la page « Premiers pas avec Visual Studio Code ». Revenez à ce document quand vous aurez terminé.
Vous devriez sans problème pouvoir résoudre les étapes D1 à D3. Le prochain chapitre vous donnera les clés pour résoudre un bon nombre d'étapes. Si vous avez des difficultés pour le jeu de piste, commencez par avancer dans la lecture du document, et revenez sur le jeu de piste ensuite.
7. Commandes et outils indispensables
7.1. Les informations associées aux fichiers et répertoires
L'organisation des fichiers sous Unix est expliquée en parallèle avec
le gestionnaire de fichier graphique nautilus
vu dans la section 4.3.2.
7.1.1. ls
revisité
Un utilisateur gère deux types d'objets informatiques : les fichiers et les répertoires. La première des choses qu'il doit savoir faire est déterminer le type de chaque objet.
Pour cela, il faut utiliser la commande ls
sous une forme plus élaborée que ce que nous avons fait jusqu'à
présent, en utilisant l'argument -l
(la lettre « l », pas le
chiffre « 1 ») de la commande. Cet argument (l pour long) demande à
ls
de lister les objets en donnant plus d'informations que
simplement leurs noms.
Tapez:
you@ensipc$ ls -l
et vous devez obtenir quelque chose du style de:
total 8 -rw-r--r-- 1 vous etudiants 404 Jul 13 19:12 LISEZ_MOI drwxr-xr-x 5 vous etudiants 4096 Jul 13 19:12 stage-unix/
Vous verrez peut-être apparaître un point (.
) derrière la
première colonne. Vous pouvez l'ignorer pour l'instant.
Cette fois-ci, ls
a listé les objets du répertoire
courant. Pour lister les fichiers d'un répertoire en particulier,
faites :
you@ensipc$ ls -l stage-unix
et vous devez obtenir quelque chose comme :
total 36 -rw-r--r-- 1 vous etudiants 5276 Jul 13 19:12 brouillon drwxr-xr-x 2 vous etudiants 4096 Sep 14 2015 exemples/ -rw-r--r-- 1 vous etudiants 1689 Jul 13 19:12 factorielle.adb -rw-r--r-- 1 vous etudiants 1319 Jul 13 19:12 factorielle.py -rw-r--r-- 1 vous etudiants 127 Jul 13 19:12 hello.adb -rw-r--r-- 1 vous etudiants 118 Jul 11 20:20 hello.py lrwxrwxrwx 1 vous etudiants 6 Jul 13 19:12 lien-vers-shell -> shell// drwxr-xr-x 2 vous etudiants 4096 Jul 13 19:14 livre/ drwxr-xr-x 3 vous etudiants 4096 Jul 13 19:12 shell/
ls -l
liste les fichiers en en mettant un par ligne, le nom de
l'objet se trouvant à la
dernière colonne. Les autres colonnes contiennent d'autres
informations que le système mémorise avec chaque objet.
pour la première colonne, nous ne nous intéresserons ici qu'au premier caractère (voir section 7.1.4 pour le reste). Ce premier caractère est :
- soit «
-
», indiquant ainsi que l'objet est un fichier normal; - soit «
d
» indiquant ainsi que l'objet considéré est un répertoire ; - soit «
l
», indiquant ainsi que l'objet est un lien symbolique (cf. section 7.2.3).
Vous pouvez donc voir que les objets ayant pour nom
hello.py
,brouillon
etfactorielle.py
sont des fichiers, alors que les objets de nomcourrier
etlivre
sont des répertoires, et l'objetlien-vers-shell
est un lien symbolique.- soit «
- la troisième colonne contient le nom du propriétaire de l'objet, ici
vous
. - la quatrième colonne contient le nom du groupe de l'objet, ici
ensi1a
. - la cinquième colonne contient la taille de l'objet exprimée en octets,
par exemple 5276 octets pour le fichier
brouillon
. - les colonnes 6, 7 et 8 contiennent la date et l'heure de la dernière
modification de l'objet, par exemple le 13 juillet de l'année
courante, à 19h14
pour l'objet
livre
.
Le gestionnaire de fichiers graphique nautilus
affiche une icône
spécifique pour différencier les répertoires des fichiers. Mais ce n'est
pas la seule information que l'on peut observer avec cet outil :
Les informations détaillées avec nautilus
Basculez l'affichage de nautilus
, pour le passer en mode Liste détaillée
(icône « View items as a list » à droite de la barre de localisation).
nautilus
indique aussi un type (image, archive…)
pour le fichier. Cela n'est pas stocké par le fichier ou le répertoire,
mais « deviné » en fonction de son extension ou du début de son
contenu. La commande essayant de deviner le type d'un
fichier est :
you@ensipc$ file nom_du_fichier
Les « tailles » des répertoires représentent ici l'espace disque occupé
par « l'objet répertoire », mais pas par les fichiers qu'il contient. Pour
avoir la taille des fichiers et des sous-répertoires, on peut faire
clic droit puis Propriétés...
sur un répertoire avec
nautilus
, ou utiliser les commandes vues dans la
section 7.1.6.
7.1.2. Notion de répertoire courant : cd
et pwd
À tout instant, le système connaît un répertoire particulier de
l'utilisateur comme étant son répertoire courant, et les commandes ont
un effet relatif à ce répertoire. Par exemple la commande ls
qui a été vue précédemment ne liste pas tous les fichiers et
répertoires de l’utilisateur, mais seulement ceux qui se trouvent dans
le répertoire courant (En anglais, working directory). On peut
changer de répertoire avec la commande cd
(pour C
hange
D
irectory), et afficher le nom du répertoire courant avec la
commande pwd
(pour P
rint
W
orking D
irectory).
cd
Essayez de changer de répertoire avec cd stage-unix/livre
, listez le
contenu avec la commande ls
, puis revenez.
7.1.3. Quelques répertoires particuliers
7.1.3.1. Répertoire courant et répertoire parent : . et ..
Chaque répertoire contient deux répertoires particuliers : « .
», qui désigne le répertoire courant,
et « ..
» qui désigne son répertoire parent. Ce dernier
s'utilise par exemple pour revenir « un niveau de répertoire
au-dessus » avec cd ..
.
Le répertoire « .
» peut paraître inutile : « cd .
» est
une commande qui ne fait rien, « ls ./fichier
» est équivalent à
« ls fichier
», mais il peut être utile, par exemple dans la
commande mv stage-unix/LISEZ_MOI .
que nous avons vu un peu plus
haut.
ls
Essayez de faire ls -a
La commande ls -a
permet également d'afficher les répertoires et
fichiers cachés. On distingue ces fichiers des autres par la présence
d'un point (.) en première position dans leur nom. Par défaut, la
commande ls
ne les affiche pas.
7.1.3.2. Le répertoire « HOME » : ~
Nous l'avons vu : sous Unix, chaque utilisateur a un répertoire
personnel, ou répertoire « maison ». On peut y accéder avec le
caractère ~ (lire « tilde »). Par exemple, ls -l ~/LISEZ_MOI
donne les
détails sur le fichier LISEZ_MOI
se trouvant dans votre
répertoire personnel, quel que soit le répertoire dans lequel on
l'exécute.
La commande cd
toute seule change l'état de votre shell pour
le replacer dans votre répertoire d'origine. C'est l'équivalent de
cd ~
.
7.1.3.3. Le répertoire racine : /
Le répertoire racine vu en section 4.3.6.2
s'appelle aussi « /
» (slash en anglais).
Répertoires particuliers
Essayez la commande cd ~jdpunix
. Elle vous amène dans le
répertoire de l'utilisateur jdpunix
. Faites maintenant ls
pour en voir le contenu.
Depuis ce répertoire, faites ls ~
pour afficher le contenu du vôtre. Faites la même chose avec
/
à la place de ~ jdpunix
, puis revenez chez vous
avec cd ~/
, ou plus simplement cd
.
7.1.4. Droits des fichiers et répertoires
Chaque fichier (ou répertoire) possède un ensemble d'attributs définissant les droits d'accès à ce fichier pour chaque utilisateur du système. Chaque fichier offre des droits spécifiques à trois catégories d'utilisateurs exclusives :
- la catégorie user concerne le propriétaire principal du fichier.
- la catégorie group concerne un ensemble d'utilisateurs ayant donc des droits particuliers sur le fichier. Chaque utilisateur appartient à un ou plusieurs groupes. C'est l'administrateur système qui gère ces groupes.
- la catégorie others concerne tous les autres utilisateurs.
Lorsqu'un utilisateur est susceptible d'appartenir à plusieurs catégories, le système considère en fait qu'il appartient à la plus prioritaire : user > group > others. A quel groupe vos fichiers appartiennent-ils en majorité ?
Les droits de chacune de ces catégories d'utilisateurs sur un fichier sont définis par l'autorisation ou l'interdiction de chacun des trois types d'accès suivant : lecture (Read en anglais), écriture (Write), et exécution (eXecute).
Pour les répertoires, Read correspond au droit de lister
le contenu (commande ls
) ; Write correspond au droit
de créer ou détruire un objet dans le répertoire (commande
rm
) ; et eXecute correspond au droit de traverser
le répertoire (commande cd
).
Chaque objet possède donc neuf attributs pour déterminer les droits
d'accès de chaque utilisateur. Les attributs sont listés avec l'aide
de la commande ls -l
vu précédemment (rappel : le premier
caractère est le type d'objet cf. section 7.1.1) ;
Les attributs sont regroupés par catégorie d'utilisateurs : sur ces
neufs caractères, les trois premiers concernent les droits user,
les trois suivants les droits group, et les trois derniers les
droits others. Lorsque l'accès est interdit, le caractère correspondant est un
tiret « -
». Lorsque l'accès est autorisé, le caractère correspondant est
r
, w
ou x
suivant le type d'accès.
Par exemple, drwxr-xr--
indique que le fichier correspondant est
un répertoire qui autorise à son propriétaire tous les types d'accès,
interdit aux utilisateurs du groupe de créer ou détruire le contenu
du répertoire, et autorise aux autres uniquement de lister le contenu
sans y accéder avec la commande cd
.
Droits
Essayez de trouver des répertoires qui vous sont interdits (par exemple chez votre voisin) ou de renommer des fichiers qui ne vous appartiennent pas. Quel est le message d'erreur ?
7.1.5. Modification des droits d'accès : chmod
La commande pour modifier les droits d'accès des fichiers est :
you@ensipc$ chmod permissions liste_d_objets
Les droits sont désignés par une liste d'expressions séparées par des virgules. Ces expressions indiquent :
- les catégories d'utilisateurs concernées par le changement :
u
pour user ;g
pour group ;o
pour others ;- et
a
pour toutes
- suivies de l'opération de changement :
- soit
+
pour autoriser ; - soit
-
pour interdire.
- soit
- et finalement les types d'accès concernés (
r
,w
etx
).
Par exemple, la ligne
suivante autorise le propriétaire et le groupe en écriture et
exécution, et interdit le groupe et les autres en lecture, sur le
fichier LISEZ_MOI
.
you@ensipc$ chmod ug+wx,go-r LISEZ_MOI
Ainsi, si LISEZ_MOI
était en mode rw-r--r--
avant
l'exécution de cette commande, il est en mode rwx-wx---
après.
Droits
Faites des expériences pour répondre aux questions suivantes :
- Pouvez-vous modifier un fichier sur lequel vous avez les droits en écriture, mais qui se trouve dans un répertoire dans lequel vous n'avez pas le droit d'écrire ?
- À quelles conditions pouvez-vous lire dans un fichier qui se trouve dans un répertoire interdit à la lecture pour vous ? Et dans un répertoire interdit en exécution ?
- Que se passe-t-il si vous interdisez en exécution le répertoire courant ? Peut-être ne vaut-il mieux pas essayer sur son répertoire d'origine, pourquoi est-ce dangereux ?
ACL : Access Control List
Il est possible de positionner beaucoup plus finement les droits
d'accès afin de ne les donner par exemple qu'à un utilisateur en
particulier. Cela est réalisé avec les commandes getfacl
et
setfacl
. Par exemple, pour donner le droit à l'utilisateur
cassagne
de lire le fichier toto
et le répertoire tutu/
:
you@ensipc$ setfacl -m u:cassagne:r toto.txt you@ensipc$ setfacl -m u:cassagne:rx tutu/
Il est possible d'appliquer ses droits récursivement (-R
) aux
sous-répertoires de tutu/
et de les rendre héritables (d:
pour
default) pour les nouveaux répertoires qui seront créés plus tard:
you@ensipc$ setfacl -Rm d:u:cassagne:rx tutu/
Pour plus d'informations, man getfacl
et man setfacl
.
7.1.6. Utilisation de l'espace disque : du
et df
La commande du
(pour d
isk u
sed)
permet de connaître l'utilisation d'espace disque d'un
fichier ou d'un répertoire. Sans argument, elle donne l'utilisation du
répertoire courant, mais peut aussi prendre un autre répertoire comme
argument. En général, on l'utilise avec l'option -s
(s
ummary)
et -h
(h
uman readable).
La commande df
(pour d
isk f
gree)
donne l'espace disque pour chaque disque dur de la machine
(en fait, chaque partition).
Espace disque et nombre de fichiers
Utilisez la commande du -sh
dans votre répertoire personnel.
Comparez avec df -h
.
Avec la commande du --inodes
vous comptez le nombre de fichiers (le
nombre d'inodes). Essayez dans votre répertoire personnel, vous
pourriez être surpris.
7.2. Manipulation de fichiers : contenu, organisation
7.2.1. Visualisation du contenu: commandes more
et less
Pour voir le contenu d'un fichier, le plus efficace est d'utiliser la
commande less
qui admet en paramètre
le nom du fichier concerné (sur certains systèmes, la commande less
n'est pas disponible et il faut se contenter de l'antique more
,
qui est à peu près la même, sauf qu'elle en fait moins !).
En utilisant la commande ls
, vous avez vu que vous disposez d'un
fichier dont le nom est factorielle.py
, vous allez regarder son contenu.
Pour cela, tapez:
you@ensipc$ less factorielle.py
Sur votre écran doit s'afficher le début du fichier. Quand on est
sous le contrôle de less
, l'utilisateur peut émettre plusieurs
ordres, dont les principaux sont:
, pour faire apparaître une ligne supplémentaire du fichier.
- Espace, (c'est-à-dire appui sur la barre d'espacement), pour faire apparaître une page d'écran supplémentaire du fichier.
- j et k pour descendre et remonter dans le texte (les deux touches sous l'index et le majeur de votre main droite dans la position de repos).
- q pour arrêter l'exécution de
less
. - / pour rechercher un mot dans le texte.
- & pour n'afficher que les lignes contenant un motif de texte.
- h pour avoir de l'aide.
less
Utilisez ces ordres pour constater leur effet et regarder le contenu
du fichier chap1
(toujours dans le répertoire ~ /stage-unix/livre
).
Page par page
Une autre utilisation courante de la commandeless
est de
regarder la sortie d'une commande page par page. Essayez la
commande ls /usr/bin/
, puis ls /usr/bin/ | less
(le caractère
|
se lit « pipe »,
et s'obtient avec AltGr+6 sur un
clavier azerty. Il sera expliqué en détail à la section 7.9).
7.2.2. Astuce : Utilisation efficace du terminal
Au point où on en est, le lecteur a le droit de se demander comment être efficace avec un interpréteur de commandes : les commandes sont parfois longues, et s'il faut les taper en entier, une interface graphique serait plus rapide. La réponse est, bien entendu, qu'on ne tape pas tout !
Voici quelques exemples :
L'historique
On peut reprendre une commande déjà exécutée en remontant dans l'historique avec la touche ↑ (et ↓).
Complétion de commande
On peut taper le début du nom d'une commande et appuyer sur la touche tabulation, ou ↹ (au-dessus de Maj) : l'interpréteur complète tout seul. Lorsqu'il y a plusieurs possibilités, on peut appuyer une seconde fois pour obtenir la liste des possibilités.
Complétion de noms de fichiers
De la même manière, lorsqu'une commande prend en argument un nom de fichier, on peut entrer le début du nom et appuyer sur ↹ pour compléter.
Édition de ligne
Les commandes d'éditions de base sont disponibles dans l'interpréteur de commande : ← et → pour se déplacer, Suppr et ⇦ pour effacer… combiné avec l'historique, on peut exécuter une série de commandes similaires rapidement.
Tab
Depuis votre répertoire personnel, entrez fire
, puis appuyez
sur ↹. Effacez la ligne (en faisant Ctrl+u, ou avec la touche
⇦ , puis entrez less LIS
et appuyez sur ↹.
7.2.3. Notion de lien symbolique
Un lien symbolique est une référence à un fichier ou répertoire. Pour créer un lien symbolique, on utilise :
you@ensipc$ ln -s chemin_pointé nom_du_lien
Par exemple, pour créer un lien vers son ~
, sous le
répertoire courant, on ferait :
you@ensipc$ ln -s ~/ chezmoi
On peut utiliser ls -l
pour identifier la cible d'un lien
symbolique cf. section 7.1.1.
La plupart des opérations (ouverture, lecture, écriture) sur un lien
symbolique le déréférencent automatiquement et opèrent sur sa destination.
La suppression (rm
) et le déplacement/renommage (mv
) portent
sur le lien lui-même et n'affectent pas la cible.
La commande rm chezmoi
effacera donc le lien et non pas votre home !
Les liens symboliques sont connus sous le nom de « raccourcis » (.lnk
)
sous Windows et « alias » sous Mac OS.
7.2.4. Recherche de fichier : find
et grep
7.2.4.1. Trouver un fichier : find
La commande find
est une bonne illustration
de la différence d'expressivité entre les interfaces graphiques
traditionnelles et une interface de type textuelle.
Cette commande permet, comme son nom l'indique, de trouver un fichier. Il existe de très nombreux critères possibles. La liste des critères et des tests est disponible dans la page de manuel (pour apprendre à se servir du manuel : cf. section 7.5 ).
La syntaxe de la commande est de la forme :
you@ensipc$ find Répertoire_de_départ Critères_de_sélection
Par exemple, pour trouver le fichier nommé toto.txt
dans le
répertoire courant ou un de ses sous-répertoires, on fait :
you@ensipc$ find . -name toto.txt
Qu'il faut lire « cherche (find
) dans le répertoire courant
(.
) et ses sous-répertoires un fichier (ou répertoire) nommé
(-name
) toto.txt
». On peut aussi demander la liste
des fichiers se terminant d'une certaine manière :
you@ensipc$ find . -name '*.py'
« * » veut dire « n'importe quelle chaine » dans ce contexte.
N'oubliez pas les guillemets autour de *.py
ou vous pourriez
avoir des surprises.
On peut aussi retrouver, par exemple, les fichiers que l'on a édité il y a 6 jours dans le répertoire courant par la commande :
you@ensipc$ find . -mtime 6
Édition précédente
Essayez de retrouver tous les fichiers que vous avez édité, y compris implicitement, lors de la précédente séance.
Utilisation avancée de find
Une des différences entre find
et les outils graphiques, c'est
la simplicité avec laquelle on peut exprimer la combinaison de ces
critères : les grouper avec « ()
», faire un ET logique avec
-a
ou un OU logique avec -o
, ou encore faire
la négation \!
d'un critère. On peut aussi indiquer une
valeur inférieure ou supérieure à une quantité en ajoutant +
ou -
.
Par exemple, on peut retrouver tous les fichiers Python (source et
bytecode) que l'on a édité pendant la semaine dernière (il y a plus de
6 fois 24 heures et moins de 14 fois 24 heures) sauf ceux que l'on a
modifié après le fichier toto.py
avec la commande suivante.
you@ensipc$ find . \( -name "*.py" -o -name "*.pyc" \) \ -ctime +6 -ctime -14 \! -newer toto.py
Le caractère « \
» en fin de ligne est utilisé pour indiquer
que la commande continue sur la deuxième ligne.
Comme vous l'avez remarqué, le ET (-a
) n'apparaît pas dans les
exemples car c'est l'opérateur par défaut.
7.2.4.2. Rechercher une chaîne dans un fichier : grep
La commande grep
permet de chercher
une chaîne de caractères dans un ou plusieurs fichiers. On l'utilise
comme ceci :
you@ensipc$ grep chaine-a-rechercher fichier
(avec éventuellement plusieurs fichiers à la place de fichier).
Utilisation de grep
Dans un terminal, placez-vous dans le répertoire stage-unix/livre
(avec
cd stage-unix/livre
, ou simplement cd livre
si vous étiez déjà
dans stage-unix
). Essayez d'entrer la commande :
you@ensipc$ grep homme chap1 chap2 chap3
Ce n'est pas assez joli ? Essayez ceci :
you@ensipc$ grep --color homme chap1 chap2 chap3
En fait, la commande grep
est aussi très utile pour « filtrer »
la sortie d'une autre commande. Par exemple, si on fait (nous verrons
un peu plus loin que cette commande liste tous les programmes tournant
sur la machine) :
you@ensipc$ ps -A
La sortie de la commande est assez longue (très longue si on
l'exécute sur un serveur comme pcserveur.ensimag.fr
lorsqu'il est
utilisé par beaucoup d'étudiants et étudiantes en même temps). Nous avons vu qu'il
était possible de la voir page par page avec ps -A | less
. Sur
le même principe, si nous ne voulons voir par exemple que les lignes
qui parlent de Gnome
, on peut faire :
you@ensipc$ ps -A | grep gnome
Expressions régulières
En fait, grep
ne cherche pas vraiment des chaînes, mais des
expressions appelées « expressions régulières ». Par exemple :
you@ensipc$ grep 'ab*c'
recherche un a
suivi d'un nombre quelconque de
b
, suivi d'un c
. Vous en apprendrez beaucoup plus en
cours de théorie des langages.
7.3. Compression et archivage
7.3.1. Compression avec gzip
Les fichiers compressés utilisent moins d'espace disque et se téléchargent plus rapidement. Vous pouvez compresser un fichier à l'aide d'un outil de compression.
Format de fichiers et communications.
Pensez à vérifier si l'outil pour décompresser est disponible avant d'envoyer un fichier compressé à quelqu'un.
Le logiciel de compression standard sous Unix est gzip
. La
commande gzip
crée un fichier
compressé et la commande gunzip
décompresse un fichier
compressé. Par convention, les fichiers compressés avec cette méthode
se voient attribuer l'extension .gz
. Par exemple :
you@ensipc$ gzip nom_du_fichier
Le fichier sera compressé et sauvegardé comme
nom_du_fichier.gz
. L'opération inverse est effectuée avec :
you@ensipc$ gunzip nom_du_fichier.gz
7.3.2. Archivage avec tar
Une archive tar
regroupe plusieurs
fichiers ou répertoires dans un seul fichier. Une archive tar
n'est pas compressée et peut être vue comme une concaténation de
fichiers. Il s'agit d'une bonne manière pour créer des sauvegardes.
Généralement, le nom d'une archive tar
se termine par
l'extension .tar
.
Pour créer une archive tar
qui contient tout un répertoire, tapez :
you@ensipc$ tar cvf nom_du_fichier.tar repertoire
L'argument qui suit immédiatement l'option f
est considéré
comme l'archive par tar
. Par exemple, si vous utilisez la
commande (dangereuse)
you@ensipc$ tar cvf tp-algo.py fact.py
tar va créer une archive appelée tp-algo.py
contenant le
fichier fact.py
. Si le fichier tp-algo.py
existait
déjà, il est écrasé ! En un mot, oublier le nom de l'archive
dans la commande tar
peut vous faire perdre votre
TP.
Pour extraire le contenu d'un fichier tar
, entrez :
you@ensipc$ tar xvf nom_du_fichier.tar
7.3.3. Archivage puis compression avec tar
La commande tar
ne compresse pas automatiquement les fichiers.
Une archive tar
peut être compressée avec gzip
et dans ce
cas, on lui attribuera généralement une extension .tar.gz
ou .tgz
.
Vous pouvez effectuer un archivage et une compression dans la même opération avec :
you@ensipc$ tar czvf nom_du_fichier.tar.gz repertoire
Et pour décompresser et extraire en même temps :
you@ensipc$ tar xzvf nom _du_fichier.tar.gz
Formats de compression pour tar
Cette séparation de la compression permet à GNU tar, celui de votre Linux, de gérer de nombreux autres formats de compression modernes, comme XZ ou ZSTD.
7.3.4. Archivage et compression avec zip
Les fichiers .tar.gz
sont la tradition sous Unix. Ils sont
également lisibles sous Windows avec des logiciels comme WinZip, mais
si vous échangez des fichiers avec des utilisateurs non-Unix, vous
pouvez utiliser
le format zip
pour ne pas perturber
leurs habitudes. Pour archiver et comprimer à l'aide de zip
,
entrez ceci :
you@ensipc$ zip -r nom_du_fichier.zip repertoire
Pour décompresser et extraire le contenu d'un fichier zip
, entrez :
you@ensipc$ unzip nom_du_fichier.zip
7.4. Impression de documents : a2ps
, cancel
et lpstat
Il est souvent utile d'imprimer des documents électroniques sur papier. L'Ensimag dispose de plusieurs imprimantes (plus précisément, de copieur-scanner-imprimantes). Le système utilise une file d'attente partagée : vous ne voyez qu'une imprimante (Toshiba). Quand vous lancez l'impression, rien ne se passe : vous devez vous rendre sur un copieur (celui de votre choix), vous identifier et lancer l'impression.
Le code à entrer pour vous identifier est disponible dans la page https://impression.grenoble-inp.fr/. Les instructions détaillées sont affichées au-dessus de chaque copieur.
Pour plus d'information, consulter la page « Système de gestion des impressions » de l'intranet de l'Ensimag. Si vous lancez une impression et que vous réalisez que vous vous êtes trompés, vous n'avez rien à faire : la demande d'impression sera supprimée automatiquement si vous n'allez pas la chercher.
Le système est très spécifique à l'Ensimag. Traditionnellement, sous
Unix, on choisit son imprimante au moment de lancer l'impression, et
on peut utiliser les commandes lpstat -p
nom-de-l'imprimante pour voir
les travaux en attente, cancel
numéro-du-job pour annuler s'il
n'est pas trop tard.
Vous pouvez également utiliser les fonctions « copieur » et « scanner » : suivez les instructions affichées au-dessus des copieurs.
Attention, vous avez un quota d'impression, ne gaspillez pas !
7.4.1. Imprimer un document
La plupart des logiciels graphiques auxquels vous demanderez une impression discutent directement avec le serveur d'impression. Lancer une impression est donc relativement simple.
Mais il existe aussi des programmes en ligne de commande pour faire la même chose pour tous les autres cas.
Une commande simple est :
you@ensipc$ a2ps nom-du-fichier
Elle s'occupe de convertir les formats de fichiers pour les images, ou bien de mettre en forme les documents textuels comme les codes sources par exemple. Par défaut, elle envoie le résultat à l'imprimante.
Impression dans un fichier
Il est aussi possible d'envoyer le résultat de a2ps
dans un
fichier (donc sans l'imprimer), en utilisant l'option -o
:
a2ps -o toto.ps moncode.py
. Essayez de le faire avec votre code Python avec
plusieurs vignettes par pages en ajoutant le nombre de vignettes en
option entre -1
et -9
.
Les commandes standards
Les commandes standards d'impression sont lpr
et lp
.
Cependant, elles n'impriment que les fichiers PDF ou PostScript, d'où l'avantage
d'utiliser la commande a2ps
, qui s'occupe pour vous des
conversions et mises en forme.
Format d'impression
Sous Unix, la situation est relativement simple : toutes les impressions sont faites en PDF ou PostScript. Pour pouvoir imprimer un document il suffit donc d'être capable de le convertir en PDF ou PostScript.
Conversion entre PostScript et PDF
PostScript est l'ancêtre de PDF. Ils sont structurellement proches.
PDF est optimisé pour des manipulations automatiques alors que
PostScript est un langage de programmation en texte compréhensible et
manipulable par un humain. Comme la visualisation de documents PDF
est souvent plus facile dans d'autres systèmes, il est souvent
intéressant, et facile, de convertir d'un format dans l'autre avec
les commandes ps2pdf
et
pdf2ps
.
Comme toutes les impressions utilisent les formats PDF ou PostScript, il existe de nombreux outils capables de manipuler ces fichiers pour changer la présentation, faire des livres (comme ceci !) au format A5, extraire des pages, ou une partie d'une page, etc.
7.4.2. Plus d'information
Vous trouverez plus de détails sur le fonctionnement de l'impression, les noms des imprimantes, sur BuBu Wiki, « ensimag/impression/ ».
7.5. Obtenir de l'aide : --help
et man
et info
Au point où nous en sommes, vous avez déjà vu une bonne dizaine de commandes. À vrai dire, il en existe en fait plusieurs milliers sur la plupart des machines Unix. Mais alors, faut-il tout apprendre par cœur ? Heureusement, non !
Pour bénéficier d'une aide rapide, vous pouvez tout d'abord taper le
nom de votre commande suivi de
--help
comme, par exemple,
mkdir --help
Il existe également un système de documentation un peu
rebutant au départ, mais assez bien fait : le man
,
ou « manuel ». Le style est en général
assez technique, les « pages de man » sont rarement le moyen le plus
simple de se familiariser avec une commande complexe, par contre,
c'est souvent très efficace comme référence, ou pour chercher
une information précise quand on sait ce qu'on veut.
L'utilisation usuelle est simplement man commande
, où commande
est la commande pour laquelle vous voulez obtenir de
l'aide. Par exemple, pour obtenir de l'aide sur la commande ls
,
tapez man ls
. Vous devez voir un texte d'aide, et ce texte est
en fait affiché avec la commande less
, donc vous pouvez naviguer
dans ce texte comme nous l'avons vu en section 7.2.1. En
particulier, la touche / permet de rechercher une chaîne de
caractère rapidement dans la page.
Couleurs dans ls
Dans la page de man de ls (man ls
), trouvez la partie qui
décrit l'option permettant d'avoir la couleur (tapez /color
).
man
permet en fait beaucoup d'autres choses. Mais pour connaître
les possibilités de man
, tout est dans man man
, que tout
bon débutant sous Unix devrait lire !
Il existe un autre système de documentation sous Unix, parfois plus
convivial que man
: la commande info
.
Tout comme le man
, vous pouvez apprendre tout ce dont vous avez besoin avec
info info
, notamment un excellent petit tutoriel.
Les commandes comme cd
, qui changent l'état interne de votre shell,
sont décrites dans la page de man du shell (man bash
). Mais il est
également possible d'obtenir uniquement la documentation de la
commande en tapant help cd
.
7.6. Que se passe-t-il sur le serveur ?
Vous travaillez sur un serveur partagé par tous les
étudiants et étudiantes de votre promotion. Commençons par regarder qui est en train
d'exécuter des programmes sur le même serveur que vous : c'est la
commande users
.
Pour savoir qui utilise le plus de ressources sur la machine, essayez
la commande top
. Elle liste les
processus (un processus est un programme en train de s'exécuter) par
ordre décroissant d'utilisation du processeur.
Enfin, pour avoir tous les détails sur tous les processus qui
s'exécutent sur la machine, on peut utiliser la commande ps
.
ps
Essayez la commande ps -u votre-login
. Elle affiche la
liste des processus lancés par votre utilisateur Unix. Faites ps u -u votre-login
: la liste est la même, mais plus
joliment présentée. Terminez par ps -A
pour avoir tous les
processus du système.
lsof
:
Il est possible d'avoir aussi la liste complète des fichiers ouverts
vous appartenant avec la commande lsof
.
7.6.1. Notion de programme
Un programme informatique est un fichier contenant des ordres qui indiquent à l'ordinateur ce qu'il doit faire. Généralement, il se présente sous la forme d'une ou plusieurs séquences d'instructions. Un ordinateur sans programme ne fait absolument rien. En fait, c'est la capacité à suivre ces ordres qui distingue un ordinateur d'une simple machine à calculer.
7.6.2. Notion de processus
En toute généralité, un processus est un programme en cours
d'exécution. Sous Unix, du
point de vue de l'utilisateur, les processus semblent s'exécuter en
parallèle. En réalité, comme il y a souvent un nombre plus
petit de processeurs que de processus, le système d'exploitation permet
à chacun des processus de s'exécuter pendant un court laps de temps,
à tour de rôle. En
principe, sauf surcharge de la machine, cet entrelacement est
suffisamment rapide et bien ordonnancé pour que l'utilisateur ne le
perçoive pas. C'est pourquoi lorsque beaucoup de programmes utilisant
des ressources importantes (comme Firefox
) sont lancés en même
temps, l'exécution de chacun de ces programmes est ralentie.
Chaque processus a son propre espace de données et état d'exécution, qui le rend indépendant des autres.
7.6.3. La différence entre un processus et une fenêtre
Pour illustrer cet aspect, on va réaliser l'expérience suivante, qui permettra aussi de distinguer entre « processus » et « fenêtres » :
Fenêtre versus processus
Affichez la liste de vos processus, par la commande
ps
:you@ensipc$ ps
Lancer
Emacs
depuis l'interpréteur de commande :you@ensipc$ emacs &
On expliquera le rôle du
&
ultérieurement à la section 8.3. Remarquez le numéro écrit dans le terminal, après le nombre entre crochet. C'est un numéro (unique) qui sert à identifier le processus: c'est son PID (processus identifier).- Observez de nouveau la liste de vos processus. Il y en a un de
plus que précédemment: le
emacs
qui vient d'être lancé, repérable à son PID justement. - Tapez un court texte dans
Emacs
et le sauver dans un fichiertoto1
. - Ouvrir une nouvelle fenêtre (New Frame dans le menu).
- Observer la liste des processus (avec
ps
) : il n'y a pas de nouveau processus. - Dans la nouvelle fenêtre, créer un nouveau fichier
toto2
(Visit New File dans le menu File) et taper du texte, puis sauver. - Observez la liste des tampons dans une des deux fenêtres (menu
Buffers) (
toto1
ettoto2
sont tous les 2 présents). Essayer d'ouvrirtoto1
dans la fenêtre detoto2
, que se passe-t-il ? - Lancez de nouveau
emacs
depuis l'interpréteur de commande. - Observez la liste des processus: il y a un nouveau processus
emacs
. - Tapez et sauver un texte
toto3
dans ce dernieremacs
. - Revenez sur la première fenêtre de
toto1
:toto3
est-il présent dans la liste des fenêtres ? Pourquoi ? Ouvrir le fichiertoto3
depuis cette première fenêtre et le modifier: les modifications sont-elles prises en compte dans la dernière fenêtre? - Sans sauver le fichier
toto3
dans la première fenêtre, modifieztoto3
dans la dernière fenêtre. Essayez de sauver le fichier dans la première fenêtre. Que se passe-t-il? Essayez de sauver le fichier dans la dernière fenêtre. Que se passe-t-il?
Expliquons maintenant ces comportements. Dans le premier cas, les 2
fenêtres sont gérées par un même processus. Celui-ci connaît donc les
informations de chacune des 2 fenêtres. Dans le deuxième
cas, on a lancé un nouveau processus. Son espace de données est
disjoint du processus précédent: les exécutions de ces 2 processus
sont indépendantes. En particulier, chacun des processus ignore qu'un
autre processus est en train de modifier le même fichier ; ce n'est
qu'au moment où l'autre processus sauvegarde le fichier sur le disque
qu'il peut éventuellement s'en apercevoir. Si des modifications
avaient été apportées au fichier dans les 2 processus, celles d'un des
2 processus vont être à refaire. Afin d'éviter des problèmes de ce
genre, pour les applications (Firefox
, votre éditeur
favori, etc) qui offrent la possibilité d'ouvrir plusieurs fenêtres,
il est recommandé d'utiliser cette possibilité plutôt que de lancer
plusieurs processus.
Enfin, tout processus appartient à un utilisateur (appelé le propriétaire). Les droits d'un processus sur les fichiers sont ceux de son ou sa propriétaire. En fait, tout programme qui s'exécute est un processus. Ainsi, la vérification des droits sur les fichiers, par exemple lors de l'exécution d'une commande source{rm}, se fait au regard du propriétaire du processus correspondant.
7.7. Arrêter des processus, plus ou moins gentiment
En général, pour arrêter un programme, le programme lui-même fournit une fonctionnalité « quitter », dans un menu, ou bien en cliquant sur la case « fermeture » de la fenêtre graphique en haut à droite.
Mais il arrive qu'on veuille forcer un programme à se terminer. Sous Windows, on le ferait avec le gestionnaire des tâches (accessible par exemple en faisant Control+Alt+Suppr). Voici plusieurs solutions sous Unix :
La première est d'utiliser la commande kill
. Cette commande prend en argument
un numéro de processus, donc, on l'utilise en général après avoir
lancé la commande ps
.
Utilisation de kill
Dans un terminal, lancez la commande
you@ensipc$ less LISEZ_MOI
Ouvrez
un deuxième terminal, dans lequel vous lancez la commande ps -u votre-login
pour afficher tous les processus que vous avez
lancé. Vous devriez trouver le processus less
que nous venons
de lancer.
Faites maintenant kill pid
, où pid est le numéro
du processus less
(on peut utiliser la souris pour
copier-coller ce numéro). Vous devriez voir less
se terminer
et dans l'autre terminal.
En fait, la commande kill
« demande » au processus de se
terminer, mais le processus à qui on envoie ce signal peut l'ignorer.
Dans ce cas, on peut utiliser la commande kill -9
, qui tue le
processus sans sommation.
Forcer un processus à se terminer
Refaites la manipulation précédente, en utilisant kill -9
à la
place de kill
. Comparez le message donné par less
avec
le précédant.
kill -9
Cette commande ferme instantanément l'application lancée sans possibilité pour elle de sauvegarder le travail en cours.
Tuer tous les processus.
Pour tuer tous les processus de l'utilisateur courant, on peut faire
kill -9 -1
. En particulier, elle tue votre gestionnaire de
fenêtre : c'est donc un moyen efficace mais très violent de terminer
sa session ! Il n'y a aucune sauvegarde possible du travail en cours
Tuer un processus uniquement à partir de son nom.
La commande pkill nom-du-programme
est une variante de kill où, en paramètre, on
précise non pas le pid du processus mais son nom.
Une deuxième solution, plus pratique lorsque l'application a été
lancée dans un terminal, est d'appuyer sur Ctrl+C. Le terminal envoie alors un
signal de terminaison au processus courant. C'est équivalent à faire
kill
.
Tuer une application avec Ctrl+c
Faites ls
pour vérifier l'existence dans le répertoire courant
d'un fichier ayant pour nom boucle
. S'il n'est pas dans le
répertoire courant, vous pouvez le trouver avec find . -name boucle
.
Ce fichier contient un programme dont l'exécution ne finit
jamais. Lancez-le en tapant:
you@ensipc$ boucle
après quelques secondes d'exécution, tapez Ctrl+C et vérifiez que le programme a bien été interrompu.
S'il n'existe pas dans votre compte, voici un code shell pour le programme boucle
#! /bin/sh while true; do printf "\r * " ; sleep 0.3 printf "\r *** " ; sleep 0.3 printf "\r ***** " ; sleep 0.3 printf "\r ******* " ; sleep 0.3 printf "\r ********* " ; sleep 0.3 printf "\r *********** " ; sleep 0.3 printf "\r ************* " ; sleep 0.3 printf "\r *************** " ; sleep 0.3 printf "\r *****************" ; sleep 0.3 printf "\r *************** " ; sleep 0.3 printf "\r ************* " ; sleep 0.3 printf "\r *********** " ; sleep 0.3 printf "\r ********* " ; sleep 0.3 printf "\r ******* " ; sleep 0.3 printf "\r ***** " ; sleep 0.3 printf "\r *** " ; sleep 0.3 printf "\r * " ; sleep 0.3 done
Une troisième solution, qui permet de suspendre l'affichage lorsque l'application a été lancée dans un terminal, est d'appuyer sur Ctrl+s. Le terminal bloque le processus s'il écrit dans le terminal. Cela permet d'arrêter le défilement d'un processus "verbeux" pour avoir le temps de le lire. Pour laisser le processus continuer, il suffit appuyer sur Ctrl+q.
Raccourcis clavier dans les terminaux
Attention, les raccourcis comme Ctrl+s et Ctrl+q sont utilisés dans les applications graphiques. Il est facile de se tromper de fenêtres en les tapant.
Bloquer et débloquer l'affichage d'une application avec Ctrl+s
et Ctrl+q
Faites ls
pour vérifier l'existence dans le répertoire courant
d'un fichier ayant pour nom boucle
. S'il n'est pas dans le
répertoire courant, vous pouvez le trouver avec find . -name boucle
.
Ce fichier contient un programme dont l'exécution ne finit
jamais. Lancez-le en tapant:
you@ensipc$ boucle
après quelques secondes d'exécution, tapez alternativement Ctrl+s puis Ctrl+q et vérifiez que le programme a bien été interrompu puis a repris.
Une dernière solution, pour tuer une application graphique : la
commande xkill
. On la lance depuis
un terminal, puis on clique
sur une fenêtre pour tuer l'application à laquelle appartient cette
fenêtre.
Serveurs autonettoyants
Régulièrement, vers 7 h du matin, la plupart des serveurs de l'Ensimag sont redémarrés automatiquement. Les processus utilisateurs qui pourraient encore s'exécuter sont tués.
7.8. Redirection des Entrées Sorties
Un processus peut effectuer une transformation sur de l'information: il lit de l'information en entrée, effectue un traitement, et donne de l'information en sortie. Schématiquement, nous pouvons représenter les choses de la manière suivante:
Entrée ↦ Pg ↦ SortieLe processus lit l'information sur l'entrée standard (standard input, ou stdin en anglais), écrit de l'information sur la sortie standard (standard output ou stdout en anglais), sachant que l'entrée standard est généralement affectée au clavier, et la sortie standard est généralement affectée à l'écran.
Il existe cependant de nombreuses situations où on éprouve le besoin de faire travailler un processus en lui faisant lire l'information non pas à partir du clavier mais à partir d'un fichier, et/ou en lui faisant écrire l'information en sortie non pas sur l'écran mais dans un fichier.
Quand on réalise une telle opération, on dit que l'on a redirigé l'entrée et/ou la sortie.
Le shell permet de réaliser cette redirection de manière très simple. Quand on désire exécuter la commande commande en redirigeant son entrée sur le fichier nom-de-fichier-entrée, il suffit de taper:
you@ensipc$ commande < nom-de-fichier-entrée
Quand on désire exécuter la commande commande en redirigeant sa sortie sur le fichier nom-de-fichier-sortie, il suffit de taper:
you@ensipc$ commande > nom-de-fichier-sortie
Si on désire rediriger l'entrée et la sortie, il suffit de taper:
you@ensipc$ commande < nom-de-fichier-entrée > nom-de-fichier-sortie
Redirection de la sortie
Pour cet exercice, nous allons utiliser une nouvelle commande, la
commande cat
, qui admet en paramètre un ensemble de noms de
fichiers, et qui a pour effet de sortir sur la sortie standard, la
concaténation du contenu des fichiers.
Revenez dans le répertoire shell
, et regardez par less
(ou
more
) le
contenu des fichiers m1
et m2
, puis exécutez la commande
cat m1 m2
pour bien comprendre le fonctionnement de cat
.
Maintenant, réexécutez cat
de façon à mettre la concaténation
des contenus de m1
et m2
dans un fichier de nom
quelconque, par exemple resu1
, et vérifiez-en suite à l'aide de
more
, que le fichier resu1
contient bien le résultat
espéré.
sort
Utilisez la commande sort
et la redirection d'entrée/sortie
pour trier un fichier.
Faites des expériences pour répondre à la question suivante :
Lorsqu'on redirige la sortie d'un processus dans un nouveau fichier, quand le fichier est-il créé : avant, pendant ou après l'exécution du processus ?
Redirection de l'entrée
Pour cet exercice, nous allons utiliser une commande de comptage.
Cette commande a pour nom wc
(pour w
ord c
ount), et est capable de compter
non seulement les mots, mais également les caractères et les lignes
du texte qui lui est fourni en entrée standard :
wc -c
: compte les caractères ;wc -w
: compte les mots ;wc -l
: compte les lignes.
On va d'abord utiliser cette commande sans rediriger son entrée. Tapez:
you@ensipc$ wc -l
A ce moment, le processus de comptage est en attente sur son entrée standard,
c'est-à-dire le clavier, tapez donc
quelques mots, et terminez par Ctrl+D juste après un
pour indiquer la fin des données.
Après cela, wc
doit vous indiquer le nombre de mots que vous avez tapés.
Utilisé de cette manière, wc
ne sert à rien, mais on peut l'utiliser,
en redirigeant son entrée,
pour compter le nombre de mots (par exemple) contenu dans un fichier.
Utilisez wc -w
pour compter le nombre de mots du fichier chap1
qui se trouve dans votre répertoire d'origine, sans quitter le répertoire
shell
.
Redirection de l'entrée et de la sortie
Comptez le nombre de mots du fichier chap1
, en envoyant le
résultat dans le fichier resu2
. Vérifiez à l'aide de more
que resu2
contient bien le résultat espéré.
7.9. Les tuyaux, ou « pipe »
Nous avons vu dans la section 7.2.1, l'utilisation du symbole
|
dans le shell. Nous allons expliquer l'utilisation de ce symbole
maintenant.
Il arrive très souvent que l'on désire faire coopérer deux processus dans une chaîne, c'est-à-dire, de manière à ce que le second effectue son travail sur l'information produite par le premier. Le schéma suivant illustre cette situation :
Entrée ↦ Pg1 ↦ Pg2 ↦ SortiePour réaliser cela, on utilise une espèce de tuyau à information entre les deux processus. Dans le jargon Unix, c'est un pipe.
Entrée ↦ Pg1 ↦ Pipe ↦ Pg2 ↦ SortieDans le shell, on utilise la syntaxe suivante pour demander l'établissement d'un pipe :
you@ensipc$ commande1 | commande2
Listage du contenu d'un répertoire, trié par taille
La commande sort -n -k 5
prend un tableau en entrée et
exécute le tri de ce tableau selon la valeur croissante de la
5-ème colonne. Cela dit, utilisez ce que vous avez appris dans
la section 7.1.1 pour afficher le contenu d'un répertoire,
trié par taille.
Pipe et grep
La commande ps
peut prendre l'option -ef
pour voir
la totalité des processus tournant sur une machine. Si vous voulez
ne voir que les processus qui vous appartiennent par exemple, vous
pouvez rediriger la sortie de ps -ef
vers la commande grep votre-login
.
Compter le nombre de fichiers dans un répertoire
Faites coopérer ls
et wc
pour compter le nombre d'objets
qui se trouvent sur votre répertoire courant, puis dans
/usr/bin/
(le répertoire contenant la plupart des applications).
7.10. Outils spécifiques à l'Ensimag
En plus des commandes Unix standard, quelques services bien pratiques sont utilisés à l'Ensimag. Ces commandes sont listées sur l'intranet de l'Ensimag (https://intranet.ensimag.grenoble-inp.fr) et sur Bubu Wiki (« portail/ »).
Ce chapitre vous a donné de bonnes bases en ligne de commande Unix. Vous pouvez maintenant presque terminer le jeu de piste. Si l'étape F1 vous pose problème, passez au chapitre suivant, il devrait vous débloquer.
8. Utilisation du shell Bash
Le shell (bash
) est un interpréteur de commandes disposant d'un
certain nombre de caractéristiques qui en font un outil confortable à
utiliser. C'est le shell par défaut à l'Ensimag.
Les autres shells très utilisés sont tcsh
, qui était un peu
l'ancêtre des shells très « confortables » et zsh
qui offre des
fonctionnalités inédites par rapport aux autres shells.
Les possibilités plus avancées décrites ici pour bash
sont
également présentes dans les autres shells, mais pas nécessairement de
la même façon.
Il est possible de changer de nombreux paramètres du shell en positionnant la valeur de certaines variables spécifiques (cf section 8.4.2).
8.1. Les 1001 manières d'entrer une commande
Votre shell propose plusieurs manières de rentrer une commande. Le but est de minimiser le temps qu'il faut pour cela. Les fonctionnalités suivantes sont donc des aides précieuses. Il vous est recommandé de lire et d'expérimenter attentivement cette partie.
8.1.1. La complétion des noms
Pendant la frappe d'une commande, le shell bash
est capable de
terminer de lui-même les noms de fichiers dès qu'il dispose d'un début
non ambigu. Pour donner au shell l'ordre de terminer un nom de
ficher, il suffit de taper le caractère TAB
(avec ↹, une
touche tout à gauche, la troisième en partant du haut)
Supposons que le répertoire courant contient les fichiers suivants :
brouillon chap1 courrier hello.py lien-vers-shell LISEZ_MOI livre shell
Si on veut faire emacs chap1
, il suffit de taper emacs ch
↹,
le shell complètera en emacs chap1
.
Si au moment de l'émission de la commande TAB
, le début du nom
est ambigu, le shell affiche tous les noms possibles puis réaffiche le
début de la commande. Il suffit de taper juste ce qu'il faut de
caractères pour rendre le nouveau début non ambigu et de retaper ↹ pour obtenir le nom désiré.
Complétion
Créez un ficher avec un nom à rallonge avec la commande touch
fichierAvecUnNomTresTresLong.txt
. Essayez de l'ouvrir avec
emacs
, en utilisant la complétion, en appuyant sur maximum 7
touches.
Complétion avancée avec bash
En fait, la complétion que nous venons de voir ne s'applique qu'aux
noms de fichiers, mais il est possible de paramétrer toutes sortes
de complétions intelligentes. Cherchez bash_completion
dans votre moteur de recherche préféré, ou lisez la
section 8.6.3…
8.1.2. Gestion de l'historique des commandes
Il arrive très souvent que l'on ait à utiliser tout ou partie du texte d'une
commande précédemment tapée, soit qu'on veuille refaire une commande, soit
qu'on veuille légèrement modifier une commande erronée.
Le shell bash
permet de réaliser cela de manière très agréable.
Toutes les commandes que l'on tape sont mémorisées dans un fichier
d'historique (par défaut, .bash_history
).
Les flèches de curseur ↑ et ↓ permettent de revenir en arrière ou d'avancer dans la liste.
En bash
, une manière pratique de naviguer dans l'historique est
d'utiliser Ctrl+r puis texte-a-rechercher, à la manière d'Emacs
,
qui recherche texte-a-rechercher dans l'historique. Il est
possible de taper plusieurs fois sur Ctrl+r pour revenir aux
occurrences précédentes.
Retrouver une commande
Essayez de retrouver, en utilisant Ctrl+r une commande contenant une chaîne particulière que vous avez tapée aujourd'hui dans le terminal.
history
La commande history
permet d'obtenir la liste des dernières
commandes avec leur numéro. Il est possible de refaire une commande
en utilisant les raccourcis !numero-d-historique
, !debutChaine
et !?chaine?
.
8.1.3. La convention tilde
Tous les mots d'une commande sont scrutés pour déterminer s'ils commencent par le caractère
~
. Si oui, le mot entier (ou le début du mot jusqu'au premier caractère/
) est interprété comme un nom d'utilisateur, et remplacé par le répertoire d'origine de cet utilisateur (cf section 4.3.6.1). Supposons qu'on désire lire le contenu du fichierdata
se trouvant dans le répertoire d'origine de l'utilisateurrouverol
, on peut émettre la commande:you@ensipc$ less ~/rouverol/data
que
bash
transformera en:you@ensipc$ less /users/rouverol/data
Si le nom d'utilisateur suivant le signe
~
est vide, le nom pris par défaut sera celui de l'utilisateur lui-même. Supposons que l'utilisateurcassagne
désire lire un fichier se trouvant dans son répertoire d'origine, il peut émettre la commande:you@ensipc$ less ~/data
que le shell transformera en:
you@ensipc$ less /users/cassagne/data
8.2. Parler de plusieurs fichiers à la fois : les wildcards
Les wildcards sont des métacaractères qui peuvent être utilisés pour parler de plusieurs fichiers à la fois. Dans ce cadre :
- le caractère «
*
»
remplace une chaîne (potentiellement
vide) de caractères quelconques. Par exemple : co*de
remplace code
, corde
, commande
;
- le caractère «
?
»
remplace un et un seul caractère
quelconque. Par exemple : co?de
remplace corde
,
mais pas code
ni commande
;
- l'expression «
[abc]
» remplace soita
, soitb
, soitc
. Par exemple :fichier.od[pts]
remplacefichier.odt
,fichier.odp
oufichier.ods
; - l'expression «
[a-f]
» remplace un caractère entrea
etf
. Par exemple :chap[1-3]
remplacechap1
,chap2
ouchap3
; - l'expression «
[^abc]
» remplace n'importe quel caractère autre quea
,b
ouc
. Par exemple,to[^t]o.txt
remplacetooo.txt
,toxo.txt
, mais pastoto.txt
; - il existe d'autres caractères spéciaux, plus d'informations dans le manuel de votre shell (cf. section 7.5) ;
Listage
La commande suivante imprime sur l'écran le contenu d'un ou plusieurs fichiers :
you@ensipc$ cat noms_de_fichiers
Utilisez cette commande et les wildcards pour imprimer le
contenu de plusieurs fichiers à la fois. Si la commande affiche
trop de texte, essayez par exemple avec ls
à la place de cat
.
Si on veut parler explicitement d'un fichier dont le nom comporte un
caractère spécial (comme *
, par exemple, si un fichier
s'appelle vraiment to*to.txt
, c'est rare, mais possible !),
il suffit d'entourer son nom avec des guillemets simples ou doubles.
Par exemple, ls *.txt
affiche tous les fichiers dont le nom
termine par .txt
, alors que
you@ensipc$ ls '*.txt'
et
you@ensipc$ ls "*.txt"
affichent le fichier dont le nom est « *.txt ».
8.3. Lancer plusieurs commandes en même temps
Le système que nous utilisons permet bien entendu de lancer plusieurs applications en même temps. Depuis l'interface graphique, c'est très simple, on lance plusieurs applications depuis le menu.
Mais depuis un terminal, c'est un peu différent. Par exemple, lancez
un terminal, et dans ce terminal, lancez la commande emacs
. Vous
pouvez utiliser Emacs
, mais vous n'avez plus la main dans le terminal.
8.3.1. Première solution : Control-z, bg
Première solution : suspendre Emacs
, ce que l'on peut faire avec
Ctrl+z dans le terminal depuis lequel on a lancé Emacs
. Pour
qu'Emacs
continue à s'exécuter normalement, il faut l'autoriser à
tourner « en tâche de fond », avec la commande
bg
(comme b
ack g
round).
Tâches de fond
Dans un terminal, lancez la commande emacs
. Revenez au terminal
sans fermer la fenêtre d'Emacs
, puis faites
Ctrl+z. Lancez une autre commande
dans le terminal, par exemple, ls
.
Essayez maintenant de vous servir de la fenêtre Emacs
: plus rien
n'a l'air de marcher, Emacs
est suspendu. Revenez dans le terminal
et faites bg
. Vous gardez la main dans le terminal (i.e. vous
pouvez exécuter d'autres commandes), mais Emacs
reprend vie.
Essayez maintenant la commande fg
: on
est revenu dans la situation initiale.
En pratique, si vous ne devez retenir qu'une chose : quand vous voulez
reprendre la main dans un terminal, faites Ctrl+z puis bg
.
Tâches de fond et applications en mode texte
Les commandes fg
et bg
sont en fait très utiles quand on
utilise des applications en mode texte (vim
, man
, ~
less~…) et qu'on souhaite en lancer plusieurs dans le même
terminal : on revient au shell avec Ctrl+z, on peut lister les
applications qui s'exécutent dans le terminal courant avec jobs
, et basculer vers cette
application avec fg
ou fg %1
, fg %2
…
8.3.2. Deuxième solution : lancer en tâche de fond avec « &
»
Voici une autre solution pour lancer une application en tâche de
fond : ajouter le caractère &
à la fin de la ligne de commande.
On se retrouve alors directement dans la même situation qu'en ayant
fait Ctrl+z puis bg
.
Lancement en tâche de fond
Lancez la commande
you@ensipc$ emacs &
puis dans le même terminal, lancez une autre commande comme ls
:
elle devrait s'exécuter normalement. Essayez d'utiliser
la fenêtre Emacs
que vous venez de lancer, puis fermez cette
fenêtre.
8.4. Configuration de Bash : le fichier .bashrc
8.4.1. Un fichier lu à chaque lancement
La plupart des commandes permettant de configurer le shell bash
s'appliquent au shell courant.
Alias
Par exemple, essayez de lancer la commande suivante dans un terminal.
you@ensipc$ alias toto=ls
À partir de maintenant, quand vous entrerez la commande toto
,
elle se comportera comme ls
. Fermez maintenant ce terminal
puis ouvrez-en un autre. L'effet de la commande a disparu.
Il serait pénible de devoir entrer à la main la configuration du shell
à chaque lancement de terminal, c'est pourquoi bash
prévoit un
mécanisme d'initialisation : le fichier .bashrc
, situé à la
racine de votre compte, sera lu à chaque démarrage de shell (en
particulier, à chaque fois que vous ouvrirez un terminal).
Tout ce que vous mettrez dans ce fichier pourrait être entré à la main directement dans un terminal. Vous pouvez vous amuser à y mettre des commandes interactives ou bien des commandes affichant du texte, mais ne gardez pas ce genre de chose dans votre configuration : ceci pourrait gêner le fonctionnement de certaines applications.
Les deux grands types de configuration sont l'affectation de valeurs à
des variables du shell
et la création d'alias de commandes.
8.4.2. Les variables
Le shell gère des variables, c'est-à-dire des couples (nom, valeur). Une variable du shell n'a pas besoin d'être déclarée, elle prend existence dès qu'on lui affecte une valeur. Pour affecter une valeur à une variable, il faut émettre la commande:
you@ensipc$ nom-de-variable=valeur
Les blancs sont significatifs
Ne pas mettre de blanc entre nom-de-variable et le signe =
, ni entre le signe =
et valeur.
Exemple :
you@ensipc$ dir1=/usr/include
La référence à la valeur d'une variable se fait par $nom-de-variable
. Exemple :
you@ensipc$ echo $dir1 /usr/include
Si on désire connaître l'ensemble des variables et leurs valeurs à un
instant donné, on utilise la commande set
. Exécutez cette
commande, vous voyez que le système a créé un certain nombre de
variables en plus de celles que vous avez pu créer.
Les variables sont un moyen agréable de réaliser des abréviations.
Supposons que l'on prévoie d'avoir à plusieurs reprises à référencer le
fichier /usr/include/stdio.h
, on peut se définir la variable
std=$dir1/stdio.h
(en supposant qu'on a déjà affecté
la variable dir1
comme indiqué plus haut).
Il sera ensuite agréable d'utiliser
$std
à la place du nom véritable.
Les variables, par défaut ne sont
pas exportées vers les commandes lancées par le shell. Pour
qu'elles soient exportées, c'est-à-dire visibles par les autres
applications, il faut ajouter le mot clef export
:
you@ensipc$ export dir1=/usr/include
on dit alors que la variable est une variable d'environnement.
8.4.3. Alias
On peut définir un nom comme étant un alias (c'est-à-dire une
abréviation) pour une chaîne de caractères. Si par exemple, on a
souvent besoin d'exécuter un programme de nom analyse
on peut
émettre la requête suivante :
you@ensipc$ alias ana=analyse
ce qui a pour effet de faire mémoriser par bash
que lorsque le
premier mot d'une commande est ana
, il doit le remplacer
par analyse
. Une exécution du programme analyse
pourra
donc se faire par :
you@ensipc$ ana fic1 fic2
(en supposant que fic1
et fic2
soient deux arguments
nécessaires à l'exécution du programme.)
On peut faire en sorte qu'un alias soit remplacé par une chaîne
contenant des blancs, mais cela nécessite de mettre entre quotes
le texte de l'alias. Supposons que l'on prévoie d'avoir à recompiler
plusieurs fois le calcul de la factorielle de 10 en Python avec fact.py
, on peut se définir un alias
de la manière suivante :
you@ensipc$ alias fact10='python3 fact.py 10'
on peut ensuite lancer l'exécution en tapant simplement :
you@ensipc$ fact10
Lorsque l'expansion d'un alias a été réalisée, le premier mot de la commande obtenue n'est plus susceptible de subir à nouveau une expansion d'alias. On peut donc sans crainte définir des alias « récursifs », comme, par exemple :
you@ensipc$ alias ls='ls -F'
alias
La liste des alias déjà définis est obtenue avec la commande alias
.
8.5. Où sont rangées les commandes ?
Nous avons vu qu'un programme était un fichier exécutable, et nous en avons même créé un petit en utilisant le langage Python. Nous avons aussi vu qu'entrer des commandes dans un shell exécutait des programmes. Il nous reste à comprendre comment le shell trouve les programmes à exécuter quand on entre des commandes.
Une première solution, que nous avons utilisée quand nous avons exécuté notre programme Python était d'entrer le chemin de l'exécutable, relatif ou absolu. Par exemple, pour exécuter un programme qui se trouve dans le répertoire courant, on fait
you@ensipc$ ./programme
et pour exécuter Firefox
, on pourrait entrer /usr/bin/firefox
.
Mais nous avons vu qu'entrer seulement firefox
revenait au même.
Pour le savoir, le shell va regarder le contenu de la variable $PATH
:
elle définit une liste de répertoires par défaut où le
système va chercher les exécutables.
$PATH
Dans un terminal, lancez la commande
you@ensipc$ echo "$PATH"
elle affiche le contenu de la variable $PATH
. Elle devrait
commencer par quelque chose comme /usr/local/bin:/usr/bin:/bin
.
Quand on entre une commande comme firefox
, le shell va tester la
présence d'un exécutable firefox
dans chacun des répertoires.
Comme /usr/local/bin/firefox
n'existe pas (on peut le vérifier avec
ls
), le shell passe au suivant, /usr/bin/firefox
, qui
existe, donc le shell exécute ce fichier.
Pour savoir où se trouve une commande, on peut utiliser la commande
type
, comme ceci :
you@ensipc$ type nom-de-commande
Commande interne
Certaines commandes, comme, par exemple cd
sont en fait des
commandes internes du shell. Une commande interne n'est pas un
programme normal comme firefox
, ou emacs
, car c'est l'état
interne du shell lui-même qui est changé.
Programme compilé et programme interprété
Les programmes comme ls
, sont compilés dans le jeu d'instruction
du processeur. La machine peut donc les exécuter tel quel. Pour les
programmes écrits en Python, ou en shell, ils sont interprétés,
c'est-à-dire traduits à la volée en langage machine.
Le début du programme à interpréter, la première ligne, indique au
système quel interpréteur à utiliser. Il commence par #
puis !
puis le chemin-vers-l-interpréteur. L'interpréteur, lui, est écrit
en langage machine.
#!/bin/bash
ou bien
#!/usr/bin/python3
Où se trouvent les commandes ?
Où se trouvent les fichiers exécutables correspondant aux commandes
firefox
, ls
, cd
, rm
?
Si vous n'aviez pas réussi à résoudre l'étape F1, vous devriez maintenant pouvoir le faire.
8.6. Exemples de configuration de bash
Voici quelques exemples de configurations classiques et/ou bien utiles
de bash. En général, votre distribution ou votre administrateur
système a déjà créé un fichier .bashrc
pour vous : c'est une
bonne idée de le lire, pour voir quelles fonctionnalités sont activées
ou non, et adapter le tout à vos préférences.
8.6.1. Des alias pour le confort
La première utilisation des alias est de créer des raccourcis pour des
commandes utilisées souvent. Parmi les classiques, on trouve par
exemple (dans le ~/.bashrc
) :
alias ll='ls -alF' alias la='ls -A'
Ainsi, entrer ll
exécutera la commande ls -alF
(i.e.
affichera tous les fichiers y compris les fichiers cachés, avec les
détails de permissions, appartenance et taille).
On peut aussi utiliser les alias pour redéfinir des commandes
existantes, et donc modifier leur comportement par défaut. Par
exemple (toujours dans le .bashrc
) :
alias ls='ls --color=auto'
En utilisant la commande ls
, on exécutera en réalité
ls --color=auto
, donc on verra une sortie en couleurs. En
d'autres termes, cet alias est une façon de dire « je veux que la
commande ls affiche des couleurs ».
8.6.2. Des alias pour éviter les erreurs
Trois alias fréquemment utilisés (vous pouvez les ajouter dans votre
.bashrc
s'ils n'y sont pas et si vous voulez en bénéficier)
sont :
alias cp='cp -i' alias mv='mv -i' alias rm='rm -i'
Ces alias demandent aux commandes cp
, mv
et
rm
de toujours utiliser l'option -i
, qui demande une
confirmation i
nteractive avant d'effacer un fichier. Pour la
commande rm
, la demande de confirmation se fait à chaque
fichier. Pour les commandes cp
et mv
, on aura une
demande de confirmation avant d'écraser un fichier si la source existe
déjà (par défaut, cp fichier-source fichier-destination
détruit silencieusement
fichier-destination s'il existait).
Pour éviter les demandes de confirmation, on peut au choix utiliser
\rm
(le \
demande au
shell d'utiliser la commande, et pas l'alias) ou rm -f
(qui sera expansée en rm -i -f
, l'option -f
annulant
l'effet du -i
).
8.6.3. La complétion programmable
On a déjà parlé de l'utilité de la touche tabulation (↹) dans un
shell pour compléter un mot en cours d'écriture. En général, la
complétion se base sur les noms de fichiers : par exemple, si un
fichier rapport.tex
est présent dans le répertoire courant,
on s'attend à ce que pdflatex rapp
↹ complète en latex
rapport.tex
. Mais on peut aussi avoir envie d'une complétion plus
intelligente. Par exemple, si on a également des fichiers
rapport.log
et rapport.pdf
dans le même répertoire,
on peut avoir envie que evince rapp
↹ complète avec le
fichier PDF, et que pdflatex rapp
↹ complète avec le
fichier .tex
. Tout ceci est possible pourvu qu'on le demande
à bash, en chargeant le fichier /etc/bash_completion
. On
peut le faire comme ceci :
if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
Dans cette configuration, la complétion peut aussi s'appliquer aux
options des commandes connues de bash, par exemple
find . -na
↹ complète en find . -name
.
9. Accès à distance aux machines de l'Ensimag
L'Ensimag dispose d'un ensemble de serveurs et d'un parc d'environ 500 machines clientes, celles que vous utilisez dans les salles de TP.
Vous pouvez utiliser ces machines depuis l'extérieur en vous
connectant avec ssh
(cf. 10.4 ). Et avec NoVNC, vous pouvez obtenir votre
session graphique dans votre navigateur
(https://wiki.bubu-ensimag.fr/wiki_ensimag/pc_perso/vnc
).
Mais le réseau de l'Ensimag ne laisse passer les connexions ssh
que
depuis des machines de confiance. Vous devez donc vous connecter au
préalable au VPN (cf. 10.5.2 ).
Dans le but de ne pas consommer inutilement de l'électricité, les PC non utilisés s'éteignent au bout de 30 minutes.
En pratique la plupart des machines sera accessible en journée, mais dès 18h les extinctions iront croissantes.
Pour permettre à ceux qui le désirent d'accéder aux machines 6, il est possible de les réveiller.
Pour ce faire il faut envoyer un mail à ensipc-wake@ensimag.fr
avec sur chaque ligne du corps du message le nom interne (sans le .ensimag.fr
) du PC à allumer.
Toujours avec le VPN,et en utilisant ssh
, il est possible de se
connecter à une machine constamment allumée
pcserveur.ensimag.fr
. Mais, elle ne peut servir que très
ponctuellement, par exemple pour copier un fichier
(cf. section 10.3 )
Enfin, avec le VPN, il existe une centaine de machines virtuelles
accessibles depuis https://pcvirtuel.ensimag.fr
mais en pratique
cela demande une meilleure qualité de connexion que la solution
ssh+NoVNC.
10. Accéder à l'Ensimag depuis l'extérieur et les ordinateurs portables
10.1. Les ordinateurs portables personnels à l'Ensimag
La majorité des étudiantes et étudiants de l'Ensimag possède un ordinateur portable personnel depuis longtemps (95 % en 2011). L'utilisation des machines personnelles dans le cadre de l'école est fortement encouragée : même si l'école fournit des machines, il est important que vous preniez l'habitude de gérer votre propre machine, et que vous vous familiarisiez avec l'utilisation de machines portables. L'école fournit un certain nombre de services (support informatique par les étudiants et étudiantes BugBusters, pour les étudiantes et étudiants, wifi, salles de travail…) pour vous aider à utiliser vos machines dans les meilleures conditions possibles.
Pour celles et ceux n'ayant pas d'ordinateur portable, il est possible de l'emprunter. Les conditions sont expliquées sur BuBu Wiki « ensimag/pret-ordinateur/ ».
10.2. Les mails : cf. Webmail
Nous l'avons déjà vu en section 3.5 : le webmail de l'Ensimag est un moyen simple d'accéder à ses e-mails depuis n'importe où dans le monde ! On peut aussi utiliser un client mail comme Thunderbird avec le protocole IMAP pour plus de confort (lire plusieurs comptes simultanément, déplacer les emails d'un compte à l'autre par drag-and-drop, signer ses emails, etc.).
10.3. Transférer des fichiers : sftp et ses amis
En plus du compte sur les PCs de l'école, vous avez un compte sur des
serveurs, en particulier sur pcserveur.ensimag.fr
. Nous allons l'utiliser
ici pour quelques exercices à faire depuis les PCs. Toutes ces
manipulations peuvent être faites depuis l'autre bout du monde, à
condition d'être connecté au VPN Ensimag (cf. section 10.5.2
).
Travail à distance sous Unix
Les réseaux actuels, et Internet, sont nés sous Unix. Du coup Unix est prévu pour pouvoir travailler à distance comme si l'on travaillait localement. Cela se retrouve dans la plupart des couches logicielles. X11 en est un exemple, mais en fait il y a peu ou pas d'applications qui nécessitent d'être localement devant la machine, y compris pour la gestion d'un affichage 3D, le son, ou l'accès à un périphérique de stockage distant.
Il est très facile sous Unix de transférer des fichiers entre deux machines où l'on possède un compte. Pour cela il existe un protocole dédié à ces opérations qui s'appelle FTP. Vous l'avez peut-être utilisé dans votre navigateur pour télécharger des fichiers. FTP est en fait bien plus riche. Il permet de manipuler les répertoires distants, changer les droits des fichiers, effacer des fichiers, téléverser un fichier sur un serveur distant (l'inverse du téléchargement, upload en anglais), de reprendre un téléchargement interrompu…
Mais FTP transmet toutes les informations en clair sur le réseau, y compris les mots de passe. C'est pour cela que la plupart du temps, c'est sa version chiffrée qui est utilisée à sa place : SFTP
Il existe de nombreux clients SFTP textuels (sftp
, lftp
,
ncftp
) ou graphiques (Konqueror
, Nautilus
) y compris pour
d'autres systèmes d'exploitation (sftp, WinSCP, FileZilla
).
Lorsqu'il s'agit uniquement transférer un fichier ou un répertoire, la
commande scp
permet de le faire simplement avec une syntaxe
proche de cp
.
Copie de fichier
Créez localement un fichier creeSurPC
et copiez-le sur
pcserveur
avec la commande:
you@ensipc$ scp creeSurPC \ votre-login@pcserveur.ensimag.fr:copieDistante
rsync
: un scp
amélioré
L'avantage de la commande scp
est qu'elle est disponible
presque partout, mais sur les machines sur lesquelles elle est
disponible, la commande rsync
fait
en fait tout ce que sait faire scp
, et bien plus !
10.4. Accéder directement au serveur Unix : SSH
Unix permet de tout faire en ligne de commande dans un shell. Il est
donc possible de tout faire à distance, pourvu que l'on ait accès à un
shell sur la machine visée. C'est le rôle du protocole SSH, utilisable via la commande cliente ssh
.
La connexion à pcserveur
Dans un terminal, connectez-vous à pcserveur
par la commande
ssh votre-login@pcserveur.ensimag.fr
(ou simplement
ssh pcserveur.ensimag.fr
vu que votre nom de login est le
même sur les deux machines).
En pratique, le contenu de vos comptes (i.e. les fichiers et
répertoires qui s'y trouvent) sont partagés entre les PC et
pcserveur
, donc vous verrez la même chose en local et en
distant.
Si vous faites la même manipulation depuis une machine autre que les
PCs de l'Ensimag (par exemple votre ordinateur portable personnel),
vous pourrez vérifier par des commandes
sur les fichiers ls
, cp
, mkdir
, mv
que vous n'êtes pas dans le
même compte.
Lors de la première connexion, ssh
vous indique qu'il ne
connaît pas cette machine et vous demande si vous voulez en garder
la signature. C'est normal pour la première fois, et il faut répondre
yes
!
Les signatures
Les signatures des machines auxquelles vous vous êtes connectées
sont stockées dans le fichier .ssh/know_hosts
. Il est parfois
nécessaire de supprimer une signature de ce fichier lorsque qu'elle
a changé (ex. : réinstallation complète de la machine).
Il est aussi possible de lancer des commandes graphiques à distance et
de les afficher localement, ssh
s'occupant du transfert chiffré
des commandes X11.
Connexion à pcserveur
avec connexion graphique
Dans le terminal précédent, déconnectez-vous de pcserveur
puis
reconnectez vous en ajoutant l'option -X
à la commande ssh
.
Lancez emacs copieSurServeur
(ou votre éditeur préféré à la
place d'Emacs
!) pour éditer et modifier le fichier.
Emacs
, KDE
, Gnome
et ssh
En fait, Emacs
gère directement SSH et la
manipulation précédente pouvait être faite directement sur votre
machine (Emacs
s'occupant du transfert au moment de sauver). Ouvrez
simplement le fichier
/votre-login@pcserveur.ensimag.fr:fichier.txt
(depuis Emacs
, C-x
C-f).
De même les logiciels pour Gnome
et KDE
permettent l'utilisation d'URL du type sftp://votre-login@pcserveur.ensimag.fr/
(à entrer à la
place d'un nom de fichier dans le sélecteur de fichier).
tmux
Il arrive parfois d'avoir besoin de lancer une commande mais sans
attendre sa fin, de terminer votre session et revenir uniquement
plus tard. C'est possible et facile avec la commande
tmux
. Une fois la commande lancée,
on détache tmux
en tapant
Ctrl+b puis d et on se
réattache avec la commande tmux attach
.
En utilisant tmux
, il est même possible de lancer une
commande depuis une salle de l'Ensimag, et de reprendre la main
dessus une fois rentré chez soi, depuis une autre machine !
La commande screen
fournit des fonctionnalités équivalentes.
Pour plus d'information, consulter le Wiki, « obtenir-linux/ssh/ ».
10.5. Accéder à Unix depuis Windows et vice-versa
Il existe de très nombreuses possibilités pour faire ces accès dans les deux sens. La plupart de ces méthodes sont relativement simples à mettre en œuvre, même si cela demande souvent d'installer des logiciels spécifiques.
Le réseau
La configuration des réseaux utilisés est importante. Les méthodes suivantes ont des besoins légèrement différents. L'accès que vous voulez faire demande peut-être à reconfigurer des pare-feux, NAT, routeurs, ou bien il est même parfois simplement impossible.
10.5.1. Utiliser Windows à l'Ensimag
Les PC de l'école sont généralement en dual boot GNU/Linux ou Windows (et éventuellement d'autres systèmes), c'est-à-dire qu'on choisit au démarrage de la machine quel système on souhaite utiliser. Nous allons maintenant nous intéresser à l'utilisation de ces PCs avec le système Windows.
Nous ne présentons pas ici les applications installées sous Windows : vous connaissez sans doute déjà les plus utiles, et la quasi-totalité des TP que vous aurez à faire pendant votre scolarité se feront sur les serveurs Unix. Par contre, il est important que vous sachiez comment accéder à votre compte Unix depuis ces salles. Ces instructions vous serviront en salles machines, mais aussi pour accéder à l'école depuis chez vous pour ceux qui ont une machine personnelle qui tourne sous Windows.
10.5.1.1. Accéder aux serveurs avec SSH
Une première solution pour accéder à votre compte est d'utiliser SSH. Comme le veut la tradition sous Windows, il existe des interfaces graphiques conviviales pour accéder au serveur et à vos données.
Le client graphique installé sur les postes Windows de l'Ensimag est la version
non-commerciale du client SSH Secure Shell
, disponible par exemple
ici : https://www.sfsu.edu/ftp/win/ssh/. D'autres outils très
utilisés pour faire du SSH depuis Windows sont Putty et WinSCP, tous
deux très faciles à installer.
ssh
Lancez secure shell client
depuis le menu démarrer. Cliquez sur
l'icône quick connect
. Dans le champ Host name
, entrez
pcserveur.ensimag.fr
, et entrez votre login
dans le champ User Name
.
Validez.
L'outil va vous demander une validation puis votre mot de passe, et au final, vous afficher un interpréteur de commande.
Vérifiez avec quelques commandes (ls
, pwd
, ps
…) que tout ce que vous entrez ici s'exécute bien sur le
serveur Unix.
10.5.1.2. Transférer des fichiers avec SFTP
Jusqu'ici, vous avez pu exécuter des commandes sur pcserveur
,
mais pas récupérer des fichiers. Voici maintenant deux manières de
transférer des fichiers avec le même client SSH.
Transférer des fichiers
Dans le menu Window
de SSH Secure Shell
, choisissez New
File Transfer
. Vous obtenez une fenêtre à deux colonnes : à
gauche, vos fichiers locaux, à droite, les fichiers de pcserveur.ensimag.fr
.
Vous pouvez copier des fichiers en faisant glisser à la souris.
Deuxième solution : fermez toutes les fenêtres SSH Secure Shell
,
puis choisissez Secure File Transer Client
depuis le menu
démarrer. Vous obtenez la même fenêtre que ci-dessus.
10.5.1.3. Monter directement son répertoire avec SMB
Les solutions présentées ci-dessus ont l'avantage d'être réalisables depuis n'importe quelle machine. Sur un réseau local, il y a une autre solution, sans doute un peu plus simple : monter le disque du serveur Unix comme un lecteur réseau sous Windows. On y accédera ensuite comme un répertoire local avec l'explorateur de fichiers.
Montage du compte Ensimag
L'invite de connexion au serveur de fichiers se lance automatiquement à la connexion sur le PC Windows. En cas de problème avec le montage proposé automatiquement, vous avez également une icône sur le bureau pour le relancer : « Montage volume de données personnelles ».
Une fois l'opération réussie, ouvrez le poste de travail depuis le menu démarrer : il doit afficher une icône en plus correspondant à votre compte Unix. Ouvrez ce répertoire et vérifiez que les fichiers sont bien les bons.
10.5.2. Autres solutions pour accéder à ses fichiers, exécuter des commandes à distance
- SSH :
- La méthode la plus simple pour accéder à Unix depuis
Windows est d'utiliser ssh et ses dérivés comme
scp
. Nous avons vuSSH Secure Shell
, mais il existe bien d'autres clients Windows commePutty
(très simple à installer),WinSCP
etFileZilla
. On peut les trouver en partant de la page de http://www.openssh.org (section Alternatives). - SSH+X11 :
- si vous êtes sur Unix (ou Mac OS X), ou si vous avez
installé un serveur X sur votre machine Windows, il est possible
d'avoir un accès complètement graphique direct, quasiment identique
à celui de votre terminal X. Il suffit pour cela d'utiliser l'option
-X
dessh
en ligne de commande. Pour installer un serveur X (et bien plus !) sous Windows, une solution est d'installerCygwin
, qui fournit un environnement de type Unix à l'intérieur de Windows. - VNC :
- accès graphique de tout vers tout (Unix, Windows, Java…), mais cela demande de lancer d'abord un serveur spécifique sur la machine à laquelle on veut accéder, puis de se connecter au serveur avec un client (éventuellement en utilisant ssh pour être sécurisé).
- Partage de fichier ou d'imprimante avec SMB :
- Le partage de
fichier avec le protocole de Windows est géré sous Unix par
Samba
. - VPN :
- il est possible de construire un réseau privé virtuel de façon à ce que vos applications se comportent comme votre machine était physiquement connectée dans l'Ensimag. Vous trouverez les explications détaillées sur le wiki des Bug Busters (« wiki_ensimag/vpn »).
10.5.3. Plus d'information
Pour d'autres informations, par exemple des bonnes solutions pour synchroniser des répertoires entre plusieurs machines, ou comment monter son répertoire personnel depuis Mac OS X, rendez-vous sur Bubu Wiki, notamment « ensimag/aide-a-distance/ ».
10.5.4. Les différences de codage des caractères
En informatique, on désigne sous le terme générique de caractère
l'ensemble des lettres, chiffres et signes divers. On parle donc du
caractère `A', du caractère `b', du caractère `+', etc. Dans un ordinateur,
les caractères sont représentés sous forme de nombres : en codage
ASCII, les lettres de A
à Z
ont les codes de 65 à 90, les
lettres a
à z
ont les codes de 97 à 122, les
chiffres de 0
à 9
ont les codes de 48 à 57…
Malheureusement, l'utilisation du codage ASCII entre différents
systèmes n'est pas uniforme. Le fait de passer à la ligne utilise le
caractère 10, ou « new line » sous Unix (y compris Mac OS X), le
caractère 13, ou « carriage return » suivi du caractère 10 sous
Windows. Il peut donc arriver qu'un programme windows (comme Notepad
)
ait du mal à lire un fichier texte produit sous Unix. Heureusement,
beaucoup de programmes sont capables de comprendre les deux formats
(au moins Wordpad
sous Windows, la plupart des éditeurs de textes sous
Unix), et il existe des programmes pour passer de l'un à l'autre :
dos2unix
et unix2dos
.
Les extensions d'ASCII
Les caractères ASCII ne définissent que 128 caractères. Or, en codant tous les caractères uniquement avec 8 bits, on peut coder 256 valeurs.
Historiquement, Il existe donc un grand nombre d'extensions d'ASCII
utilisant les 128 caractères restants. Aux états-unis, des dessins,
dans le reste du monde, tous les autres caractères utilisés par les
différentes langues comme éàèùûâôçëï...
en français. Elles sont
incompatibles entre elles, et différentes d'un système à
l'autre. Par exemple, pour les caractères du français on trouve la
norme ISO-8859-1, également appelée latin1 sous Unix, CodePage
850 (originellement d'IBM) sous DOS, UTF-16 sous Windows.
Néanmoins, au moins sous Unix, la situation s'oriente vers
l'utilisation du codage UTF-8,
codage Unicode
avec un nombre variable d'octets pour être compatible
ASCII (les 128 caractères sur un seul octet), capable d'encoder les caractères de presque toutes les
langues vivantes écrites sur la planète. Le serveur pcserveur
et les PC GNU/Linux que vous utilisez sont configurés pour utiliser
UTF-8 par défaut.
Sous Unix, la commande file
permet
de deviner l'encodage d'un fichier, et les programmes recode
et iconv
permettent de passer d'un jeu
de caractère à l'autre. Par exemple :
[me@ubuntu ~]$ file toto.txt toto.txt: UTF-8 Unicode text [me@ubuntu ~]$ iconv --from utf-8 \ --to latin1 toto.txt -o titi.txt [me@ubuntu ~]$ file titi.txt titi.txt: ISO-8859 text
Voilà, vous avez maintenant toutes les connaissances pour terminer la partie principale du jeu de piste (mais vous pouvez si vous le souhaitez vous attaquer à la deuxième partie du jeu de piste, plus orientée « Geek » et plus difficile, mais qui devrait vous apprendre encore beaucoup de choses!).
10.6. Et maintenant ?
10.6.1. Installer GNU/Linux sur un ordinateur personnel
Linux en tant que tel, n'est techniquement que le cœur du
système. Autour de ce cœur se greffent de nombreuses applications
comme X11 ou Firefox
et dont beaucoup viennent du projet GNU
(https://www.gnu.org) (Emacs, Vim, gcc, bash, ls...
). On
appelle cet ensemble une distribution.
Leur grande force est que si vous avez un accès permanent à Internet, le catalogue de base des distributions grand-public est d'environ 10~000 à 20~000 applications de toutes natures, disponibles en quelques clics.
Il existe de nombreuses distributions différentes qui permettent une installation simple et facile sur un ordinateur personnel de nombreuses manières différentes : CD/DVD, clefs USB, réseaux, etc.
Il est vivement recommandé d'installer GNU/Linux sur sa machine personnelle : vous apprendrez beaucoup de choses, et vous gagnerez en confort en choisissant vous-même ce que vous installez et comment vous configurez votre machine. Pour vous aider dans cette tâche, un groupe d'étudiants et étudiantes est payé par l'Ensimag : les Bug Busters. Vous les trouverez sur Bubu Wiki, « contact/ », ou en lisant les affiches en salles machines.
Si vous ne savez pas quelle distribution choisir, la distribution Ubuntu est très populaire, y compris auprès des débutants, et relativement simple à installer et utiliser.
L'environnement de l'Ensimag est en fait une distribution Ubuntu à laquelle ont été ajoutés un certain nombre de sources de paquets et de logiciels installés à la main (logiciels spéciaux commerciaux à licence: Matlab, Cplex, etc.).
En pratique, beaucoup d'étudiantes et étudiants choisissent d'avoir une distribution autre que celle de l'Ensimag sur leur machine personnelle. Dans ce cas, il reste important de tester vos TP et projets sur l'environnement Ensimag avant de les rendre (en utilisant les machines virtuelles ou les salles machines de l'Ensimag).
GNU/Linux cohabite avec les autres systèmes d'exploitations installés sur la machine. Son installation terminera en mettant en place un menu de démarrage qui vous proposera de choisir entre les différents systèmes installés.
Les pilotes du matériel
La quasi-totalité des matériels fonctionneront immédiatement, mais comme pour une installation de Windows, un certain nombre de matériels des ordinateurs portables sont exotiques et demandent des pilotes particuliers à installer après l'installation de base.
Lire les messages !
L'installation est très facile, mais il faut quand même lire attentivement les messages pour vérifier que l'installeur fera ce que vous souhaitez.
En particulier, il ne faut pas demander une installation sur la totalité du disque dur si l'on souhaite conserver une installation pré-existante de Windows avec les données qui sont dedans.
10.6.2. Continuer à apprendre …
Si vous avez lu ce document en entier, et si vous êtes arrivés au bout du jeu de piste, vous avez l'essentiel pour travailler à l'Ensimag. Mais l'apprentissage ne s'arrête pas là : il reste beaucoup d'outils à apprendre, et beaucoup de pratique à acquérir.
Vous apprendrez certains de ces outils dans votre scolarité à l'Ensimag, mais il est indispensable d'être curieux, et de compléter l'apprentissage scolaire par une démarche personnelle. Quelques pistes pour apprendre quelques outils très utiles, sont disponibles sur Bubu Wiki « ».
11. Les autrices et auteurs de ce document (en espérant n'avoir oublié personne)
Olivier Alphand, Henry-Joseph Audéoud, Nicolas Berthier, Pierre Brunisholz, Bernard Cassagne, Catherine Cassagne, Giovanni Funchal, Baptiste Jonglez, Quentin Meunier, Grégory Mounié, Matthieu Moy, Simon Nieuviarts, Florence Perronnin, Frédéric Pétrot, Damien Roque, Sébastien Viardot.
12. Crédits photographiques
12.1. Margaret Hamilton (MIT Draper Laboratory)
Elle était la directrice des programmeurs des ordinateurs de vol du programme Apollo. La photo de Margaret Hamilton en 1969, avec le code du programme Apollo
La photo vient de wikipédia.
Sa page sur wikipédia: https://fr.wikipedia.org/wiki/Margaret_Hamilton_(scientifique)
12.2. François Gernelle (R2E, Orsay)
François Gernelle, qui a fait son doctorat en Informatique à Grenoble, est l'inventeur du Micral N, le premier micro-ordinateur commercialisé dans le monde, en 1972, par la société française R2E, sur la base du micro-processeur Intel 8008. La photo de François Gernelle en page
La photo vient du site de l'Aconit, Association pour un conservatoire de l’informatique et de la télématique. Cette association grenobloise conserve, dans un grand hangar de la mairie de Grenoble, le plus beau fond d'Europe (surtout en machines anciennes, mais aussi des documents et logiciels) dans le domaine de l'informatique. Les discussions pour un futur musée sont toujours en cours. En effet, vu la taille de la collection à stocker (sans parler de l'espace pour sa présentation), le bâtiment d'accueil doit être grand. Compter les années pour faire ce montage en décennies. Vous pouvez visiter cette collection lors des fêtes de la sciences: https://aconit.org
Sa page sur Wikipédia: https://fr.wikipedia.org/wiki/Fran%C3%A7ois_Gernelle
13. Solution des exercices
13.1. Exemple d'exercice
Il n'y a pas de solution à cet exercice.
13.2. Procédure de login
Si vous êtes sous Ubuntu, vous pouvez afficher votre mot de passe
avant de faire en cliquant dans le formulaire avec votre
bouton droit.
Les échecs répétés viennent souvent de seulement trois raisons:
- vous avez activé le verrouillage des majuscules Verrouillage-Majuscule. Votre mot de passe est sensible à la casse: une lettre majuscule est différente d'une lettre minuscule.
- vous n'avez pas mis le verrouillage du pavé numérique Verr num et vous utilisez le pavé numérique pour entrer un chiffre de votre mot de passe.
- vous n'avez pas de mot de passe, votre mot de passe n'est pas actif, ou bien il est bloqué: c'est le bon moment de contacter votre enseignant, votre enseignante ou le service informatque.
13.3. Verrouillage
Si vous n'arrivez pas à vous reconnecter, vous devriez vérifier les touches Verrouillage-Majuscule et Verr num.
13.4. Logout
Sous Ubuntu, vous devriez trouver un bouton de déconnexion au même endroit que le verrouillage de votre session, en haut à droite.
Si plusieurs utilisateurs sont connectés sur la même machine, il est possible que le système refuse de l'éteindre. Cela ne vous empêche pas de vous déconnecter.
13.5. Lancement de LibreOffice
Il existe plusieurs façons de lancer une application. Dans tous les
cas, il est particulièrement utile de connaitre le véritable nom du
fichier exécutable. Pour LibreOffice Writer
, il s'agit de
lowriter
.
13.6. Le clavier
Chaque touche envoie un code. Ce code est traduit dans une lettre en fonction des réglages du système. Vous pouvez trouver la traduction des codes de la version française « azerty » sur la page wikipedia
Il est très facile de changer ces réglages. L'Ubuntu de l'Ensimag propose d'ailleurs le réglage US « qwerty» (menu en haut à droite).
Pour obtenir le réglage courant de manière graphique, vous pouvez
utiliser les paramètres de votre session. Si vous utilisez la session
par défaut (Gnome), de nombreux réglages avancés sont modifiables avec
gnome-tweaks
.
Les réglages exacts (le clavier, la façon de taper des chiffres
flottants, les nombreuses variantes, etc.) peuvent aussi être obtenu
en tapant dans un terminal la commande localectl
. La même commande
localectl --user ...
permet de les modifier pour un utilisateur
particulier.
13.7. Le bandeau des fenêtres et les trois boutons
Souvent maintenir un clic-droit fait apparaitre un menu contextuel. C'est aussi le cas des bandeaux.
Toutes les actions, peuvent faire des actions différentes si vous le demandez à votre gestionnaire de fenêtres. Ces configurations sont sensibles aux modificateurs (les touches Ctrl, Alt, Maj, Windows)
13.8. Le copier-coller à la souris
Certaines applications comme Firefox essayent parfois de mimer le comportement du copier-coller sous Windows. Avec l'habitude, vous trouverez cela peu pratique. Heureusement, c'est souvent modifiable.
13.9. Déplacer et redimensionner les fenêtres avec Gnome
L'organisation de vos fenêtres participe au confort d'utilisation. Ne négligez pas les nombreuses possibilités, comme ces raccourcis et les bureaux multiples.
13.10. Les bureaux virtuels (Workspace)
Comme pour l'exercice sur la disposition des fenêtres, la logistique compte.
13.11. Ouvrir une fenêtre avec un shell
Le terminal sera un outil indispensable pour la plus grande partie de vos travaux informatique. Même Windows, depuis Windows 7, vous propose un terminal et un shell décent.
Certains IDE populaires vous proposent un terminal intégré avec l'édition de votre code.
13.12. Commande
Le nom de la commande correspond au nom du fichier contenant le programme. Ainsi, connaître le nom d'une commande permet de la lancer plus facilement en tapant directement son nom. Cela permet aussi d'automatiser son lancement ou d'utiliser l'historique de votre shell.
13.13. Changer de mot de passe
Pour les services web administrés par l'Ensimag, Grenoble-INP, ou l'UGA (intranet, gitlab, moodle, chamilo, wifi-campus, eduroam, etc.), la modification est instantanée. Vous pouvez vous en servir pour tester si le changement est bien passé pris en compte.
Une exception notable est le courriel ! Il est administré par RENATER (consortium national) est donc la propagation du nouveau mot de passe parfois beaucoup plus longue, jusqu'à 24h. Dans l'intervalle, votre ancien mot de passe continu à fonctionner.
Copass copie votre mot de passe dans les nombreuses bases de mots de passes vous concernant. C'est pratique, mais du coup Copass est dépendant du fait que la base soit accessible pile au moment de votre changement.
Si un des services ne reconnaît pas votre nouveau mot de passe, vous pouvez le ré-entrer une deuxième fois dans Copass, à l'identique, pour forcer sa réécriture.
13.14. Intranet
13.15. Chamilo
L'URL de Chamilo est https://chamilo.grenoble-inp.fr
13.16. Les Bug Busters
L'URL des Bug Busters est https://bugbusters.pages.ensimag.fr/wiki
13.17. Emacs et python
Notes de bas de page:
Le « GNU » représente dans cette dénomination l'ensemble des commandes Unix du projet GNU s'exécutant sur le noyau « Linux ». Voir section 5.7 pour plus de détails sur ce projet.
Une commande que l'on verra plus loin, mais que vous pouvez tout de même utiliser ici : elle liste le contenu d'un fichier dont le nom est donné en argument.
Ce n'est
par exemple pas le cas d'acroread
, tout comme de certains greffons
(plugins) de LibreOffice
.
Ses détracteurs prétendent qu'Emacs
est un bon système d'exploitation auquel il manque un bon éditeur de texte.
par ex. pour utiliser des logiciels qui sont spécifiques à un cours et que vous ne pouvez installer légalement sur vos PC perso ou qui prennent des tera-octets de disque.