• Aucun résultat trouvé

Support de cours introduction aux scripts Shell – Cours et formation gratuit

N/A
N/A
Protected

Academic year: 2022

Partager "Support de cours introduction aux scripts Shell – Cours et formation gratuit"

Copied!
112
0
0

Texte intégral

(1)

INTRODUCTION

Formation – 1998 1

(2)

SHELL ?

Qu'est-ce qu'un Shell ?

- Interface utilisateur avec le système Unix - Interpréteur de commandes

- Un langage de programmation

Les différents Shell

Korn ksh

C csh

Bourne bsh

Trusted tsh Restricted Rsh

Remote rsh

Default sh ...

Formation – 1998 2

(3)

RAPPELS UNIX Quelques commandes :

mk dir repertoire rm dir repertoire

rm fichier

cd repertoire

ls pwd

mv ancien nouveau cp ancien nouveau

ln nom copie

cat fichier

touch fichier echo texte find

Formation – 1998 3

(4)

AVANTAGE DE KSH

Perfectionnement du langage de commande

- Edition des lignes de commandes - Historique des commandes

- Alias de noms de commandes - Gestion des travaux (job)

- De nouveaux moyen pour cd - Extension du tilde

Formation – 1998 4

(5)

AVANTAGES DE KSH

Perfectionnement du langage de programmation

- Mécanisme d'entrée-sortie plus général - Sélection par menu

- Calcul arithmétique d'entiers - Opérateurs de sous-chaînes - Variables et attributs tableau

- Plus de possibilités pour les fonctions - plus facile à mettre au point

Formation – 1998 5

(6)

PRÉPARATION DU COURS

- Créer l'environnement suivant dans votre compte UNIX :

Formation – 1998 6

(7)

CONCEPTS DE BASE

Formation – 1998 7

(8)

QU'EST-CE QU'UN SCRIPT SHELL ?

- Un fichier texte lisible

- Editable avec un éditeur de texte

- Tout ce que vous pouvez faire à la ligne de commande - Un programme contient :

- des commandes systèmes - des affectations de variable - des commandes shell

- des instructions de contrôle + des commentaires !!

.#!/bin/ksh

Formation – 1998 8

(9)

LANCER UN SCRIPT

$. shell_script

$ksh shell_script

$shell_script

$exec shell script

Formation – 1998 9

(10)

L'ENVIRONNEMENT

- Quand le Korn shell est invoqué au login, il exécute :

- A chaque nouveau shell, s'exécute ensuite le fichier ENV

Formation – 1998 10

/etc/environment /etc/profile

.profile ENV file

(11)

CARACTÈRES SPÉCIAUX

- Les caractères spéciaux forment des expressions génériques qui, une fois étendues, correspondent à plusieurs fichiers du répertoire de travail

- Le shell interprète les caractères spéciaux avant d'exécuter la commande - Il y a plusieurs caractères spéciaux

- Ils peuvent être utilisés simultanément

- Ils peuvent être inhibés par l'option noglob

Formation – 1998 11

(12)

CARACTÈRES SPÉCIAUX

* Tous les caractères

? Un seul caractère

[abc] un caractère de la liste [a-z] un caractère de l'intervalle [!az] Tous sauf les caractères cités

Formation – 1998 12

(13)

EXPRESSIONS GÉNÉRIQUES MULTIPLES

*(EG1|EG...) 0 ou plusieurs fois

? (EG1|EG...) 0 ou 1 fois

+(EG1|EG...) 1 ou plusieurs fois

@(EG1|EG...) exactement 1

! (EG1|EG...) tout sauf

Formation – 1998 13

(14)

QUOTES

- "double quotes" groupe de caractères

- 'simple quotes' groupe les caractères et garde la signification des caractères spéciaux

- \charactere supprime la signification particulière du caractère

Formation – 1998 14

(15)

ENTRÉE/SORTIE

Chaque processus a une table de description de fichiers associés

Default

