47
O. Dalle Licence Informatique Systèmes d’Exploitation 1 1 Systèmes d’Exploitation : utilisation « avancée » Plan du Cours Plan du Cours I. I. Interface Graphique (Xwindows) Interface Graphique (Xwindows) II. II. Interface Textuelle ( Interface Textuelle ( zsh zsh ) ) 1. 1. Présentation Générale Présentation Générale 2. 2. Utilisation avancée Utilisation avancée 3. 3. Eléments pour l’écriture de scripts Eléments pour l’écriture de scripts III. III. a a - - Environnement Réseau Environnement Réseau III. III. b b - - Introduction à Windows NT Introduction à Windows NT IV. IV. Outils de traitement de données Outils de traitement de données V. V. Installation de Installation de Linux Linux

II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 11

Systèmes d’Exploitation : utilisation « avancée »

Plan du CoursPlan du Cours

I.I. Interface Graphique (Xwindows)Interface Graphique (Xwindows)II.II. Interface Textuelle (Interface Textuelle (zshzsh))

1.1. Présentation GénéralePrésentation Générale2.2. Utilisation avancéeUtilisation avancée3.3. Eléments pour l’écriture de scriptsEléments pour l’écriture de scripts

III.III. a a -- Environnement RéseauEnvironnement RéseauIII.III. b b -- Introduction à Windows NTIntroduction à Windows NTIV.IV. Outils de traitement de donnéesOutils de traitement de donnéesV.V. Installation de Installation de LinuxLinux

Page 2: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 22

II. Interface Textuelle (zsh)

1. Présentation Générale1. Présentation Générale

Qu’estQu’est--ce qu’un ILC (ce qu’un ILC (shellshell) ?) ?Algorithme d’un ShellAlgorithme d’un ShellBourne shell Bourne shell et dérivéset dérivésScripts de configurationScripts de configuration

Page 3: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 33

II.1 Présentation Générale

Qu’estQu’est--ce qu’un ILC ?ce qu’un ILC ?

Un programme comme un autreUn programme comme un autreEcrit en CEcrit en CCapable de lire/écrire sur un terminal (ou une Capable de lire/écrire sur un terminal (ou une fenêtre graphique émulant un terminal)fenêtre graphique émulant un terminal)Sait lancer des processusSait lancer des processus•• Exécution de commandes «Exécution de commandes « externesexternes »»

En général le premier processus d’un utilisateurEn général le premier processus d’un utilisateur•• Voir fichier Voir fichier passwdpasswd•• Processus Processus ––zsh zsh lors d’un lors d’un rloginrlogin

Fournit un langage de programmation interprétéFournit un langage de programmation interprété•• Fichiers de commandeFichiers de commande

Page 4: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 44

II.1 Présentation Générale

Algorithme d’un ShellAlgorithme d’un Shell

Init Init :: interprétation des fichiers de configurationinterprétation des fichiers de configurationTANT QUETANT QUE ((entrée != {entrée != {eofeof, exit, , exit, logoutlogout}}))FAIREFAIRE

Saisir commandeSaisir commande ((editionedition «« à la à la emacsemacs », complétion, …) », complétion, …) Analyse lexicale et syntaxiqueAnalyse lexicale et syntaxiqueExpansion des paramètresExpansion des paramètresCASCAS de de $0$0 dansdans

fonction, fonction, cmde cmde interneinterne) : ) : l’exécuterl’exécuterfichier binaire dans PATHfichier binaire dans PATH) :) :

créer créer process process ayant ayant $O$O comme comme progprog..fichier textefichier texte) : ) : lancer l’interpréteurlancer l’interpréteur

