Portail informatique Année 2018 – 2019

CSC 3102 – Introduction aux systèmes d’exploitation

Cette petite liste de trucs et astuces devrait vous aider à utiliser un peu plus efficacement votre terminal et le langage bash. Lisez attentivement cette page, vous gagnerez beaucoup de temps par la suite ! Si vous avez l'erreur "bash: [: =: unary operator expected" alors que votre programme a l'air correct, c'est que vous avez oublié des guillemets autour d'une variable dans votre test. C'est typiquement le cas ici : if [ $1 = "add" ]; then ... fi L'expression est correcte lorsque $1 n'est pas la chaîne vide. Mais si le script est lancé sans argument, $1 est la chaîne vide et le test est interprété en [ = "add" ], ce qui est une expression incorrecte. Il faut donc écrire le test de cette façon : if [ "$1" = "add" ]; then ... fi Dans cette expression, le test avec un argument vide est interprété en [ "" = "add" ], ce qui est correct. Sous Linux ou Mac OS, vous pouvez utiliser la commande "ssh identifiant@ssh.temp-tsp.eu". Nous vous invitons aussi à faire l'exercice sur la commande ssh pour bien comprendre comment marche cette commande.

Depuis une machine windows, il y a deux possibilités :
  • Pour les heureux utilisateurs de Windows 10, vous pouvez installer une distribution comme debian pour Windows 10 et installer le paquet openssh de façon à pouvoir directement utiliser la commande ssh.
  • Pour les autres version de Windows, vous pouvez installer et utiliser putty. La configuration de putty pour se connecter aux machines de TSP est expliquée dans la présentation des ressources informatiques que vous a faite la DISI.
Vous ne pouvez pas, même avec Windows 10. Il faut donc installer un Linux. Pour installer Linux sur un PC, vous avez deux possibilités :
  • vous pouvez installer Linux sur une autre partition de votre disque dur,
  • ou vous pouvez installer un linux dans une machine virtuelle comme virtualbox, ce qui vous permettra de lancer un Linux sans quitter Windows.
Vous pouvez faire la plupart des TPs directement sur un Mac OS à condition d'installer quelques programmes supplémentaires indiqués dans la suite de cette section. En effet, Mac OS étant un UNIX, le programme bash et la plupart des commandes utilisées dans le module CSC3102 sont installées par défaut. Seul le dernier exercice du TP5 ne peut pas être réalisé sur un Mac OS.

Il faut toutefois savoir que la plupart de vos enseignants ne savent pas utiliser un Mac OS et qu'ils ne pourront donc pas vous aider si vous avez des problèmes. Si vous utilisez un Mac OS pour faire les TPs, vous risquez de perdre du temps : c'est donc à vos risques et périls.

Il faut aussi savoir que certaines commandes et options différent entre un Mac OS et un Linux. Lorsque vous vous rendez compte que les options ne sont pas compatibles, il faut chercher les options équivalentes en utilisant les pages de man. Vous pouvez aussi demander à votre enseignant, mais votre enseignant ne saura pas forcément vous répondre.

Si malgré ces avertissements, vous souhaitez tout de même faire les TPs sur Mac OS, il faut que vous installiez quelques programmes supplémentaires :
  • Il faut installer un serveur graphique. La solution la plus simple est de lancer le programme XQuartz qui se trouve dans le sous-dossier Utilitaires du dossier Applications. Une fenêtre vous proposant d'installer ce programme devrait s'ouvrir. Si ça ne marche pas, vous pouvez toujours chercher XQuartz dans l'Apple Store.
  • Il faut aussi installer un gestionnaire de paquets : soit Mac Port, soit Homebrew. Vous aurez besoin d'installer le paquet xeyes car il sert dans différents TPs. Si vous voyez qu'une autre commande vous manque, utilisez le gestionnaire de paquet pour l'installer.
  • Il faut installer une version de emacs avec le mode fenêtré. Vous pouvez en trouver une à cette adresse : https://emacsformacosx.com.

Une fois la phase d'installation terminée, il faut configurer emacs. Commencez par lancer XQuartz. XQuartz devrait lancer un terminal qui exécute bash. De façon à avoir accès, dans emacs, à des caractères couramment utilisés lorsqu'on programme (accolades, crochets), il faut que vous téléchargiez le fichier suivant : et que vous le renommiez en ~/.emacs, par exemple avec la commande mv ~/Downloads/emacs-config.txt ~/.emacs