{

0 Standard in clavier 1 Standard out écran 2 Standard error écran

Libre

{

3...

Formation – 1998 15

(16)

9

Formation – 1998 16

(17)

REDIRECTION EN ENTRÉE

Command < Fichier

Redirige l'entrée à partir du contenu du fichier

Formation – 1998 17

(18)

REDIRECTION EN SORTIE

- Redirige la sortie dans le fichier

command > fichier

- Redirige la sortie à la fin du fichier

command >> fichier

Formation – 1998 18

(19)

ENTRÉE LOCALE

- L'entrée est faite à partir de la ligne de commande commande << FIN

text . . . text END

Formation – 1998 19

(20)

ASSOCIATION

Les descriptions de fichier peuvent être asscoié commande > fichier 2>&1

Formation – 1998 20

(21)

DÉFINIR LES DESCRIPTIONS DE FICHIER

On utilise la commande exec pour ouvrir, associer ou fermer un descripteur

$exec n> fichier ouvrir le descripteur en sortie vers le fichier

$exec n< fichier ouvrir le descripteur en entrée à partir de fichier

$exec m>&n associe m et n

$exec n>&- ferme n

Formation – 1998 21

(22)

PIPES

cmd1 | cmd2 | cmd3

Formation – 1998 22

0 1 0 1 0 1

cmd1 cmd2 cmd3

2 2 2

(23)

TEE

$ls | tee fichier

Formation – 1998 23

(24)

GROUPEMENT DE COMMANDES

- Exécution dans un sous-shell (cmd1;cmd2)

- Exécution dans le shell courant {cmd1;cmd2}

Formation – 1998 24

(25)

TÂCHES DE FOND

Exécuter une commande en tâche de fond Commande &

Formation – 1998 25

(26)

CONTRÔLE DES JOBS

Le korn shell assigne des numéros à chaque job Jobs Liste des jobs

ctrl-z Suspend le job en cours

bg Lance le job suspendu en tâche de fond

fg Lance le job suspendu en avant plan (ou un job en tâche de fond ) kill Stop un job

kill et bg acceptent les arguments suivants :

pid processus id

%job_id job id

%% id courant

%+ id courant

%- id précédent

%commande correspond au nom de la commande

%?string string contenu dans la ligne de commande

Formation – 1998 26

(27)

EDITION DE LA LIGNE DE COMMANDE

Deux modes d'édition disponible : vi : set –o vi

emacs : set –o emacs ex. emacs :

Ctrl-D suppression Ctrl-F en avant Ctrl-B en arrière

Ctrl-E fin de la ligne Ctrl-A début de la ligne

Ctrl-P commande précédent (rappel de la commande) Ctrl-N commande suivante

Formation – 1998 27

(28)

LES VARIABLES

Formation – 1998 28

(29)

AFFECTATION DE VARIABLES

nom=valeur

Attention : il n'y a pas d'espace autour de '='

Pour protéger contre un changement : readonly nom=valeur

ou

typeset –r nom=valeur

Formation – 1998 29

(30)

UTILISER UNE VARIABLE

Pour utiliser une variable, ajouter $ devant son nom :

$var1=Auto

$print $var1 Auto

$_

Utiliser les {} pour bien les délimiter

$print ${var1}mobile Automobile

Formation – 1998 30

(31)

PARAMÈTRES POSITIONNELS

Les paramètres peuvent être passés à un script comme argument de la ligne de commande :

$script p1 p2

p1 est le premier paramètre, p2 le deuxième

Ils sont référencés par : $1 à $9 puis ${10} à ${n}

Formation – 1998 31

(32)

SHIFT

La commande shift décale les arguments vers la gauche Le paramètre le plus à gauche est perdu

Le nombre d'argument diminue donc à chaque fois Shift n : décale de n crans vers la gauche

Formation – 1998 32

(33)

SET

La commande set permet de changer la valeur des paramètres positionnels Elle annule les valeurs précédentes

Exemple :

print $1 $2 $3 set V1 V2 print $1 $2 $3

Formation – 1998 33

(34)

LES PARAMÈTRES VARIABLES

Certains paramètres sont automatiquement affectés :

$# : nombre de paramètres

$0 : les paramètres sont mis dans une liste séparés par des blancs

$* : les paramètres sont mis dans une liste séparés par le premier caractères de IFS

Avec les doubles quotes les conportements de $@ et $* diffèrent :

"$@" : "$1" "$2" "$3"

"$*" : "$1 $2 $3"

Formation – 1998 34

(35)

LES PARAMÈTRES D'UN SHELL

$0 : nom du shell

$$ : process id

$! : process id du dernier process lancer en tâche de fond

$? : code de retour de la dernière commande

Formation – 1998 35

(36)

HÉRITAGE

Lors du lancement d'un sous-shell, les variables ne pourront être utilisées que si elles ont été préalablement exportées.

$set : liste des variables

$export var : exporte la variable var

$export : liste des variables exportées

Formation – 1998 36

(37)

VARIABLES DE KSH

SECONDS PATH HISTFILE

RANDOM PS1 HISTSIZE

LINENO PS2 OLDPWD

ERRNO PS3 PPID

CDPATH PS4 PWD

HOME SHELL REPLY

IFS TERM TMOUT

MAIL EDITOR _

MAILCHECK ENV

MAILMSG FCEDIT

MAILPATH FPATH

Formation – 1998 37

(38)

TABLEAUX

Les tableaux n'ont pas besoin d'être déclarés

On accède à une valeur avec [n], où n est le numéro de l'élément 0<n<511

n peut être le résultat d'une expression

Formation – 1998 38

(39)

AFFECTATION DE VALEURS DANS UN TABLEAU

La cellule d'un tableau s'utilise comme une variable standard tab[n]=valeur

Pour assigner des valeurs séquentiellement :

$set +A tab val1 val2

Formation – 1998 39

(40)

RÉFÉRENCER L'ÉLÉMENT D'UN TABLEAU

$print ${tab[n]}

$print ${tab[*]}

$print ${tab[@]}

$print tab

Formation – 1998 40

(41)

CODES DE RETOUR ET TRAPS

Formation – 1998 41

(42)

VALEUR DE RETOUR

Chaque commande, pipeline ou groupe de commande renvoie une valeur à son processus parent

$? est cette valeur 0 : succès

différent de 0 : erreur

La commande exit permet le renvoie d'une erreur

Pour un pipeline ou un groupe, $? contient la valeur de retour de la dernière commande exécutée.

Formation – 1998 42

(43)

EXÉCUTION CONDITIONNELLE

cmd1 && cmd2

Si cmd1 réussie alors exécute cmd2

cmd1 || cmd2

Si cmd1 échoue, exécute cmd2

Formation – 1998 43

(44)

COMMANDE TEST

test expression ou

[ expression ] ou

[[ expression ]] On utilisera toujours cette commande qui offre plus de possibilités (elle est spécifique à ksh)

Renvoie 0 si l'expression est vraie

Formation – 1998 44

(45)

EXPRESSIONS COMPOSÉES

expr1 && expr2 vraie si expr1 et expr2 sont vraies e1 || e2 vraie si e1 ou e2 sont vraies

!e1 vraie si e1 est faux

( ) groupe d'expressions

Formation – 1998 45

(46)

OPÉRATEURS DE TEST SUR UN FICHIER

Opérateur vraie, si le fichier -a fichier existe

-d fichier est un répertoire -r fichier est lisible

-w fichier est modifiable -x fichier est exécutable -L fichier est un lien

Formation – 1998 46

(47)

OPÉRATEURS NUMÉRIQUES

Opérateur vraie si e1 -eq e2 e1=e2

-ne e1 et e2 sont différents

-lt e1<e2

-le e1<=e2

-gt e1>e2

-ge e1>=e2

Formation – 1998 47

(48)

OPÉRATEURS SUR LES CHAINES

-n str str a une longueur non nulle -z str str a une longueur nulle

str1 = str2 les 2 chaînes sont égales

str1 != str2 les 2 chaînes sont différentes

Formation – 1998 48

(49)

LES TESTS SPÉCIFIQUES À KSH

file1 –ef file2 file 1 et file 2 représente le même fichier f1 –nt f2 f1 est plus récent que f2

f1 –ot f2 f1 est plus ancien sur f2

Formation – 1998 49

(50)

LES TESTS SPÉCIFIQUES À KSH

str=pattern str correspond à l'expression régulière

str!=pattern str ne correpond pas à l'expression régulière s1<s2 s1 est avant s2 dans la table ASCII

s1>s2 s1 est après s2 dans la table ASCII

Formation – 1998 50

(51)

LES SIGNAUX

Les signaux sont envoyés par le système au processus pendant son exécution La commande kill permet d'envoyer un signal à un processus

kill –signal pid

Formation – 1998 51

(52)

LES PRINCIPAUX SIGNAUX

0 EXIT à la fin d'un process

1 HUP pour logger une information 2 INT interrupt reçu (Ctrl-C)

3 QUIT Ctrl-\

9 KILL tue le process (ne peut pas être intercepté) 17 STOP Stoppe le process

19 CONT continue s'il a été stoppé

Formation – 1998 52

(53)

TRAP

La commande trap spécifie les différentes actions que vous souhaitez faire à la réception d'un signal

exemple : trap 'rm /tmp/$$;exit2' INT QUIT

Formation – 1998 53

(54)

INSTRUCTIONS DE CONTRÔLE

Formation – 1998 54

(55)

IF, THEN, ELSE

if Expression then

commandes exécutéds si expression vraie elif

e2 then

commandes else

commandes exécutées si expression et e2 sont fausses fi

Formation – 1998 55

(56)

UNTIL

until expression do

commande exécutée tant que exp est fausse done [<file]

Formation – 1998 56

(57)

WHILE

while expression do

cmd tant que exp est vraie done [<file]

Formation – 1998 57

(58)

FOR

Formation – 1998 58

for i in a1 do

commandes utilisant $i done

for i do

$i prend successivement la valeur de $1, $2 … done

(59)

CASE

case mot in

MOT ) action ;;

expressions régulières) action ;;