(#!…) ou sinon /(#!…) ou sinon /binbin/sh + texte/sh + texteFIN CASFIN CASSI (SI (‘&’ n’est pas en fin de chaîne‘&’ n’est pas en fin de chaîne))ALORSALORS

attendre fin d’exécution du processus lancéattendre fin d’exécution du processus lancéFIN SIFIN SI

FIN TANT QUEFIN TANT QUE

Page 5: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 55

II.1 Présentation Générale

Bourne Bourne Shell et DérivésShell et Dérivés

Bourne Bourne Shell (/Shell (/binbin/sh)/sh)Le plus «Le plus « classiqueclassique »»

Utilisé pour les scripts systèmeUtilisé pour les scripts systèmeKorn Shell (/Korn Shell (/binbin//kshksh))

1ère évolution1ère évolutionnombreuses améliorations, mais encore des défautsnombreuses améliorations, mais encore des défauts

Bourne Again Bourne Again Shell (/Shell (/binbin//bashbash))Le Le shellshell GNU/FSF (GNU/FSF (shell shell «« officiel de officiel de linuxlinux »)»)Récupère nombreuses améliorations d’autres Récupère nombreuses améliorations d’autres shell shell ((kshksh, , tcshtcsh), ),

ajoute ses propres améliorationsajoute ses propres améliorationsZshZsh

Le plus complet (idem Le plus complet (idem bashbash//kshksh, plus améliorations propres), plus améliorations propres)Ambitieux : tout ce dont les utilisateurs pourraient avoir besoAmbitieux : tout ce dont les utilisateurs pourraient avoir besoin doit in doit

être disponible dans être disponible dans zsh zsh ……

Page 6: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 66

II.1 Présentation Générale

Scripts Personnels de ConfigurationScripts Personnels de Configuration

Bourne Bourne ShellShell.profile.profile

kshksh.profile, ..profile, .kshrckshrc

bashbash.profile, ..profile, .bashbash_profile, ._profile, .bashrcbashrc, ., .bashbash__loginlogin

zshzsh..zprofilezprofile, ., .zshrczshrc, ., .zloginzlogin, ., .zlogoutzlogout, ., .zshenvzshenv

Page 7: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 77

II.1 Présentation GénéraleScripts Personnels de ConfigurationScripts Personnels de Configuration

Le cas de ZSHLe cas de ZSH

Les scripts sont recherchés dans $ZDOTDIRLes scripts sont recherchés dans $ZDOTDIR$HOME par défaut (ZDOTDIR non définie)$HOME par défaut (ZDOTDIR non définie)

Plusieurs contextes sont considérésPlusieurs contextes sont considérésshell shell non interactifnon interactif•• ..zhsenvzhsenv

shellshell interactifinteractif•• ..zshenvzshenv, ., .zshrczshrc

shellshell interactif de interactif de login login •• ..zshenvzshenv, ., .zprofilezprofile, ., .zshrczshrc, ., .zloginzlogin•• Lors de la terminaison : .Lors de la terminaison : .zlogoutzlogout

Page 8: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 88

II.1 Présentation GénéraleScripts de Configuration Systèmes Scripts de Configuration Systèmes

de de ZshZshPour chacun des scripts personnels de configuration, il Pour chacun des scripts personnels de configuration, il existe un équivalent système existe un équivalent système

//etcetc//zshenvzshenv, /, /etcetc//zprofilezprofile, /, /etcetc//zshrczshrc, , //etcetc//zloginzlogin

Maintenus par Maintenus par rootrootChacun des scripts de configuration «Chacun des scripts de configuration « systèmesystème » est appelé » est appelé juste avant son équivalent «juste avant son équivalent « utilisateurutilisateur »»

•• la séquence des exécution pour un la séquence des exécution pour un shell shell de de login login est donc la est donc la suivante : /suivante : /etcetc//zshenvzshenv, ., .zshenvzshenv, /, /etcetc//zprofilezprofile, ., .zprofilezprofile, , //etcetc//zshrczshrc, ., .zshrczshrc, /, /etcetc//zloginzlogin, ., .zloginzlogin

•• //etcetc//zlogout zlogout avant .avant .zlogoutzlogout•• Le script /Le script /etcetc//zprofilezprofile est supposé exécuter le script /est supposé exécuter le script /etcetc/profile /profile

commun à tous les «commun à tous les « Bourne Bourne ShellShell »»•• //etcetc/profile peut lui même exécuter d’autres scripts, par /profile peut lui même exécuter d’autres scripts, par

exemple /exemple /etcetc/profile.d/*.sh sous /profile.d/*.sh sous linux linux ……

Page 9: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 99

II.1 Présentation GénéraleScripts Personnels de ConfigurationScripts Personnels de Configuration

de de ZshZsh..zshenvzshenv

Toujours lu => bon endroit pour les variables Toujours lu => bon endroit pour les variables d’environnementd’environnement

..zprofilezprofileLu en premier (Lu en premier (apres zshenvapres zshenv) avec un ) avec un shellshell de de loginlogin : le bon : le bon endroit pour initialiser une sessionendroit pour initialiser une session

..zshrczshrcLu quand le Lu quand le shell shell est interactif => tout ce qui facilite la vie est interactif => tout ce qui facilite la vie de l’utilisateur interactifde l’utilisateur interactif

•• alias (raccourcis), complétion, prompt, …alias (raccourcis), complétion, prompt, …

..zloginzloginLu en dernier, lors du Lu en dernier, lors du login login : le bon endroit pour poser des : le bon endroit pour poser des questions si besoin (questions si besoin (config config DISPLAY, …)DISPLAY, …)

Page 10: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1010

II. Interface Textuelle (zsh)

2. Utilisation 2. Utilisation interactive interactive avancée de avancée de zshzsh

Mécanismes de Mécanismes de redirectionredirectionMécanismes de substitutionMécanismes de substitution

HistoriqueHistoriqueCommandesCommandesProcessusProcessusFile File globbingglobbing

Page 11: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1111

II.2 Utilisation interactive de Zsh

Mécanismes de Mécanismes de RedirectionRedirection

Rappel des principes :Rappel des principes :Chaque processus possède 10 descripteurs de Chaque processus possède 10 descripteurs de fichiers, numérotés 0 à 9fichiers, numérotés 0 à 9Chaque descripteur indique un fichier Chaque descripteur indique un fichier 3 descripteurs actifs par défaut :3 descripteurs actifs par défaut :•• 0 désigne l'entrée standard du processus0 désigne l'entrée standard du processus•• 1 désigne la sortie standard1 désigne la sortie standard•• 2 désigne la sortie standard d'erreur2 désigne la sortie standard d'erreur•• Avec un Avec un shell shell interactif, les 3descripteurs par défaut sont interactif, les 3descripteurs par défaut sont

connectés à la (pseudoconnectés à la (pseudo--)console (/)console (/devdev//ttyxxttyxx))

Une Une redirection redirection permet d'établir ou modifier une permet d'établir ou modifier une liaison entre un descripteur et un fichierliaison entre un descripteur et un fichier

Page 12: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1212

II.2 Utilisation interactive de ZshTypes de Types de Redirection Redirection ::

Redirection Redirection ElémentairesElémentaires

< FIC< FICOuvre le fichier FIC et le place sur Ouvre le fichier FIC et le place sur stdinstdin

<> FIC<> FICOuvre le fichier FIC en lecture/Ouvre le fichier FIC en lecture/ecriture ecriture et le place et le place sur sur stdinstdin

> FIC> FICOuvre le fichier FIC et le connecte à la sortie Ouvre le fichier FIC et le connecte à la sortie standardstandard

>> FIC >> FIC Ouvre le fichier FIC an mode "APPEND" et le Ouvre le fichier FIC an mode "APPEND" et le connecte sur la sortie standardconnecte sur la sortie standard

Page 13: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1313

II.2 Utilisation interactive de ZshTypes de Types de Redirections Redirections ::

Redirection Redirection ""HereHere Document"Document"

<<MOT, <<<<MOT, <<--MOTMOTLes lignes suivantes sont placées sur l'entrée Les lignes suivantes sont placées sur l'entrée standard jusqu'à l'apparition de MOTstandard jusqu'à l'apparition de MOTSi MOT contient des caractères "protégés" par ', ", Si MOT contient des caractères "protégés" par ', ", ou ou \\, les lignes suivantes (jusqu'à apparition de , les lignes suivantes (jusqu'à apparition de MOT) ne subissent pas de substitutionMOT) ne subissent pas de substitutionforme <<forme <<-- : les tabulations en début de ligne sont : les tabulations en début de ligne sont ignoréesignorées

Page 14: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1414

II.2 Utilisation interactive de ZshTypes de Types de Redirections Redirections ::

Duplication et Fermeture de DescripteursDuplication et Fermeture de Descripteurs

<&DIGIT<&DIGITL'entrée standard est dupliquée à partir du L'entrée standard est dupliquée à partir du descripteur DIGITdescripteur DIGIT

>&DIGIT>&DIGITLa sortie standard est dupliquée vers le La sortie standard est dupliquée vers le descripteur DIGITdescripteur DIGIT

<&<&--Fermeture de Fermeture de stdinstdin

>&>&--Fermeture de Fermeture de stdoutstdout

Page 15: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1515

II.2 Utilisation interactive de ZshTypes de Types de Redirections Redirections ::

RedirectionsRedirections "exotiques""exotiques"

CoprocessusCoprocessusUn Un coprocessus coprocessus est un processus "binôme" lancé est un processus "binôme" lancé par le processus courantpar le processus courant>&p, <&p>&p, <&p•• permettent de brancher (les descripteurs de) le permettent de brancher (les descripteurs de) le

processus courant sur le processus courant sur le coprocessuscoprocessus

<<<WORD<<<WORDWORD subit une passe de substitution, puis le WORD subit une passe de substitution, puis le résultat est envoyé sur l'entrée standardrésultat est envoyé sur l'entrée standard

Page 16: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1616

II.2 Utilisation interactive de Zsh

Opérations sur les DescripteursOpérations sur les Descripteurs

RedirectionRedirection d'autres descripteurs que d'autres descripteurs que stdin stdin et et stdoutstdoutIl suffit de mettre le numéro du descripteur juste avant la Il suffit de mettre le numéro du descripteur juste avant la redirectionredirectionExemple : date >&3 3>totoExemple : date >&3 3>toto

•• la sortie la sortie std std de date est envoyée sur de date est envoyée sur desc num desc num 3, puis 3, puis desc desc num num 3 est redirigé vers fichier toto3 est redirigé vers fichier toto

Associer un fichier à un descripteurAssocier un fichier à un descripteurexec exec DIGIT<FIC, DIGIT<FIC, exec exec DIGIT>FICDIGIT>FICexec exec DIGIT&<DIGIT, DIGIT&<DIGIT, exec exec DIGIT>&DIGIT, …DIGIT>&DIGIT, …

Entrées/Sorties vers ou depuis un descripteurEntrées/Sorties vers ou depuis un descripteurread read [[--u DIGIT] variableu DIGIT] variableechoecho/print [/print [--u DIGIT] u DIGIT] chainechaine

Page 17: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1717

II.2 Utilisation interactive de Zsh

Exemples de Exemples de RedirectionsRedirections

findfind / 2>&1/ 2>&1Les messages d'erreur sont redirigés vers la sortie standard Les messages d'erreur sont redirigés vers la sortie standard (en plus des messages normaux)(en plus des messages normaux)

execexec 3> toto 3> toto Le descripteur 3 est redirigé en écriture sur le fichier toto :Le descripteur 3 est redirigé en écriture sur le fichier toto :tout ce qui sera écrit sur le tout ce qui sera écrit sur le decripteur decripteur 3 ira dans le fichier 3 ira dans le fichier totototo

lsls ––al >&3al >&3Le résultat de Le résultat de 'ls'ls ––al' est envoyé vers le descripteur 3 al' est envoyé vers le descripteur 3 (fichier toto)(fichier toto)

execexec 3>&3>&--Le descripteur numéro 3 (fichier toto) est ferméLe descripteur numéro 3 (fichier toto) est fermé

Page 18: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1818

II.2 Utilisation interactive de Zsh

Redirections Redirections MultiplesMultiples

Contrairement aux Contrairement aux pipespipes , les , les redirections redirections peuvent être multiples peuvent être multiples

L'option MULTIOS doit être validéeL'option MULTIOS doit être validée•• commande : commande : setopt multiossetopt multios

La sortie standard peut être redirigée plusieurs La sortie standard peut être redirigée plusieurs foisfois

•• Equivalent à la commande 'tee fic1 fic2 …'Equivalent à la commande 'tee fic1 fic2 …'•• exemple : exemple : lsls ––al > titi > totoal > titi > toto

La sortie standard peut être redirigée plusieurs La sortie standard peut être redirigée plusieurs foisfois

•• Equivalent a la commande Equivalent a la commande 'cat 'cat fic1 fic2 …'fic1 fic2 …'

Page 19: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 1919

II.2 Utilisation interactive de Zsh

Mécanismes de substitution (Expansion)Mécanismes de substitution (Expansion)

Plusieurs types de substitution, réalisées Plusieurs types de substitution, réalisées dans l’ordre suivant :dans l’ordre suivant :1.1. History History expansion (expansion (shell shell interactif)interactif)2.2. Alias expansionAlias expansion3.3. Process Process substitution + substitution + ParameterParameter expansion + expansion +

Command substitution + Command substitution + ArithmeticArithmetic expansion + expansion + BraceBrace expansionexpansion

4.4. Suppression des Suppression des \\, ', et ", ', et "5.5. Filename Filename expansionexpansion6.6. Filename Filename générationgénération

Page 20: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2020

II.2 Utilisation interactive de ZshMécanisme d'historique Mécanisme d'historique

((HistoryHistory substitution)substitution)

Réutilisation de (parties) de commandes Réutilisation de (parties) de commandes précédentesprécédentes

Sauvegarde des commandes dans l'historique Sauvegarde des commandes dans l'historique (taille = HISTSIZE)(taille = HISTSIZE)

Substitution d'historique : commence par '!'Substitution d'historique : commence par '!'3 catégories3 catégories•• Désignation d'événement (= commande complète)Désignation d'événement (= commande complète)•• Désignation de motsDésignation de mots•• ModificateursModificateurs

Syntaxe générale :Syntaxe générale :!!evtevt::wordword…:…:modmod……

Page 21: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2121

II.2 Utilisation interactive de ZshMécanisme d'historique :Mécanisme d'historique :

Désignation d'évènementsDésignation d'évènements

!! : commande précédente!! : commande précédente!N : Nième commande depuis le début l'historique!N : Nième commande depuis le début l'historique!!--N : Nième commande en remontant l'historique N : Nième commande en remontant l'historique depuis maintenantdepuis maintenant!STR : la commande la plus récente qui débute par !STR : la commande la plus récente qui débute par STRSTR!?STR[?] : la commande la plus récente qui contient !?STR[?] : la commande la plus récente qui contient STRSTR!{…} : délimite la commande d'historique!{…} : délimite la commande d'historique

Page 22: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2222

II.2 Utilisation interactive de ZshMécanisme d'Historique:Mécanisme d'Historique:

Désignation de motsDésignation de motsO (zéro) : le premier mot (commande)O (zéro) : le premier mot (commande)N : le Nième motN : le Nième mot^ : le premier argument (idem '1')^ : le premier argument (idem '1')$ : le dernier argument$ : le dernier argument% : le mot qui correspond à la recherche ?% : le mot qui correspond à la recherche ?str str la plus la plus récenterécentexx--y : une suite formée des mots numéros x à y (y : une suite formée des mots numéros x à y (--y y 00--y)y)x* : xx* : x--$$xx-- : idem sauf que le dernier mot est omis: idem sauf que le dernier mot est omis

Pratique pour les commande du typePratique pour les commande du typecp cp sources … destination sources … destination

Page 23: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2323

II.2 Utilisation interactive de ZshMécanisme d'HistoriqueMécanisme d'Historique

Principaux ModificateursPrincipaux Modificateurs

h : supprime la fin d'un chemin, ne garde que h : supprime la fin d'un chemin, ne garde que le premier élément (le premier élément (headhead))r : supprime suffixe de la forme .r : supprime suffixe de la forme .xxxxxxe : supprime tout sauf le suffixee : supprime tout sauf le suffixet : supprime le début du chemin, ne garde que t : supprime le début du chemin, ne garde que la fin (la fin (tailtail))& : répète la substitution précédente& : répète la substitution précédentel/u : conversion min/MAJl/u : conversion min/MAJs/L/R/ : remplace L par Rs/L/R/ : remplace L par R

Page 24: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2424

II.2 Utilisation interactive de ZshMécanisme d'Historique : Mécanisme d'Historique :

ExemplesExemples[1] [1] cpcp toto titi tata toto titi tata destdest//[2] !!0[2] !!0-- dest2/dest2/

tous les mots de la dernière commande sauf le dernier tous les mots de la dernière commande sauf le dernier => [2] => [2] cpcp toto titi tata dest2toto titi tata dest2

[3] [3] lsls !!--2:$2:$Le dernier mot de l'avant dernière commandeLe dernier mot de l'avant dernière commande

=> [3] => [3] ls destls dest[4] [4] echoecho "!?"!?cpcp?" > ?" > exmpleexmple..txttxt

La dernière commande qui contient La dernière commande qui contient cpcp=> [4] => [4] echo echo ""cpcp toto titi tata dest2" > exemple.toto titi tata dest2" > exemple.txttxt

[5] [5] mvmv !!$ !!$:r.!!$ !!$:r.foofoole dernier mot de la dernière commande ; le dernier mot de la le dernier mot de la dernière commande ; le dernier mot de la dernière commande dans lequel on a supprimé le .dernière commande dans lequel on a supprimé le .txttxt=> [5] => [5] mv mv exemple.exemple.txt txt exemple.exemple.foofoo

Page 25: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2525

II.2 Utilisation interactive de ZshMécanisme de Substitution de ProcessusMécanisme de Substitution de Processus

((Process Process substitution)substitution)

3 formes de substitutions3 formes de substitutions<(CMD)<(CMD)>(CMD)>(CMD)=(CMD)=(CMD)

Règles de fonctionnement communes aux 3 formes :Règles de fonctionnement communes aux 3 formes :La commande CMD est exécutée dans un processus séparéLa commande CMD est exécutée dans un processus séparéLe résultat de CMD est placé dans un fichier temporaireLe résultat de CMD est placé dans un fichier temporaireC'est C'est le nom de ce fichier temporairele nom de ce fichier temporaire qui est substitué à qui est substitué à l'une des 3 formes précédentesl'une des 3 formes précédentes

Page 26: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2626

II.2 Utilisation interactive de ZshMécanisme de Substitution de Processus :Mécanisme de Substitution de Processus :

Différences entre les 3 formesDifférences entre les 3 formes<(CMD) : <(CMD) :

la sortie standard de CMD est branchée sur le fichier temporairela sortie standard de CMD est branchée sur le fichier temporaire(autrement dit, CMD écrit dans le fichier)(autrement dit, CMD écrit dans le fichier)Le fichier temporaire est de type "tube nommé" (Le fichier temporaire est de type "tube nommé" (named named pipe) => pipe) => "non "non seekableseekable""

>(CMD)>(CMD)L'entrée standard de CMD est branchée sur le fichier temp. (CMDL'entrée standard de CMD est branchée sur le fichier temp. (CMD

lit dans le fichier)lit dans le fichier)Tube nommé, donc "non Tube nommé, donc "non seekableseekable""

=(CMD)=(CMD)Comme pour <(CMD) : la sortie standard est branchée sur le fichiComme pour <(CMD) : la sortie standard est branchée sur le fichiererLe fichier temporaire est un "vrai" fichier, donc "Le fichier temporaire est un "vrai" fichier, donc "seekableseekable""Inconvénient :Inconvénient : CMD doit être terminée et sont résultat sauvé en CMD doit être terminée et sont résultat sauvé en entier dans le fichier temporaireentier dans le fichier temporaire

Page 27: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2727

II.2 Utilisation interactive de ZshMécanisme de Substitution de Processus :Mécanisme de Substitution de Processus :

ExempleExemplepaste paste <(<(cut cut ––f1 FILE1) <(f1 FILE1) <(cut cut ––f3 FILE3) f3 FILE3) > >(PROCESS1) > >(PROCESS2)> >(PROCESS1) > >(PROCESS2)

Résultat : Résultat : Le champ 1 du fichier FILE1 et le champ 3 du fichier FILE3 Le champ 1 du fichier FILE1 et le champ 3 du fichier FILE3 sont extraits avec la commande sont extraits avec la commande cut cut et collés avec la et collés avec la commande commande pastepaste. . Le résultat est envoyé vers les processus PROCESS1 et Le résultat est envoyé vers les processus PROCESS1 et PROCESS3PROCESS3

Page 28: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2828

II.2 Utilisation interactive de Zsh

Mécanisme de Substitution de CommandeMécanisme de Substitution de Commande

De la forme $(CMD) ou `CMD`De la forme $(CMD) ou `CMD`La forme est substituée par le résultat de CMDLa forme est substituée par le résultat de CMDExemples : Exemples : ••echoecho "Répertoire courant : `"Répertoire courant : `pwdpwd`"`"

••echoecho "Votre groupe d'utilisateur : $(id "Votre groupe d'utilisateur : $(id ––gn gn )")"

Les éventuels sauts de lignes en fin de résultat Les éventuels sauts de lignes en fin de résultat sont éliminéssont éliminésLorsque l'option GLOB_SUBST est positionnée, le Lorsque l'option GLOB_SUBST est positionnée, le résultat subit la substitution "résultat subit la substitution "filename filename génération" génération" ((cf cf plus loin)plus loin)

Page 29: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 2929

II.2 Utilisation interactive de Zsh

Quelques effets du ~ (tilde)Quelques effets du ~ (tilde)

~ seul : équivalent de $HOME~ seul : équivalent de $HOME~+ : équivalent de $PWD~+ : équivalent de $PWD~~-- : répertoire avant le dernier cd: répertoire avant le dernier cd~~login login : désigne le : désigne le homedir homedir de de l'utilisateur l'utilisateur 'login''login'

Page 30: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3030

II.2 Utilisation interactive de ZshExpansion/Génération de noms de Expansion/Génération de noms de

fichiers (fichiers (globbingglobbing))

Désigner de façon simples les Désigner de façon simples les paramètres des commandes de type paramètres des commandes de type fichierfichier

sans avoir besoin de les désigner tous sans avoir besoin de les désigner tous explicitementexplicitement•• Via des expressions régulière Via des expressions régulière •• Expressions Expressions spécifiquesspécifiques au au globbingglobbing

Page 31: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3131

II.2 Utilisation interactive de Zsh

Globbing Globbing Elémentaire Elémentaire

option GLOB validéeoption GLOB validéel'expression désigne un nom de fichier entier (du l'expression désigne un nom de fichier entier (du premier au dernier caractère)premier au dernier caractère)métaméta--caratèrescaratères•• * : 0 ou plusieurs caractères quelconques * : 0 ou plusieurs caractères quelconques •• ? : un caractère quelconque? : un caractère quelconque•• [[xyztxyzt] : un ] : un carctère parmis carctère parmis x, y z ou tx, y z ou t•• [^[^xyztxyzt] : tout sauf un caractère ] : tout sauf un caractère parmis parmis x,y,z ou tx,y,z ou t•• <nb1<nb1--nb2> : un nombre compris entre nb1 et nb2nb2> : un nombre compris entre nb1 et nb2•• <<--nb2>, <nb1nb2>, <nb1--> : > : resp resp un nombre < nb2 ou un un nombre < nb2 ou un nb nb > >

nb1nb1•• <> : un nombre quelconque<> : un nombre quelconque•• (exp1|exp2) : exp1 ou exp2(exp1|exp2) : exp1 ou exp2

Page 32: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3232

II.2 Utilisation interactive de ZshGlobbing Globbing Elémentaire :Elémentaire :

ExemplesExemples

ls ls f* f?of* f?ols ls f[f[aeiouaeiou]o]ols ls (f?o|b?r)(f?o|b?r)ls ls <0<0--9>*9>*ls ls *<*<--5>5>ls ls *<>**<>*

Page 33: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3333

II.2 Utilisation interactive de Zsh

Globbing Globbing EtenduEtendu

L'option EXTENDED_GLOB doit être validéeL'option EXTENDED_GLOB doit être validéesetopt setopt EXTENDED_GLOBEXTENDED_GLOBDeux nouveaux Deux nouveaux metameta--caractères :caractères :•• ^ : tout sauf ce qui suit^ : tout sauf ce qui suit•• expexp# : 0 ou plusieurs occurrences de # : 0 ou plusieurs occurrences de expexp•• expexp## : 1 ou plusieurs occurrences de ## : 1 ou plusieurs occurrences de expexp

Exemples :Exemples :•• ls ls ^*.c^*.c•• file *.[^(o|out)]file *.[^(o|out)]•• ls ls ((fofo)#* commence par 0 ou plusieurs fois )#* commence par 0 ou plusieurs fois 'fo''fo'•• ls fols fo##* commence par ##* commence par fofo……oooooo•• ls ls (*TP*/)##* : contenu des (sous(*TP*/)##* : contenu des (sous--)sous)sous--répertoires répertoires

contenant 'TP' dans leur nomcontenant 'TP' dans leur nom

Page 34: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3434

II.2 Utilisation interactive de Zsh

Globbing Globbing des Fichiers Cachésdes Fichiers Cachés

L'option GLOB_DOTS doit être validéeL'option GLOB_DOTS doit être validéeLe Le globbing globbing s'applique alors aussi aux fichiers s'applique alors aussi aux fichiers cachés (commençant par .)cachés (commençant par .)

Page 35: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3535

II.2 Utilisation interactive de ZshGlobbing Globbing ::

Qualificatifs sur le TypeQualificatifs sur le Type

Une expression en fin de motif recherché Une expression en fin de motif recherché permet de "spécialiser" le permet de "spécialiser" le globbing globbing ::

expexp(exp2)(exp2)qualificatifs de exp2 :qualificatifs de exp2 :•• @ = lien symbolique@ = lien symbolique•• / = répertoire/ = répertoire•• r : lisible ; R : lisible r : lisible ; R : lisible otherother ; A : lisible groupe; A : lisible groupe•• w, W, I : w, W, I : ecriture ecriture pour user, pour user, otherother, groupe, groupe•• x, X, E : exécution pour user, x, X, E : exécution pour user, otherother, groupe, groupe•• u : propriétaire, u[lui] : 'lui' est propriétaire u : propriétaire, u[lui] : 'lui' est propriétaire •• s: s: setuidsetuid, S: , S: setgidsetgid

Combinaisons ET (), OU (,), NON (^) Combinaisons ET (), OU (,), NON (^)

Page 36: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3636

II.2 Utilisation interactive de ZshGlobbingGlobbing::

Exemple d'Utilisation des QualificatifsExemple d'Utilisation des Qualificatifs

lsls *(@) : lister les liens symboliques seulement*(@) : lister les liens symboliques seulementls ls *[*[aeiouaeiou](x) : lister les fichiers qui se terminent par ](x) : lister les fichiers qui se terminent par une voyelle qui ont la permission d'exécutionune voyelle qui ont la permission d'exécutionls ls *to(/) : lister les répertoires dont le nom se termine *to(/) : lister les répertoires dont le nom se termine par 'to'par 'to'ls ls *(UX^@) : lister les fichiers qui m'appartiennent, *(UX^@) : lister les fichiers qui m'appartiennent, exécutables pour tous, mais qui ne sont pas des liensexécutables pour tous, mais qui ne sont pas des liensls ls *(x,X) : lister les fichiers qui sont exécutables pour *(x,X) : lister les fichiers qui sont exécutables pour moi ou pour les autresmoi ou pour les autres

Page 37: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3737

II.2 Utilisation interactive de Zsh

Autres mécanismes de Autres mécanismes de Globbing Globbing

** : un chemin quelconque** : un chemin quelconquelsls **/*.c : rechercher et lister tous les **/*.c : rechercher et lister tous les fichiers qui se terminent par .c à partir du fichiers qui se terminent par .c à partir du répertoire courantrépertoire courant

==binbin : nom complet de l'exécutable : nom complet de l'exécutable 'bin''bin'lsls ==emacsemacs//usrusr/local//local/binbin//emacsemacsEquivalent à : Equivalent à : ls ls `̀which emacswhich emacs`̀Desactivé Desactivé par l'option "par l'option "noequalsnoequals""

Page 38: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3838

II. Interface Textuelle (zsh)

3. Eléments pour l'Ecriture de Scripts3. Eléments pour l'Ecriture de Scripts

Shell = langage de commandesShell = langage de commandesShell Script = programme écrit en langage de Shell Script = programme écrit en langage de commandescommandesRôles du Rôles du shellshell

Combiner/relier des commandes existantes avec Combiner/relier des commandes existantes avec redirectionsredirections, |, ||, && et instructions de contrôle, |, ||, && et instructions de contrôle

•• Permettre la construction de nouvelles commandesPermettre la construction de nouvelles commandes

Regrouper dans des fichiers des suites de Regrouper dans des fichiers des suites de commandescommandes

•• Exécution de tâches répétitivesExécution de tâches répétitives

Page 39: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 3939

II.3 Eléments pour l'Ecriture de Scripts

Variété des InstructionsVariété des Instructions

Le Le shell shell propose toute une "palette" propose toute une "palette" d'instructions pour :d'instructions pour :

Mémoriser (variables, types, arguments)Mémoriser (variables, types, arguments)Compter (expressions arithmétiques et logiques)Compter (expressions arithmétiques et logiques)Tester (test, [[ ]])Tester (test, [[ ]])Bifurquer (if, case, ||, &&)Bifurquer (if, case, ||, &&)Boucler (Boucler (whilewhile, for, select, break, continue), for, select, break, continue)Interagir par E/S (Interagir par E/S (readread, print, <, >), print, <, >)SousSous--programmes : programmes : funtionfuntion, , unfunctionunfunction, return, , return, execexec, source, export, source, export

Page 40: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4040

II.3 Eléments pour l'Ecriture de Scripts

Variables Variables -- ExpressionsExpressions

Par défaut : variable = chaîne de caractèresPar défaut : variable = chaîne de caractèresInitialement videInitialement vide

Variables entièresVariables entièrestypeset typeset ––i var1 var2 : var1 et var2 de type entieri var1 var2 : var1 et var2 de type entier•• typesettypeset ––i e1 e2i e1 e2•• echo echo $e1 $e2$e1 $e2

=> 0 0=> 0 0

Expressions Expressions aritharith : délimitées par des doubles : délimitées par des doubles parenthesesparentheses

•• ((i1 = $i2 +1)) ((i1 = $i2 +1)) •• i1=$(i1=$(expr expr $i2 + 1) $i2 + 1)

Page 41: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4141

II.3 Eléments pour l'Ecriture de Scripts

Variables de type TableauVariables de type Tableau

Déclaration implicite lors de Déclaration implicite lors de l'initialisationl'initialisation

tab=(e1 e2)tab=(e1 e2)echoecho $tab[0] => e1$tab[0] => e1echo echo $tab[1] => e1 aussi !$tab[1] => e1 aussi !echo echo $tab[2] => e2$tab[2] => e2echo echo $tab[$tab[--1] => e21] => e2echo echo $#tab => 2 ($#tab => 2 (nb nb éléments)éléments)

Page 42: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4242

II.3 Eléments pour l'Ecriture de Scripts

Mécanismes de Substitution de VariablesMécanismes de Substitution de Variables

${var:${var:--wordword} : remplacé par le contenu de la variable } : remplacé par le contenu de la variable si elle existe, ou par si elle existe, ou par word word sinonsinon${var:=${var:=wordword} : idem mais variable est affectée avec } : idem mais variable est affectée avec wordword${var#${var#expexp} : retranche à var le plus petite chaîne en } : retranche à var le plus petite chaîne en partant de la gauche correspondant à partant de la gauche correspondant à expexp${var##${var##expexp} : idem mais retranche la plus grande } : idem mais retranche la plus grande chainechaine${var%${var%expexp}, ${var%%}, ${var%%expexp} : idem mais en partant } : idem mais en partant de la droitede la droite

Page 43: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4343

II.3 Eléments pour l'Ecriture de Scripts

Quelques Instructions de ContrôleQuelques Instructions de Contrôle

Boucler sur chaque ligne d'un fichierBoucler sur chaque ligne d'un fichiercat fich cat fich | ( | ( while read while read ligneligne

do do … … echo echo $ligne$ligne

done done ))

( ( while readwhile read lignelignedo do

… … echoecho $ligne$lignedonedone ) < ) < fichfich

Page 44: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4444

II.3 Eléments pour l'Ecriture de Scripts

Quelques Instructions de Contrôle Quelques Instructions de Contrôle

Définir une fonctionDéfinir une fonctionbackupbackup() {() {

suffixe=$2suffixe=$2for f in $1.*for f in $1.*dodo

mv mv $f $f.suffixe$f $f.suffixedone done }}

Page 45: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4545

II.3 Eléments pour l'Ecriture de Scripts

Fonctions en Fonctions en AutoloadAutoload

Au lieu de définir un grand nombre de fonctions dans le .Au lieu de définir un grand nombre de fonctions dans le .zshenvzshenv, , zsh zsh peut les charger en mémoire à la demandepeut les charger en mémoire à la demande

Stocker la définition de la fonction dans un fichier de même noStocker la définition de la fonction dans un fichier de même nommCréer un répertoire pour stocker les fichiers contenant les fonCréer un répertoire pour stocker les fichiers contenant les fonctionsctionsDire au Dire au shell shell ou chercher les fonctionsou chercher les fonctionsDéclarer les noms des fonctions Déclarer les noms des fonctions autoload autoload dans le .dans le .zshenvzshenv

Exemple :Exemple :•• mkdir mkdir $HOME/$HOME/ZshFuncZshFunc•• mv backup mv backup $HOME/$HOME/ZshFuncZshFunc•• chmod chmod a+x a+x ZshFuncZshFunc•• Dans .Dans .zshenv zshenv : :

FPATH=$HOME/FPATH=$HOME/ZshFuncZshFuncautoload backupautoload backup

Page 46: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4646

II.3 Eléments pour l'Ecriture de Scripts

Exemple de ScriptExemple de Script

Appliquer Appliquer backup backup à une liste de scriptsà une liste de scriptscat toutsauvercat toutsauver#! /#! /usrusr/local//local/binbin//zshzshle_suffixe=$1le_suffixe=$1shiftshifttypeset typeset ––i i nbnb__paramparam=$#=$#[[ $[[ $nbnb__param param ––lt lt 1 ]] && exit1 ]] && exittypeset typeset ––i i=1i i=1while while [[ $i [[ $i ––le $le $nbnb__param param ]]]]dodo

eval backupeval backup '$'{$i} $le_suffixe'$'{$i} $le_suffixei=$i+1i=$i+1

donedone

Page 47: II. Interface Textuelle (zsh)deptinfo.unice.fr/twiki/pub/Linfo/UtilisationSystemes/Cours_Systeme_chap2.pdf · La commande CMD est exécutée dans un processus séparé Le résultat

O. Dalle Licence InformatiqueSystèmes d’Exploitation 4747

II.3 Eléments pour l'Ecriture de ScriptsExemple de Script :Exemple de Script :

DémoDémolslspourtp1.c tetetp1.h tp1.c tp1.outpourtp1.c tetetp1.h tp1.c tp1.out

toutsauver old toutsauver old tp1 tp1 tete tete pourtp1pourtp1

lslspourtp1.c.pourtp1.c.old old tetetp1.h.tetetp1.h.old old tp1.c.tp1.c.old old tp1.out.tp1.out.oldold