Commandes Shell 20/09/2004 Initialisation Authentification obligée : {LOGIN} + {PASSWORD} Changer de mot de passe : [passwd] système simple [password] système réseau • Shell = Programme qui : - attend des commandes - interprète des commandes - exécute des commandes • Kernel = Programme noyau en arrière-plan qui gère le hardware • Hardware = Le matériel qui constitue l’ordinateur Les fichiers (« tout » est fichier) • Fichiers standard • Pipes = Permet de communiquer avec un programme • Liens symboliques = Raccourci • Entrées dans les périphériques (devices) Ex. : dev0/audio = Écrit dans le fichier de la carte son pour faire de la musique Structure de fichiers Racine = [/] Exécutables = [/bin] [/usr/bin] [/usr/local/bin] Exécutables systèmes = [/sbin] [/usr/sbin] Fichiers systèmes = [/var] Entrées de périphériques = [/dev] [/dev/hda] (disque 1 IDE) [/dev/sda] (disque 1 SCSI) Fichiers de configuration = [/etc] Fichiers de l’état système = [/proc] Répertoires utilisateurs = [/home] Les Shell Shell Bourne = [bash] Utilisé par 50% des utilisateurs C Shell (science) = [csh] Utilisé par 25% des utilisateurs Korn Shell (gestion) = [ksh] Utilisé par 25% des utilisateurs Premières commandes • [ls] = Liste des fichiers [-l] - affichage long [-t] - par date [-s] - par taille [-a] - tous les fichiers sans exception ...
Initialisation Authentification obligée : {LOGIN} + {PASSWORD} Changer de mot de passe : [passwd] système simple [password] système réseau · Shell = Programme qui : - attend des commandes interprète des commandes - - exécute des commandes · Kernel = Programme noyau en arrière-plan qui gère le hardware · Hardware = Le matériel qui constitue l’ordinateur Les fichiers (« tout » est fichier) · Fichiers standard · Pipes = Permet de communiquer avec un programme · Liens symboliques = Raccourci · Entrées dans les périphériques (devices) Ex. : dev0/audio = Écrit dans le fichier de la carte son pour faire de la musique Structure de fichiers Racine = [/] Exécutables [/bin] [/usr/bin] [/usr/local/bin] = Exécutables systèmes = [/sbin] [/usr/sbin] Fichiers systèmes = [/var] Entrées de périphériques = [/dev] [/dev/hda] (disque 1 IDE) [/dev/sda] (disque 1 SCSI) Fichiers de configuration = [/etc] Fichiers de l’état système = [/proc] Répertoires utilisateurs = [/home]
Les Shell Shell Bourne = [bash] Utilisé par 50% des utilisateurs C Shell (science) = [csh] Utilisé par 25% des utilisateurs Korn Shell (gestion) = [ksh] Utilisé par 25% des utilisateurs Premières commandes · [ls] = [-l] [-t] [-s] [-a] [ r] - [--help] · [man + {CMD}] = · [mkdir] = · [rmdir] = [-f] · [pwd] = [cd] = · [.] [..] [<NULL>] ou [~] [-] [touch + {FILE}] = · · [rm + {FILE}] = [-f] [ r] -
Liste des fichiers - affichage long - par date par taille -- tous les fichiers sans exception inclus les fichiers cachés commençant par [.] - inverse l’affichage - aide Documentation officielle de la commande {CMD} Crée un répertoire Efface un répertoire v ide - force l’effacement même si il y a des fichiers ou dossiers dedans « Print Working Directory » Change de répertoire de travail - répertoire de travail - répertoire parent du répertoire de travail - change de répertoire vers le [/home] de l’utilisateur - retourne là où on était avant le dernier [cd] Change la date du fichier {FILE} en date du jour Crée {FILE} de 0 octets si {FILE} n’existe pas Efface {FILE} - pas de confirmation - destruction récursive
Expression des noms de fichiers [rm a(A-Z)*] = Efface tous les fichiers qui commencent par a [rm rf *] = Efface absolument tous les fichiers sans avertir [rm \*] = Efface le fichier * (\ est le caractère d’échappement) Redirection des E/S [>] = Redirige le résultat de la commande uniquement [2>] = Redirige les messages d’erreurs uniquement [&>] = Redirige le résultats et les erreurs éventuelles [{CMD} < {FILE}] = Exécute {CMD} avec {FILE} en arguments [{CMD1} | {CMD2}] {CMD1} envoie son résultat à {CMD2} = {CMD2} travaille avec les résultats envoyés par {CMD1} en flux continu [cat] = Envoie <stdin> (clavier) vers <stdout> (écran) Les variables d’environnement [env] = Liste des variables d’environnement [echo ${VAR}] = Affiche la variable {VAR} Ex : [echo $HOME] /home/fa123/{LOGIN} Définition de la variable HOME : [HOME=/usr/] Définition de la variable PATH en concaténant l’ancienne : [PATH=$PATH;/home/fa123/{LOGIN}/]
Les utilisateurs - Utilisateur ‘normal’ = Tous les droits dans son propre HOME Droits restreints ailleurs - Utilisateur ‘root’ = Tous les droits partout [su] = Devenir ‘root’ [su -] = Devenir ‘root’ en récupérant les variables d’environnement [su (-) {LOGIN}] = Devenir l’utilisateur {LOGIN} [whoami] = Savoir en qui l’on est loggé Droits sur les fichiers Exemple : - [touch toto] - [ls -l] rw- r-- r-- {LOGIN}:fa123 0 20-sept-2004 toto Droits du propriétaire Propriétaire Taille Nom Droits du groupe Groupe Date de créati n o Droits des autres [chmod w toto] = r-- r-- r --[chmod +w toto] = rw- r-- r--[chmod {APP} ± {RIGHTS} {FILE}] {APP} : U(ser) {RIGHTS} : R(ead) G(roup) W(rite) O(ther) X(ecut) A(ll) Exemple : rwx rw- r--111 110 100 [chmod 764] = = = 7 6 4 Les droits sur les répertoires sont les mêmes que sur les fichiers Propriété · [chown {LOGIN} {FILE}] = {LOGIN} étant le nouveau propriétaire de {FILE} [-r] - changement récursif
Commandes (suite) Complétion automatique d’une commande tapée avec la touche [TABULATION] « » = Désigne un fichier contenant des espaces passé à une commande [\ ] = Désigne un espace insécable [ ↑ ] [ ↓ ] = Historique des commandes tapées [history] = Affichagede l’historique en fonction la taille définit par _ La variable d’environnement HISTORY SIZE [history | more] = Affichage lisible de l’historique [!128] = Relance la {CMD} n°128 [mc] = Lance ‘Midnight Commander’ (explorateur de fichiers) Scripts Shell Programme formé de commandes interprétables par le Shell directement créé grâce à un simple éditeur de texte comme : -vi -emacs Les ligne commençant par ‘#’ sont des commentaires. Sauf la première ligne qui peut commencer par ‘#!’. Pour vi : [{ESCAPE}:wq] = [{ESCAPE}:w] = [{ESCAPE}:q!] = [{ESCAPE}i] = [{ESCAPE}x] = [{ESCAPE}dd] = Exécution du script : [sh toto] [. toto] [chmod +x toto] [./toto]
Sauvegarder et quitter SauvegarderQuitter sans sauver Mode insertion Efface un caractère Efface la ligne du curseur
Variables d’environnement [toto=42] [echo toto] toto [echo $toto] 42 Comment le Shell execute un programme {DESSIN} Variables non héritées [toto=42] [sh] [echo $toto] (rien) toto=43 [ ] o $t 43 [ech oto] xi [e t] ot 42 [echo $t o] Fichiers d’initialisation (démarrage) Pour tout le monde : [/etc/rc.d/] rc1.d pas de driver, pas de réseau rc2.d rc3.d normal rc4.d non utilise rc5.d normal + serveur graphique rc6.d reboot [/etc/rc.d/rc.local/] [/etc/inittab] ligne initrunlevel définit le rcX.d à lancer Utilisateur : [.bashrc] variables utilisateur [.login] [.profile] Séquence d’initialisation : [rc3.d] [rc.local] [login] [~/.bashrc]
Les liens symboliques Est un autre nom pour un fichier ou répertoire. [ln {FILE1} {FILE2}] lien fort (le fichier s’appelle FILE1 et FILE2) [ln -s {FILE1} {FILE2}] lien faible (comme Windows) Montage de périphériques Pour ajouter un périphérique non USB [mount] liste des périphériques montés [/etc/mtab] liste des périphériques montés [/etc/fstab] liste des périphériques montables [mount {DEVICE} {POINT DE MONTAGE}] montage [umount {POINT DE MONTAGE}] démontage Exemple de la disquette : [mount /dev/fd0 /mnt/floppy] [ls /mnt/floppy] liste le contenu de la disquette [umount /mnt/floppy] Un USER peut monter les périphériques déclarés dans /etc/fstab avec [mount] Montage NFS Soit : - un serveur SRV dont les autorisations de partage sont dans le fichier [/etc/exports] - un client CLI [mount -t nfs SRV:/ /mnt/nfs]
monte la racine [/] de SRV dans [/mnt/nfs] de CLI
Contrôle de flux if <CONDITION> then <INSTRUCTION> else <INSTRUCTION> fi Les conditions de fichiers [ -f <FILENAME> ] [ -x (-r) (-w) <FILENAME> ] [ -d <FILENAME> ] Les conditions numériques [ a ge b ] ≥ gt > le ≤ lt < eq = ne ≠ Négation d’une condition [ ! <CONDITION> ] Boucle for for <VARIABLE> in <LISTE> do <INSTRUCTION> done
Test si le fichier existe Test l’existence du droit (x, r, w) sur le fichier Test l’existence du répertoire
Exemple : for x in toto titi 42 BX27 do echo $x done for x in $(seq 100) do touch toto$x done
for x in 0 1 2 3 4 5 6 7 8 9 do for y in 0 1 2 3 4 5 6 7 8 9 do touch toto$x$y done done L’instruction case case <VARIABLE> in val1 ) <INSTRUCTION> val2 ) <INSTRUCTION> | valx ) <INSTRUCTION> esac Récupérer le résultat d’un programme `<PROGRAMME> <ARGS>` Démodé $(<PROGRAMME> <ARGS>) Fashion
Exemple : for x in $(ls) do if [ d $x ] - then echo $x est un dossier else exho $x est un fichier fi done
for x in $(seq 12) do if [ $x eq 8 ] then echo $x fi done
Passage d’arguments à un script <SCRIPT> Arg1, Arg2, , Arg3 Il n’y a que 10 variables passée à un script : $0 Nom du script $1 Arg1 | $9 Arg9 $@ Liste des arguments $# Nombre d’arguments (y compris >10) Pour pouvoir utiliser plus de 9 arguments, on utilise la commande : [ shift ] Décale la liste d’arguments d’un argument vers la droite $1 $2 | $9 Arg10 Remplacement de motifs Soit le script ‘toto’
./toto x*
[CTRL x*]
./toto xa xb xc
Les différents filtres Syntaxe : [{CMD1} | {FILTRE}] · [more] = Affichage page par page [espace] - page suivante [enter] - ligne suivante · [less] = Idem que [more] mais on peut revenir en arrière · [lead] = 10 premières lignes [-n 20] - 20 premières lignes · [tail] = 10 dernières lignes [-f] - En continu (dynamique) · [cut] = Affichage en colonnes [-f + {NBRE}] - Numéro de champ à afficher [-d + {CARAC}] - Séparateur de champ [cut] peut être remplacé par : [cat {FILE} | awk ‘{print $1}’] Exemple pour récupérer les lignes 10 à 15 du fichier {FILE} : [cat {FILE} | head -n 15 | tail -n 6] [grep] (Get Regular Expression) Syntaxe : [grep {SWITCHES} {MOTIF}] Affiche les lignes contenant ou non le {MOTIF} {SWITCHES} · [-i] - Ne pas tenir compte de la casse [-v] - Ne contenant pas le {MOTIF} [-n] - Affiche les numéros de ligne Exemple d’utilisation avec une commande : [{COM} | grep {MOTIF}] Ce qui équivaut à : [{COM} > {FILE}] [grep {MOTIF} {FILE}]