Ensuite, lorsque vous lancez emacs dans le terminal, c'est un emacs en mode terminal qui est lancé, ce qui n'est pas forcément très convivial pour débuter. De façon à utiliser la version fenêtrée que vous avez téléchargé, il faut saisir les commandes suivantes une unique fois dans votre terminal : echo "alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs'" >> ~/.bashrc echo "alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs'" >> ~/.bash_profile Quittez XQuartz et relancez le (ou quittez le terminal et relancez le). Si vous saisissez la commande emacs, c'est le emacs en mode fenêtré qui devrait maintenant se lancer.

Pour finir, il faut apprendre les raccourcis permettant d'utiliser les caractères couramment utilisés lorsqu'on programme. Ces raccourcis devraient être les mêmes dans le terminal et dans emacs :
  • Shift-Alt-( : [
  • Shift-Alt-) : ]
  • Shift-( : {
  • Shift-) : }
  • Alt-n : ~
  • Shift-Alt-l : |
Nous ne vous conseillons pas une distribution plutôt qu'une autre, elles ont toutes des avantages et des inconvénients. La page suivante présente un bon résumé des principales distributions Linux : quelle-distribution-linux-choisir. Nous vous invitons déjà à faire un tutorial emacs (par exemple celui-ci, ou simplement en allant dans le menu help -> tutorial dans emacs). Ensuite, les raccourcis essentiels sont :
  • Ctrl-x Ctrl-s : sauvegarde le fichier
  • Ctrl-x Ctrl-f : ouvre un fichier
  • Ctrl-x Ctrl-b : bascule la fenêtre vers un autre fichier ouvert
  • Ctrl-k : efface la fin de la ligne à partir du curseur
  • Ctrl-a : déplace le curseur en début de ligne
  • Ctrl-e : déplace le curseur en fin de ligne
  • Ctrl-space : démarre une selection, vous pouvez vous déplacer avec les flèches
  • Meta-w : copie la selection en cours (Meta = touche Alt ou Echap)
  • Ctrl-y : colle une selection préalablement copiée
Pour utiliser la complétion automatique fournie par le shell, tapez les premières lettres de la commande ou du fichier et appuyez sur la touche « tabulation ». Si le préfixe donné n'est pas ambigu, la complétion est faite automatiquement. Sinon, si vous appuyez une deuxième fois sur la touche tabulation, le shell vous propose une liste des complétions disponibles. Pour rappeler des commandes précédentes dans votre fenêtre de terminal, vous pouvez presser la touche « flèche vers le haut » de votre clavier, une fois pour rappeler la commande précédente ou plusieurs fois pour rappeler une commande plus ancienne.

Lorsqu'une commande échoue, habituez-vous à utiliser l'historique pour la rappeler et la modifier au lieu de la retaper.

Vous pouvez aussi rechercher facilement une commande dans l'historique. Pour cela, il suffit de saisir la combinaison de touches « control + r ». Saisissez ensuite un des mots utilisé dans une ancienne commande et la commande complète va apparaître.
Lorsque votre commande est bloquée (typiquement, lors d'une boucle infinie), vous pouvez interrompre la commande en utilisant la combinaison de touches « control + c ». Votre terminal est bloqué car un processus tourne en premier plan. Vous pouvez soit interrompre le processus en premier plan en saisissant « control + c », comme indiqué dans l'astuce précédente, soit passer le processus en premier plan en arrière plan. Pour cela, il faut d'abord saisir la combinaison de touches « control + z » dans le terminal. Cette combinaison de touches suspend le processus en premier plan. Ensuite, vous pouvez redémarrer le processus en arrière-plan avec la commande bg (comme background). Pour copier-coller une chaîne de caractères, sélectionnez-la avec le bouton gauche de la souris (ce qui copie), et collez-la avec le bouton du milieu (les deux boutons simultanément si la souris a seulement deux boutons). Le collage a lieu à la position courante du curseur. De nombreux raccourcis de emacs fonctionnent aussi dans le terminal. En particulier :
  • « control + k » : coupe du curseur jusqu'à la fin de la ligne.
  • « control + w » : coupe du curseur jusqu'au début du mot précédent.
  • « control + y » : colle le dernier texte coupé.
Pour les curieux, vous pouvez inclure un script dans un autre à l'aide de la commande source qui peut aussi s'écrire « . ». À ce moment, bash exécute les commandes se trouvant dans script.sh, comme si elles avaient été placées à la place de la ligne source script.sh. Ce mécanisme est très différent du lancement d'une commande en omettant le source. En effet, sans le source, bash lance un nouveau processus pour exécuter les commandes, alors qu'avec source, bash exécute le script passé en argument dans le processus courant. La construction source n'est pas utilisée dans le cours. En revanche, si vous ouvrez votre fichier de configuration par défaut (.bashrc), il est probable que vous croisiez une ligne contenant . /etc/bashrc. Cette ligne permet d'exécuter l'ensemble de commandes par défaut du système se trouvant dans le fichier /etc/bashrc.