Shell & Commandes UNIX Chapitre 2 PDF
Document Details
2019
Youssef Jabri
Tags
Related
Summary
Ce document présente un cours sur les commandes shell et Unix. Il détaille les différents types de shell, les modes d'utilisation, les caractères spéciaux, ainsi que la structure d'arborescence de Linux. Conçu pour les étudiants, le livre aborde les notions importantes comme l’environnement d’exécution et les différentes commandes internes.
Full Transcript
Outline Shell Shell & Commandes UNIX Chapitre 2 Youssef Jabri Oujda, Septembre 2019 Youssef Jabri Shell & Commandes UNIX Outline Shell 1 Shell Objectifs Commandes d...
Outline Shell Shell & Commandes UNIX Chapitre 2 Youssef Jabri Oujda, Septembre 2019 Youssef Jabri Shell & Commandes UNIX Outline Shell 1 Shell Objectifs Commandes de base Gestion des Répertoires Gestion des Fichiers Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Objectifs du Shell 1 Fournir une interface pour la saisie de commande. 2 Redirection des entrées/sorties standards. 3 Analyser les commandes. substitution de noms de fichiers substitution de variables redirection d’entrées/sorties 4 Exécution de commandes. mode synchrone mode asynchrone 5 Fournir un langage interprété. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Types de Shell Bourne Shell sh Shell disponible sur toute plateforme UNIX, le plus utilisé pour l’écriture des scripts. C shell csh Shell développé par BSD avec une syntaxe proche du langage C. Korn shell ksh Bourne Shell étendu par l’AT& T. Bourne Again Shell bash Version améliorée de sh et csh. Fourni le plus souvent avec Linux. C’est le shell par défaut de Ubuntu Linux. Zero Shell zsh shell avec beaucoup de fonctionnalités: typage, substitution et complétion très poussées. Tenex tcsh csh étendu. Pour l’administrateur système: /bin/sh. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Modes d’utilisation du shell interactif: en ligne de commande. 1 Présente un invité (prompt) à l’utilisateur et attend que celui-ci saisisse une commande. L’invité est: $ pour l’utilisateur normal en sh, bsh, bash. % pour l’utilisateur normal en csh, tcsh. # pour le root (administrateur, superuser) dans tous les shells. 2 Exécute la commande saisie par l’utilisateur. 3 Retour en 1. non-interactif: scripts shell, batch. 1 Lit une ligne du fichier du script. 2 Exécute les instructions données dans la ligne du fichier. 3 Passe à la ligne suivante. 4 Retour en 1. Le programme s’arrête lorsqu’il n’y a plus de ligne à lire ou lorsqu’une instruction spéciale (exit ou return) est rencontrée. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Caractères spéciaux Caractères Description Tabulation Espace Délimiteur de mot Retour chariot Fin de la commande à exécuter & Lance une commande en tâche de fond ; ; ; Séparateur de commande * ? [] [^ ] Substitution dans les noms de fichiers && || ! Opérateurs booléens ’ ” \ Caractères de quotation < > > | Opérateurs de redirection d’entrées sorties $ Valeur d’une variable # Début de commentaires () {} Groupement de commande Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Arborescence Linux Le système de fichiers sous Linux se compose d’une hiérarchie de répertoires, sous-répertoires et fichiers. Le répertoire le plus élevé dans l’arborescence est nommé la racine (root) symbolisé par /. /etc: les fichiers de configuration du système et des applications. /dev: les fichiers spéciaux de périphériques qui représentent les points d’accès au matériel. /bin: les commandes de base du système /sbin: les outils systèmes pour l’administration /usr: les commandes et applications pour les utilisateurs, dont les environnements graphiques /home: les répertoires personnels des utilisateurs Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Arborescence Linux / /bin /etc /home /dev /mnt /usr /jsmith /yjabri /blu Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Notions de chemin Le chemin d’accès (PATH) permet d’atteindre un fichier dans son système de fichiers (adresse dans le FS). Le chemins relatifs est défini à partir du répertoire courant:. : répertoire courant (le fils ou child «ici»).. : répertoire parent (le père ou parent «au dessus») e ou $HOME : répertoire personnel («chez moi») Le chemin absolu est défini à partir de la racine du FS: / : la racine (root) Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Les utilisateurs Sur UNIX, chaque utilisateur est identifié par un nom, par un UID (User IDentification) et par un GID (Group IDentification). Il peut appartenir à plusieurs groupes, eux-mêmes identifiés par un nom et par un GID. Comptes utilisateurs locaux définis dans les fichiers: /etc/passwd, /etc/shadow et /etc/group Commandes: id, whoami, who, who am i, w, last, users, … Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Help! La commande man: man man, man ls,… La commande apropos: cherche dans la totalité du manuel. La commande whatis: affiche la description des pages de manuel. La commande help: affiche de courts résumés des commandes intégrées (shell). L’option −−help: affiche l’aide-mémoire d’une commande. La commande info: info info, info ls,… Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Environnement d’exécution Un environnement d’exécution (ou contexte d’exécution) désigne un état du système défini par un ensemble de valeurs associées à des variables d’environnement auxquelles des processus ont accès. Quand un programme est invoqué, il reçoit un tableau de chaînes que l’on appelle environnement. Il s’agit d’une liste de paires de la forme nom=valeur. Afficher l’environnement : $ env $ printenv Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Mots reservés case, in, esac, for, do, done, if, then, elif, else, fi, while, until, break, continue, return, exit Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Commandes internes (builtins) Les commandes internes sont réalisées de manière interne par le shell; c-à-d qu’il n’y a pas de création de processus pour exécuter la commande. Ces commandes ne possèdent pas d’exécutables associés puisqu’elles sont codées en interne au shell. Pour identifier les builtins, on utilise la commande interne type. $ type echo $ echo is a shell builtin $ type ls $ ls is /bin/ls $ type cat $ cat is /bin/cat $ type gcc $ gcc is /usr/bin/gcc Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Commandes internes (builtins) alias bg bind cd command echo exec exit export fc fg hash jobid pwd read set setvar trap type umask unalias wait... Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Exécution de commandes Une commande à exécuter se compose du 1 nom de la commande, 2 suivi éventuellement des paramètres séparés par des espaces. 3 Les paramètres qui commencent par un tiret sont généralement des options spécifiques à la commande. Exemple: $ ls ‐l /usr $ cp ‐R /etc /tmp Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Enchaînement des commandes Plusieurs commandes peuvent êtres enchaînées sur une même ligne en les séparant par un point-virgule. Exemple: $ clear; pwd; echo Hello; Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Lancement en arrière plan Une commande peut être exécutée en arrière plan en plaçant l’opérateur & en fin de commande (après les paramètres). Exemple: $ sleep 10 & Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Manipulation des répertoires Sur UNIX et Linux, les noms des répertoires sont séparés par le caractère / (slash, caractère de division). Le répertoire courant est appelé. (point), le répertoire parent.. (deux point), le répertoire racine / (division) et le répertoire home (de l’utilisateur courant) est e (tilde). Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Afficher le listing de répertoires ls La commande ls afficher le contenu d’un répertoire (fichiers, dossiers et liens symboliques). Syntaxe: $ ls [options] [fichier...] S’il n’y a aucun argument, le contenu du répertoire en cours est affiché. Deux Options couramment utilisées: ‐a Afficher tous les fichiers, y compris les fichiers cachés. ‐l En plus du nom, afficher le type du fichier, les permissions d’accès, le nombre de liens physiques, le nom du propriétaire et du groupe, la taille en octets, et la date de dernière modification. Exemple: $ ls ‐l /bin/cp ‐r‐xr‐xr‐x 1 root wheel 66440 Apr 21 09:05 /bin/cp Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Changer de répertoire cd La commande cd change le répertoire courant. Syntaxe: $ cd répertoire Cette commande est en réalité une commande interne des shells. Exemple $ cd / Pour « aller » à la racine de l’arborescence du système. $ cd e/Desktop Pour « aller » au dossier Desktop dans le dossier de l’utilisateur connecté. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Créer des répertoires mkdir La commande mkdir permet de créer des répertoires. Syntaxe: $ mkdir [options] répertoires Crée un répertoire correspondant a chacun des noms passés en paramètre. Options couramment utilisées: ‐p crée les répertoires parents manquants. Exemple $ mkdir ‐p e/Desktop/Dossier1/Dossier2 Pour créer le dossier Dossier2 dans le dossier Dossier1 dans le dossier Desktop dans le dossier de l’utilisateur. Les dossiers Dossier1 et Desktop seront éventuellement créés s’ils n’existent pas. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Supprimer des répertoires non vides rmdir La commande rmdir permet de Supprimer des répertoires non vides. Syntaxe: $ rmdir [options] répertoires Supprimer chacun des répertoires passés en paramètres, uniquement si ils sont vides. Exemple: $ rmdir e/Desktop/Dossier1/Dossier2 Pour supprimer le dossier Dossier2 dans le dossier Desktop/Dossier1 s’il est vide. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Supprimer des fichiers rm La commande rm permet de Supprimer des fichiers. Syntaxe: $ rm [options] fichiers Supprime chaque fichier passé en paramètre. Par défaut, elle n’efface pas les répertoires. Options couramment utilisées: ‐i Interactif: demande de confirmer l’effacement de chaque fichier. ‐f Force. Annule ‐i. ‐r Récursif. Supprime récursivement le contenu des répertoires.!!! Exemple $ rm ‐f /tmp/* supprime tous les fichiers dans le répertoire /tmp Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Copier des fichiers cp La commande cp permet de copier des fichiers. Syntaxe: $ cp [options] fichiers... destination Permet de copier des fichiers et des répertoires. Si le dernier argument est un nom de répertoire, cp copie dans ce répertoire chaque fichier. Options couramment utilisées: ‐i Interactif: Interroger l’utilisateur avant d’écraser la destination. ‐R Récursif. Copier récursivement les répertoires. Exemple $ cp ‐R /etc /tmp miroir du répertoire /etc (et de ses sous-répertoires) dans /tmp. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Déplacer ou renommer des fichiers mv La commande mv permet de déplacer ou renommer des fichiers. Syntaxe: $ mv [options] fichiers... destination Si le dernier argument est le nom d’un répertoire existant, mv placera tous les autres fichiers à l’intérieur de ce répertoire. Sinon, s’il n’y a que deux fichiers indiqués, il déplacera le premier pour remplacer le second. Options couramment utilisées: ‐i Interactif: Demander confirmation avant écraser tout fichier existant. ‐f Force. Annule ‐i. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Contrôler l’accès à vos fichiers (1) Sous UNIX, il existe un type de sécurité pour les fichiers et répertoires: les droits et permissions UNIX, disponibles sur tous les UNIX. Pour afficher les permissions, il faut utiliser la commande ls avec l’option ‐l: Syntaxe: $ ls ‐l /kernel* ‐r‐xr‐xr‐x 1 root wheel 1926444 Jul 13 11:15 /kernel Le premier caractère (ici ’‐’) correspond au type de fichier: ’‐’ pour un fichier normal, ’d’ pour un répertoire, ’l’ pour un lien, ’s’ pour une socket. rwxrwxrwx correspond aux droits, de, respectivement: l’utilisateur, le groupe et ”les autres”. Les fichiers, dans cet exemple, appartiennent à l’utilisateur root et au groupe wheel. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Contrôler l’accès à vos fichiers (2) Il y a trois types de permissions: r accès en lecture w accès en écriture x possibilité d’exécution Chacune de ces permissions peut être attribuée à: u: l’utilisateur, g: son groupe o: les autres a: tout le monde. La commande chmod permet de changer les permissions: $ chmod a‐x./myprogram $ chmod g+rx./myprogram $ chmod u=rwx./myprogram ‐,+,=: enlève ou ajoute un droit sans toucher aux autres ou change tous les droits. Youssef Jabri Shell & Commandes UNIX Objectifs Outline Commandes de base Shell Gestion des Répertoires Gestion des Fichiers Contrôler l’accès à vos fichiers (3) On peut aussi utiliser des nombres pour changer les permissions. 0 000 aucun droit ‐‐‐ 1 001 exécution ‐‐x 2 010 écriture ‐w‐ 3 011 écriture + exécution ‐wx 4 100 lecture r‐‐ 5 101 lecture et exécution r‐x 6 110 lecture et écriture rw‐ 7 111 lecture, écriture et exécution rwx $ chmod 750./myprogram La valeur 750 est comprise de 3 chiffres, avec les autorisations 7 du propriétaire, 5 de son groupe et 0 des autres. Youssef Jabri Shell & Commandes UNIX