*) default ;;

esac

Formation – 1998 59

(60)

SELECT

select id in mot1 mot2 do

commande uilisant $id généralement un case done

Le prompt $PS3 est utilisé pour demander à l'utilisateur de choisir parmi mot1, mot2

Formation – 1998 60

(61)

BREAK

- L’instruction break permet de sortir de la boucle do done en cours.

- il prend la plus petite boucle possible.

- break n : permet de sortir de n boucles.

Formation – 1998 61

(62)

CONTINUE

- L’instruction continue reprend au début de la boucle en cours.

- il prend en compte la plus petite boucle do done.

- continue n : permet de remonter dans plusieurs boucles.

LA COMMANDE NULL

Formation – 1998 62

(63)

- la commande : permet d’écrire une instruction qui ne fera rien.

- exemple :

if [[ $? -eq 0 ]]

then : else

exit Fi

Formation – 1998 63

(64)

LES COMMANDES

PRINT

- print arg ...affiche les arguments sur la sortie standard.

Formation – 1998 64

(65)

- print - arg ... pour afficher les arguments comme des options.

- print -r arg ... n’interprète pas les caractères spéciaux.

- print -R ... équivalent à "-" et "-r".

- print -n ... pas de retour à la ligne à la fin de l’affichage.

- print -uN ... affiche sur le descripteur N.

