Vous êtes sur la page 1sur 3

▶ Le shell fait l’hypothèse qu’un programme lit ses entrées au clavier et affiche

ses résultats à l’écran.


▶ Il n’y a qu’un clavier et un écran.
▶ Un seul programme peut s’exécuter à la fois.
▶ On peut dire qu’un programme est lié au terminal

Les commandes pour devenir le super utilisateur sous Unix sont:

su -
si le compte du super utilisateur est activé, il faut alors fournir le mot de passe
du super utilisateur;

sudo -i
dans le cas contraire, il faut fournir son propre mot de passe (le paramètre i
démarre un interpréteur
de commande).

▶ Le shell est prévu pour:


▷ accepter des commandes;
▷ les interpréter;
▷ les exécuter;
▷ et fournir un résultat.
▶ Un nom de programme doit être entré de manière complète pour être trouvé:
/bin/ls

▷ Les commandes les plus courantes peuvent être entrées sans le nom de chemin
complet.

▷ Pour cela, le shell utilise le contenu de la variable


d’environnement PATH qui contient la liste des répertoires où il
faut rechercher un programme dont le nom n’est pas complet.
▶ Il est possible d’ajouter de nouveaux répertoires pour la session en cours avec
la commande (syntaxe du Bourne shell): PATH=”/opt/texlive/2011/bin/i386-linux:$
{PATH}”;export PATH

▶ Le fichier ${HOME}/.profile est lu lors de chaque session initiale (login


session) et les commandes du shell qu’il contient sont exécutées..
▶ C’est donc l’endroit où il faut stocker ses modifications personnelles pour les
retrouver à chaque nouvelle connexion.

▶ Voici quelques techniques qui augmentent la facilité d’utilisation de


l’interpréteur de commandes:
▷ Si le shell est bien configuré, il est possible de compléter automatiquement les
noms de commandes et de fichiers en utilisant la touche de tabulation du clavier.
▷ Lorsqu’on travaille avec le CSH, il faut presser deux fois la touche «escape»
pour obtenir la completion automatique

▶ Les touches ^a et ^e
permettent (lorsque le shell est en mode «emacs», ce qui est le plus souvent le
cas) de positionner le curseur en début et en fin de ligne.

▶ La commande history souvent abrégée en h permet d’afficher un certain nombre des


dernières commandes exécutées.

▶ En préfixant un numéro de commande (obtenu par la commande history) ou les


premiers caractères d’une commande déjà utilisée par un point d’exclamation (!), on
exécute à nouveau cette commande.
▶ La séquence de caractères !$
permet de récupérer le dernier argument de la dernière commande. C’est souvent un
nom de fichier que l’on peut facilement réutiliser sans le retaper.
 ls -l TCS.tex
 pdflatex !$

echo
c’est une commande interne au shell qui permet d’afficher une chaîne de caractères
à l’écran: echo ${PATH} affiche le contenu de la variable PATH.

sleep
est une commande qui admet en argument un nombre de secondes et qui ne fait rien.
ls -l toto.zip;sleep 10;ls -l toto.zip
est une commande qui permet d’avoir une idée de la vitesse à laquelle le fichier
«toto.zip» est écrit sur le disque.

date
permet d’afficher la date courante: date +%s permet d’obtenir le nombre de secondes
qui se sont écoulées depuis er janvier  (la création du premier Unix).
Cette expression de la date est très pratique pour faire facilement de
l’arithmétique avec les dates.

cal
affiche le calendrier du mois en cours ou de n’importe quel autre mois de n’importe
quelle année.

Processus...
▶ On dit alors que le programme détaché s’exécute en arrière-plan (en anglais:
background).
▶ Un programme lié à un terminal s’exécute en avant-plan (en anglais: foreground).
▶ Pour lancer un programme en arrière-plan, il faut suffixer la commande par
l’esperluète (&).
▶ wget -o transfert.log \
http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/12.04/ubuntu-12.04.1-desktop-
i386.iso&

lance la commande wget qui va récupérer l’image de CD d’installation de Ubuntu


Linux.

