|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Systèmes UNIX - Le shellIntroduction au shellL'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille».
Le shell est ainsi chargé de faire l'intermédiaire entre le système d'exploitation et l'utilisateur grâce aux lignes de commandes saisies par ce dernier. Son rôle consiste ainsi à lire la ligne de commande, interpréter sa signification, exécuter la commande, puis retourner le résultat sur les sorties. Le shell est ainsi un fichier exécutable chargé d'interpréter les commandes, de les transmettre au système et de retourner le résultat. Il existe plusieurs shells, les plus courants étant sh (appelé «Bourne shell»), bash («Bourne again shell»), csh («C Shell»), Tcsh («Tenex C shell»), ksh («Korn shell») et zsh («Zero shell»). Leur nom correspond généralement au nom de l'exécutable. Chaque utilisateur possède un shell par défaut, qui sera lancé à l'ouverture d'une invite de commande. Le shell par défaut est précisé dans le fichier de configuration /etc/passwd dans le dernier champ de la ligne correspondant à l'utilisateur. Il est possible de changer de shell dans une session en exécutant tout simplement le fichier exécutable correspondant, par exemple : /bin/bash Invite de commande (prompt)Le shell s'initialise en lisant sa configuration globale (dans un fichier du répertoire /etc/), puis en lisant la configuration propre à l'utilisateur (dans un fichier caché, dont le nom commence par un point, situé dans le répertoire de base de l'utilisateur, c'est-à-dire /home/nom_de_l_utilisateur/.fichier_de_configuration), puis il affiche une invite de commande (en anglais prompt) comme suit : machine:/repertoire/courant$Par défaut dans la plupart des shells le prompt est composé du nom de la machine, suivi de deux points (:), du répertoire courant, puis d'un caractère indiquant le type d'utilisateur connecté :
Notion de ligne de commandeUne ligne de commande est une chaîne de caractères constituée d'une commande, correspondant à un fichier exécutable du système ou bien d'une commande du shell ainsi que des arguments (paramètres) optionnels : ls -al /home/jf/Dans la commande ci-dessus, ls est le nom de la commande, -al et /home/jf/ sont des arguments. Les arguments commençant par - sont appelés options. Pour chaque commande il existe généralement un certain nombre d'options pouvant être détaillées en tapant une des commandes suivantes : commande --help commande -? man commande Entrées-sorties standardLors de l'exécution d'une commande, un processus est créé. Celui-ci va alors ouvrir trois flux :
Par défaut lorsque l'on exécute un programme, les données sont donc lues à partir du clavier et le programme envoie sa sortie et ses erreurs sur l'écran, mais il est possible de lire les données à partir de n'importe quel périphérique d'entrée, voire à partir d'un fichier et d'envoyer la sortie sur un périphérique d'affichage, un fichier, etc. RedirectionsLinux, comme tout système de type Unix, possède des mécanismes permettant de rediriger les entrées-sorties standards vers des fichiers. Ainsi, l'utilisation du caractère «>» permet de rediriger la sortie standard d'une commande située à gauche vers le fichier situé à droite : ls -al /home/jf/ > toto.txt echo "Toto" > /etc/monfichierdeconfigurationLa commande suivante est équivalente à une copie de fichiers : cat toto > toto2La redirection «>» a pour but de créer un nouveau fichier. Ainsi, si un fichier du même nom existait, celui-ci sera écrasé. La commande suivante crée tout simplement un fichier vide : > fichierL'emploi d'un double caractère «>>» permet de concaténer la sortie standard vers le fichier, c'est-à-dire ajouter la sortie à la suite du fichier, sans l'écraser. De manière analogue, le caractère «<» indique une redirection de l'entrée standard. La commande suivante envoie le contenu du fichier toto.txt en entrée de la commande cat, dont le seul but est d'afficher le contenu sur la sortie standard (exemple inutile mais formateur) : cat < toto.txt Enfin l'emploi de la redirection «<<» permet de lire sur l'entrée standard jusqu'à ce que la chaîne située à droite soit rencontrée. Ainsi, l'exemple suivant va lire l'entrée standard jusqu'à ce que le mot STOP soit rencontré, puis va afficher le résultat : cat << STOP Tubes de communication (pipes)Les tubes (en anglais « pipes », littéralement tuyaux) constituent un mécanisme de communication propre à tous les systèmes UNIX. Un tube, symbolisé par une barre verticale (caractère «|»), permet d'affecter la sortie standard d'une commande à l'entrée standard d'une autre, comme un tuyau permettant de faire communiquer l'entrée standard d'une commande avec la sortie standard d'une autre. Ainsi dans l'exemple suivant, la sortie standard de la commande ls -al est envoyée sur le programme sort chargé de trier le résultat par ordre alphabétique : ls -al | sort Il est possible de cette façon de chaîner un certain nombre de commandes par tubes successifs. Dans l'exemple suivant la commande affiche tous les fichiers du répertoire courant, sélectionne les lignes contenant le mot "zip" (grâce à la commande grep) et compte le nombre de lignes total : ls -l | grep zip | wc -l Trucs & astuces pertinents trouvés dans la base de connaissances
Discussions pertinentes trouvées dans le forum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||