CARACTÈRES SPÉCIAUX

\a alarme

Formation – 1998 65

(66)

\b backspace

\f form feed

\n nouvelle ligne

\r retour chariot

\t tabulation

\v tabulation verticale

\\ \

READ

Formation – 1998 66

(67)

read variable ...

- read lit une ligne à partir du clavier.

- les mots lus sont affectés aux variables.

- si aucune variable n’est spécifiée, $REPLY contiendra toute la ligne.

- si le nombre de variables est insuffisant, la dernièr variable prendra pour valeur la fin de la ligne

Formation – 1998 67

(68)

LES OPTIONS DE LA COMMANDE READ

- read -r variable ... raw mode, \ n’est pas considéré comma la caractère de continuation de ligne.

- read -uN variable lit à partir du descripteur N.

- Pour la première variable, vous pouvez spécifier le prompt qui sera affiché.

read var1?prompt var2...

Formation – 1998 68

(69)

EVAL

- Cette commande permet d’évaluer 2 fois une ligne avant de l’exécuter.

- exemple :

$ m1 = "10"

$ v = "m1"

$ eval print '$'$v 10

$_

Formation – 1998 69

(70)

SET

- set liste les variables définies et leurs valeurs.

- set valeur redéfini les paramètres positionnelles.

- set -o option actionne une option.