▷ L’option «o» permet d’écrire le journal du transfert dans un fichier local (ici
«transfert.log»).
▷ Le caractère contre-oblique (\) permet de continuer la commande sur la ligne
suivante.
▶ Il n’y a donc rien qui est écrit à l’écran ou lu du clavier et le processus peut
être détaché du terminal
▶ Si on a oublié l’esperluète placée à la fin de la commande, il est encore
possible de détacher le processus du terminal en:
tapant ^z (c’est-à-dire en pressant la touche «ctrl» puis, tout en gardant la
touche «ctrl» pressée, en appuyant sur la touche «z»). Cela a pour effet de
stopper le processus en cours et de remettre l’interpréteur de commandes dans le
mode où il accepte les commandes;
en passant la commande bg (pour background) ce qui a pour effet de redémarrer
le programme en arrière-plan

▶ La commande jobs
permet d’afficher la liste des programmes qui ont été détachés du terminal pendant
la session.
alainvirtualisation:~/TCS$ jobs [1]+ En cours d’exécution
/var/tmp/texmaker_linux64/texmaker &
alainvirtualisation:~/TCS$
▶ On voit que le programme «texmaker» a été détaché du terminal.
▶ Il est alors possible de passer la commande fg %1 (pour foreground) afin de lier
à nouveau le programme «texmaker» au terminal.
Un processus très gourmand en ressources du système va pénaliser l’entièreté
du système
▶ Cela se fait avec la commande nice (qui veut dire «gentil, agréable») et qui
baisse la priorité du processus lors de son lancement.
▶ Si la commande nice a été oubliée, il est possible de passer les commandes:
1.ps -aux | fgrep qqch qui affichera tous les processus dont le nom contient
les caractères «qqch» ainsi que le numéro de
ces processus;
2.renice 10 -p N° où «No» représente le numéro du processus.
▶ Au lieu, d’utiliser la commande décrite au point 1, il estpossible d’utiliser la
commande top (qui n’est pas toujours installée par défaut).
▶ Cette commande affiche les processus par ordre décroissant de consommateurs
d’unité centrale

Signaux
▶ Il est aussi possible d’envoyer des signaux aux processus afin de modifier leur
comportement. Cela se fait avec la
commande kill.
Les princpaux signaux sont:
TERM qui a la valeur 15 et qui demande au processus de s’arrêter.
Le processus dispose d’un petit délai pour terminer proprement. Ce signal est
la meilleure solution d’arrêt d’un processus.
HUP qui a la valeur 1 et qui indique au processus de relire ses fichiers de
configuration.
On utilise ce signal pour qu’un démon (par exemple le serveur DNS) relise ses
fichiers après qu’ils aient été modifiés.
KILL qui a la valeur 9 et qui force l’arrêt du programme.
Cette méthode est brutale. Il est toujours préférable d’essayer d’envoyer le
signal 15 avant celui-ci.

Les redirections
Puisque le clavier et l’écran sont considérés comme des fichiers, ils peuvent
facilement être remplacés par d’autres fichiers.
▶ Pour cela, il faut juste indiquer au Shell que la commande doit rediriger
l’entrée ou la sortie standard vers un fichier.
▶ Cette redirection se fait à l’aide des deux caractères «<» et «>» qui indiquent
que le fichier d’entrée est redirigé pour la lecture («<») ou que le fichier de
sortie est utilisé pour l’écriture («>»).
▶ Les commandes précédentes détruisent (dans le cas de l’écriture) un fichier
existant. Pour éviter ce comportement, il est possible d’utiliser «>>» qui va
appondre le résultat de la commande au fichier.
▶ Ce qui rend le système encore plus puissant est que l’on peut considérer que la
sortie d’une commande est l’entrée
de la suivante. Cela consiste à relier les commandes comme on relierait des points
d’eau avec un tuyau ou comme les différentes étapes d’une chaîne de montage avec un
tapis roulant.
▶ Le chaînage des commandes est obtenu avec le caractère «|» qui est appelé en
anglais pipe («tuyau»)

Vous aimerez peut-être aussi