La structure de la ligne de commande: • Lorsqu'une commande est lancée par le SHELL, trois fichiers ayant chacun un numéro appelé "file discriptor (fd) " sont ouverts par le système. Ce sont: – f Le fichier stdin ou standard input (fd=0) – f Le fichier stdout ou standard output (fd=1) – f Le fichier stderr ou standard error (fd=2)
Lancement d'une commande en arrière plan. • Il est possible de profiter de la caractéristique multitâche d'UNIX pour avoir plusieurs commandes qui tournent en même temps et qui proviennent du même utilisateur. • Ceci est accompli en faisant exécuter des commandes en arrière plan a l'aide du caractère &.
• L'avant dernière ligne est le résultat de deuxième commande date, alors que la dernière ligne est celui de la première commande date. • On remarque le décalage de 5 secondes dans l'heure.
Remarque • Si le résultat d'une commande lancée en arrière plan n'est pas affichable sur l'écran, la fin du processus n'est pas indiquée par le SHELL. Dans ce cas, il est conseillé de terminer la commande par un message. • Exemple: $ (ls -l > liste; sleep 10; echo "fini")& 21554 $fini Le mot fini est affiché 10 secondes après l'écriture sur liste.
• L'exemple d'utilisation le plus courant est l'écriture sur l'imprimante. • Chaque tâche lancée en arrière-plan est identifiée par un numéro appelé identificateur de processus (process identifier) ou PID. • Les état de ces tâches peuvent êtres consultés sur l'écran grâce à la commande PS:
$ ps -f. • Les informations obtenues sont: • Le nom de l'utilisateur qui a lancé la commande, • le numéro du PID de chaque processus, • le numéro du PID du processus père, • l'heure du début du processus, • la durée du processus • la commande de lancement
• Connaissant le numéro de la tâche ou son PID, il est possible d'arrêter son exécution. • Pour ce faire, il suffit d'envoyer le signal 9 a la tâche désirée à l'aide de la commande kill.
Le tube (pipe). • C'est un moyen qui permet la simplification de l'exécution de plusieurs commandes quand chaque commande doit prendre comme entrée la sortie de la commande qui la précède.
Les métacaractères(suite) • Exemples: • $ls essai[0-9] • affiche fichiers ayant le nom "essai" et qui se termine par un chiffre (essai1, esaai2,...etc) • $ls essai[!5,7] • affiche fichiers ayant le nom "essai" et qui ne se termine pas par 5 ou 7.
• L'interprétation spéciale des métacaractères par le SHELL est annulée soit en les faisant précédé par l'antislash "\", ou en les mettant entre guillemets.
La programmation dans le SHELL • L'un des rôles les plus importants du SHELL est la programmation (est de créer de nouvelles procédures et commandes). • Le SHELL utilise les variables pour mémoriser et traiter les données.
types de variables SHELL. • Deux (2) types de variables sont traités par le SHELL: • les entiers • les chaînes de caractères. • Le type de variable est implicitement reconnu par le SHELL.
Evaluation des expression arithmétiques. • La commande expr ordonne au shell d'évaluer une expression arithmétique qui peut être composée de variables entières seulement, de constantes entières seulement ou d'une combinaison des deux. • Les opérations arithmétiques permises sont:
• L'addition • la soustraction - • la multiplication \* • la division / • et le reste de la division euclidienne % • Les termes de l'expression doivent être séparés par des blancs.
Les arguments résultats de commandes. • Le résultat d'une commande peut servir comme argument à une autre commande. Dans ce cas, la commande argument doit être à l'intérieur des apostrophes. • Exemple: $mail ‘cat work/agenda’ < essai1 • permet d'envoyer le fichier essai1 à tous les utilisateurs déclarés dans le fichier agenda.
• Le résultat paramètré, c'est à dire subdivisé en plusieurs champs par la commande set. Ces • champs seront représentés par les paramètres $1, $2, ........., $N • Exemple:
La création de nouvelles commandes. • Soit le traitement suivant: $ $cat > cmd1 echo la date est `date ` ^d $cat cmd1 echo la date est `date ` $ • Cette nouvelle commande est lancée en utilisant le fichier comme argument de la redirection en entrée pour le SHELL. La forme générale est: sh < commande ou sh commande
Exemple • $ • $sh cmd1 • L'exécution du fichier des commandes peut être simplifier en invoquant seulement son nom. Seulement, l'utilisateur doit posséder de droit d'accès en exécution sur ce fichier.
• L'exemple suivant montre comment on peut combiner plusieurs commandes utiles pour ne former qu'une seule. $ $Vi etat echo " salut, la date est ` date ` les utilisateurs sont ` who ` mon répertoire est ` pwd ` " :wq
Affectation de variables en interactif. • La commande read permet l'interaction de l'utilisateur avec le système. $ $ cat > menu echo "Quel est votre choix 1, 2 ou 3 ?" read choix echo "vous avez choisis $choix" ^d $sh menu Quel votre choix 1, 2 ou 3 ?2 vous avez choisis 2 $
Les commandes avec arguments. • Pour généraliser l'utilisation d'une commande récemment créer il est possible de la paramètrer. Les arguments de la commande sont indiqués par les paramètres $1, $2, $3, .....,$9 dans le fichier.
• Une fois que le fichier ( ou la commande ) cx est rendu exécutable, il peut être utilisé avec de nouveaux arguments sans passer par sh. • Exemple: $ $ ls -l menu -rw-r--r-- 1 user1 group ......... menu $cx menu permission execute accordée. $ ls -l menu -rwxr--r-- 1 user1 group ......... menu $