- set +o option annule une option.

- set -o liste des options.

Formation – 1998 70

(71)

LES OPTIONS DE SET

allexport export toutes les variables.

ignoreeof force l’utilisation de exit à la fin d’un shell.

noclobber empêche d’écrire dans un fichier déjà existant avec >.

noexec vérifie la syntaxe sans exécuter le shell.

noglob annule l’extension des caractères spéciaux.

nounset affiche une erreur si une variable non définie est utilisée.

verbose affiche l’entrée sur l’erreur standard.

xtrace option de débug - le shell affiche P54 avec chaque ligne exécutée.

Formation – 1998 71

(72)

ARITHMÉTIQUE

LET

Formation – 1998 72

(73)

let argument ou

(( argument ))

- let travaille sur des entiers long

- les variables n’ont pas besoin de $ , et les tableaux n’ont pas besoin de ${}.

- le code de retour est zéro (vrai) si le résultat est non nul.

Formation – 1998 73

(74)

LES OPÉRATEURS

( ) les parenthèses

* multiplication

/ division

./. modulo

+ plus

- moins

= affectation

Formation – 1998 74

(75)

BASES

- Vous pouvez travailler en base 2 à 36.

- syntaxe : base  nombre.

- nombre peut contenir des majuscules ou miniscules pour les bases supérieurs à 10.

Formation – 1998 75

(76)

LES OPÉRATEURS LOGIQUES

! négation logique

 > supérieur

>= supérieur ou égale

< inférieur

<= inférieur ou égale

== égale

!= différent

&& et logique

|| ou logique

Formation – 1998 76

(77)

LES OPÉRATEURS SUR BITS

 inversion de bits

<<N décalage de N bits vers la gauche

>>N décalage de N bits vers la droite

& et bit à bit

| ou bit à bit

^ ou exclusif

Formation – 1998 77

(78)

INTEGER

integer var = valeur ...

ou

typeset -iN var = valeur ...

- var est de type integer.

- N est la base.

- cela évite à l’instruction let de faire la conversion de chaine de caractères vers entier.

Formation – 1998 78

(79)

FONCTIONS

ET COMMANDES

Formation – 1998 79

(80)

SUBSTITUTIONS DE COMMANDES

- Le résultat d’une commande, ou d’un groupe de commandes, peut être utilisé pour affecter une variable, ou comme élément d’une liste à arguments, grace à la substitution de commande :

variable = $ (commande) - l’encapsulation est possible :

var = $ (and1 $ (and2 $ (and3)))

Formation – 1998 80

(81)

DÉFINIR UNE FONCTION

- Un groupe de commande peut former une définition de fonction :

- cela permet de découper un programme en plus petites unités.

- elles peuvent être executées comme une nouvelle commande dans l’environnement courant.

Formation – 1998 81

function id {

commands }

(82)

FONCTIONS ET VARIABLES

- Les arguments de la fonction sont pris comme paramètres positionnelles.

- $0 est le nom de la fonction.

- les variables définies avec typeset ou integer sont locales à la fonction, toutes les autres sont globales.

- la portée d’une variable locale inclus toutes les fonctions appelées à partir de la fonction courante.

Formation – 1998 82

(83)

TERMINER UNE FONCTION

- return peut être utilisé pour renvoyer un code de retour ou juste terminer la fonction :

return N - exit termine la fonction et le shell

exit N

TYPESET

Formation – 1998 83

(84)

- typeset ±LN variable = value ...

ou L vaut i : integer, N est la base r : lecture seule

x : export - typeset ±FL fonction ...

ou L vaut x : export u : autoload

t : pour xtrace dans la fonction .- pour valider

.+ pour annuler

AUTOLOAD

Formation – 1998 84

(85)

- Une fonction définie seulement la première fois qu’elle est utilisée, est une fonction de type autoload.

autolad function ...

ou

typeset -fu function...

- utiliser autoload augmente les performances.

- le shell recherche dans les répertoires fournis dans FPATH, un fichier avec le nom de la fonction.

- le contenu de ce fichier défini la fonction.

ALIAS

Formation – 1998 85

(86)

- La commande alias permet :

- de créer de nouvelles commandes - de renomer certaines commandes

création : alias name = definition supression : unalias name

Formation – 1998 86

(87)

LES CHAINES DE CARACTÈRES

Formation – 1998 87

(88)

LE REMPLACEMENT DE VARIABLE

${var:-mot} étendu à mot si var n’est pas défini.

${var:=mot} effectue mot à var si elle n’est pas défini et étend à mot.

${var:+mot} null si var n’est pas défini, sinon mot.

${var:?mot} si var n’est pas défini, renvoie mot sur l’erreur standard et termine le shell.

Formation – 1998 88

(89)

LES SOUS-CHAINES

${var#*pattern}

${var##*pattern}

${var%pattern*}

${var%%pattern*}

(le crochet encadre la parti qui sera supprimée : ${Variable%%pattern*} == str)

EXPR

Formation – 1998 89

*pattern

##

#

Variable="str pattern et pattern encore"

% pattern*

%%

(90)

expr : compare une chaîne de caractère avec une expression régulière :

 - renvoie les caractères qui correspondent à l’expression régulière, 0 si ça ne correspond pas

expr string : pattern - supprime p1 puis compare le résultat à p2

expr str : p1\(p2\)

LONGUEUR DE VARIABLES

Formation – 1998 90

(91)

- le nombre de caractères d’une variable

${#variable}

- le nombre de paramètres

${#*} ou ${#@}

- le nombre d’éléments d’un tableau

${#array[*]} ou ${# array[@]}

Formation – 1998 91

(92)

EXTENSION DU TILDE

~ $HOME

~+ $PWD

~- $OLDPWD

~ utilisateur $HOME de l’utilisateur

~ autre non modifié

Formation – 1998 92

(93)

CUT

cut -dS -s -fliste fichier

S délimiteur

s avec -dS supprime les lignes qui ne contiennent pas S.

-fliste donne la liste des champs à garder.

Formation – 1998 93

(94)

TR

tr LISTIN LISTOUT <fichier_in > fichier_out

ou

tr -dLD <f_in > f_out

- remplace les caractères de LISTIN par ceux de LISTOUT.

- supprime les caractères de LD.

Formation – 1998 94

(95)

MIEUX PROGRAMMER

INTRODUCTION

Formation – 1998 95

(96)

Les règles classiques de programmation s’applique également au Korn Shell : - Bien définir les fonctionnalités,

- Une conception modulaire à base de fonctions et de programmes séparés, - Un environnement adapté,

- Une convention de nommage, - Tester,

- Avoir du code facilement débogable.

ORGANISATION D’UN SHELL

- Entête - commentaire,

Formation – 1998 96

(97)

- Validation des options, - Test des arguments,

- Initialisation des variables, - Définition des fonctions, - Code principal.

OPTIMISER UN SHELL

- réduire $HISTFILE - réduire $ENV

Formation – 1998 97

(98)

- utiliser autoload

- utiliser un alias plutôt qu’un fonction

- utiliser les fonctions du shell en priorité sur les commandes UNIX

$(<fichier) plutôt que $(cut fichier)

- utiliser plusieurs arguments dans une seule commande - { } est plus rapide que ( )

- utiliser integer autant que possible.

CRÉATION D’UNE BIBLIOTHÈQUE DE FONCTION

autoload function

Formation – 1998 98

(99)

En mettant plusieurs définitions de fonction dans un même fichier, et en utilisant la commande ln pour donner plusieurs noms à ce fichier, vous pouvez faire l’autoload une librairie de fonctions.

TIME

- c’est un mot réservé du Ksh

Formation – 1998 99

(100)

- n’affecte en rien la ligne de commande - le résultat est envoyé sur l’erreur standard

$time commande

DÉBOGAGE

set -o noexec vérifie la syntaxe

set -o verbose affiche les entrées à leur lecture

Formation – 1998 100

(101)

set -o xtrace affiche la commande avant de l’exécuter

Le signal DEBUG, après chaque commande peut être intercepté à l’aide de la commande trap.

RÈGLES DE CODAGE D’UNE FONCTION

- ne pas modifier de variable globale

- export une fonction seulement si c’est nécessaire - ne pas changer le répertoire de travail

Formation – 1998 101

(102)

- maîtriser l’utilisation des fichiers temporaires

LE CONTRÔLE DE L’ENVIRONNEMENT

$. shell_script sh shell_script

shell endormi

$shell_script sh

sh

Formation – 1998 102

(103)

$(commande) est un sous-shell

${commande} s’exécute dans le shell courant

Formation – 1998 103

(104)

PRÉSENTATION DE GREP, SED, AWK

PRÉSENTATION

Certaines opérations sur le traitement de fichier peuvent s’avérer délicates en Ksh. On peut donc utiliser des outils supplémentaires, seuls ou combinés, pour exécuter ces opérations.

Formation – 1998 104

(105)

- Grep : pour la recherche dans un fichier - Sed : pour la substitution de chaine

- Awk : pour des scripts plus complets, c’est en fait un surensemble à grep et sed.

EXPRESSIONS RÉGULIÈRES

expressions significations

. un caractère quelconque

* 0 ou plusieurs fois le caractère précédent

Formation – 1998 105

(106)

[A-D] A, B, C, D [^56] tous sauf 5, 6

^s une ligne commençant par s s$ une ligne se terminant par s

GREP

- permet la sélection de ligne dans un fichier grep expression fichier

Formation – 1998 106

(107)

-e : pour spécifier plusieurs expressions -v : tous sauf cette expression

SED

sed instruction fichier ou

sed -f fichier_instructions fichier

Formation – 1998 107

(108)

syntaxe d’une instruction : s/old/new/g

AWK

- Awk est un langage de programmation pour la manipulation de texte - il permet la manipulation de mot sur une ligne

- syntaxe :

awk 'expression{action}' fichier

Formation – 1998 108

(109)

CONCLUSIONS

- Une bonne connaissance de Ksh, grep et sed permet d’effectuer la plupart des scripts dont on a besoin sous UNIX

- pour des applications, Awk est un allié très puissant

- pour des applications complèxes, on peut utiliser un autre langage script PERL

Formation – 1998 109

(110)

CONCLUSION

Formation – 1998 110

(111)

- Le langage Ksh est en perpetuelle évolution et amélioration

- son auteur David G. Korn maintien un site web : htttp:\\www.kornshell.com - vous pourrez ainsi vous tenir à jour sur les dernières évolutions

- la dernière version Ksh93 vous donne accès à de nouvelles fonctionnalités qu’il est malheureusement préférable de ne pas utiliser dans un souci de portabilité. Il est plutôt souhaitable de s’initier au langage Awk pour augmenter les possibilités de ses scripts.

Formation – 1998 111

(112)

Formation – 1998 112

Références

Documents relatifs

Ce problème est fondamental : on a précisément recours à PHP (ou à d’autres langages s’exécutant sur le serveur) parce-que c’est le seul moyen d’agir sur des fichiers sur

En recopiant tous les objets d’un fichier de structure abîmé — à l’exception des objets endommagés — dans un fichier vide (lorsque vous ne disposez pas de sauvegarde), vous

[r]

Ainsi dans un même formulaire, vous pourrez afficher plusieurs formulaires traitant d’un même sujet, mais dont les informations sont contenues dans des tables différentes. Imaginez

Aujourd’hui, les choses ont bien changé et les composants électroniques modernes, associés à des « commandes » évoluées, permettent de réali- ser une très grande variété

Then the global editing tab can be used to assign an overcurrent device definition to the set, such as from a transformer fusing schedule used at the utility.. Continue with the

Les génériques permettent donc, en quelques sortes, de déclarer une série de classes (potentielles) en une seule fois, ou plus exactement de déclarer un modèle de classe, mais avec

 Les formulaires dans un même document sont stockés dans un tableau appelé forms; le premier formulaire est alors noté.. forms[0], la deuxième est