198
Formation UNIX / LINUX Bases Unix / Linux et utilisation avancée LDVINCI Rev4 2004

F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

  • Upload
    phambao

  • View
    218

  • Download
    1

Embed Size (px)

Citation preview

Page 1: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FormationUNIX / LINUXBases Unix / Linux et utilisation avancée

LDVINCI Rev4 2004

Page 2: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 2004

Page 3: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

INTRODUCTION

1 UNIXINT - Rev4 LDVINCI 2004

UNIX / LINUXINTRODUCTION

Page 4: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

INTRODUCTION

2 UNIXINT - Rev4 LDVINCI 2004

BASES UNIX / LINUX et UTILISATION AVANCEE

OBJECTIFS :Découvrir et manipuler l'interface utilisateur (le shell) avec son langage de commandeet son langage de programmation.Etre capable d'utiliser les outils de manipulation des données dans l'environnement UNIX / LINUX.Reconnaitre les différents fichiers constituant l'arbre UNIX / LINUX et savoir les exploiter enterme de navigation, copie, sauvegarde et restauration.Elaborer des scripts shell dans un contexte d'exploitation.

PROGRAMME :- Présentation d'UNIX / LINUX.- Prise en main d' UNIX / LINUX et du shell.- Etude de l'éditeur vi.- Manipulation des fichiers.- Protection des fichiers.- Copier, déplacer des fichiers.- Communiquer entre utilisateurs.- Imprimer des fichiers.- Redirection des entrées/sorties.- Notion de processus.- Le langage de programmation shell :

.les variables

.les mécanismes de substitution

.les structures conditionnelles et les boucles.- Sauvegarde/restauration des données utilisateurs.- Les signaux.- Approfondissement du Korn-Shell.- Personnalisation de l'environnement utilisateur.- Les outils de manipulation des données.- Les utilitaires GREP et SED.

MÉTHODES PÉDAGOGIQUES :Les différents thèmes abordés font l'objet de travaux pratiques concrets pourune assimilation optimale.

DURÉE :6 jours.

EVALUATION :De nombreux exercices permettront de situer l'acquisition des connaissances.De plus, une évaluation sous forme de QCM aura lieu en fin de ce module.

Page 5: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

INTRODUCTION

3 UNIXINT - Rev4 LDVINCI 2004

SOMMAIRE

1 PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

2 MANIPULER LES FICHIERS

3 PROTEGER SES FICHIERS

4 COPIES, DEPLACEMENTS, LIENS, RECHERCHE DEFICHIERS, SAUVEGARDE RESTAURATION DE FICHIERS

5 COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ETIMPRIMER

6 FONCTIONS DE BASE DE VI, FONCTIONS AVANCEES DEVI ET EXPRESSIONS REGULIERES

7 LES PROCEDURES SHELL, LES REDIRECTIONS ET LESMECANISMES DE SUBSTITUTION DU SHELL

8 PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ETD'UNE BOUCLE

9 ENVIRONNNEMENT, SIGNAUX ET SYNCHRONISATION

10 UNIX / LINUX AVANCE : COMPLEMENTS

11 MEMO

Page 6: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

INTRODUCTION

4 UNIXINT - Rev4 LDVINCI 2004

Page 7: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 1 UNIXPRES

UNIX / LINUXPRESENTATION

Page 8: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 2 UNIXPRES

SOMMAIRE

SECTION PAGE

HISTORIQUE 1 - 3

UNIX : QU'EST-CE QUE C'EST ? 2 - 4

LES LANGAGES SHELL SOUS UNIX / LINUX 1 -5

CONNEXION D'UN TERMINAL UTILISATEUR 1 - 7

Ouverture d'une session utilisateur 1 - 7Mot de passe utilisateur 1 - 7Terminer une session utilisateur 1 - 7

LANCEMENT D'UNE COMMANDE 1 - 8

ARRET DE L'AFFICHAGE 1 - 9

LES MESSAGES D'ERREUR 1 - 9

EXERCICES 1 - 10

Prise en main d'UNIX / LINUX 1 - 10

Page 9: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 3 UNIXPRES

HISTORIQUE

UNIX est un système d'exploitation développé par AT & T.Les premières licences ont été délivrées en 1975 (UNIX version 6).

Il existe 3 versions de base :

AT & T SYSTEM V (version 3, 4 et 5)

BERKELEY 4.3 BSD

SUN SCO

La plupart des systèmes serveurs UNIX sont des implémentationsd'UNIX SYSTEM V avec des extensions d'origine BERKELEY.

La plupart des grands constructeurs informatiques ont à leur catalogue une offreUNIX fonctionnant sur des plates-formes matérielles spécifiques ou mixtes( multi O.S.) et leur ont donné une appellation commerciale :

IBM et Bull : AIXHewlett Packard : HP-UXSun : Solaris et SunOSSiemens Nixdorf : SINIXSGI : IRIXIntel : DYNIX

etc ....

LINUX, lui a été développé au début des années 90 par Linuz Torvalds avecpour objectif principal d'offrir une visibilité type UNIX sur un équipement PC.

.... mais à la différence d'UNIX qui est sous licence, LINUX est un FreeWare etrentre dans le cadre des "Open Source" ayant entraîné de nombreux éditeursà offrir sur le marché leur LINUX personnalisé dont les plus célèbres sont :

RedHatMandrakeSuSeDebianSlackWare etc .....

Page 10: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 4 UNIXPRES

langage decommande

interpréteur decommandes

COMMANDESLANGAGESOUTILS

SHELL(ksh sh csh bash)

MATERIEL

UNIX / LINUX EST UN SYSTÈME TEMPS PARTAGE,MULTI-UTILISATEURS,

MULTI-TÂCHES.

APPLICATIONS

noyauUNIX / LINUX

UNIX / LINUX

Page 11: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 5 UNIXPRES

LES LANGAGES SHELL SOUS UNIX / LINUX

Sous UNIX

On trouve principalement les 3 suivants :

le csh d'origine Berkeley BSDle sh d'origine AT&T, Bourne-shellle ksh d'origine AT&T, Korn-shell

Le ksh utilisé dans ce cours sur le serveur est un sur-ensemble du sh, il combineles avantages du csh avec la syntaxe du sh.Le csh a une syntaxe proche du langage C, mais les procédures csh nes'exécutent pas sous sh et ksh.

Les principales autres différences :

- historique des commandes dans csh et ksh- éditeur de ligne dans ksh- les syntaxes des boucles diffèrent entre csh, ksh et sh :

csh : while end ksh, sh : while do done

- goto n'existe qu'en csh- le mécanisme de substitution des variables ksh est plus élaboré.

- l'arithmétique entière n'existe qu'en csh et ksh- le mécanisme d'alias (abréviation de commandes) pous csh et ksh.

Nota :Sur les serveurs UNIX (type AIX ) le Bourne-shell s'appelle bsh.

Sous LINUX

Suivant les éditeurs et le type d'installation logicielle réalisée, on peut retrouver lesmêmes interpréteurs en plus du shell "dit standard" sous LINUX :

le bash.

Le bash offre les mêmes fonctionnalités qu'un ksh avec une gestion d'historiquedes commandes plus ergonomique qu'en ksh (utilisation du pavé des touchescurseur à la place de séquences de contrôle).

Page 12: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 6 UNIXPRES

Page 13: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 7 UNIXPRES

CONNEXION D' UN TERMINAL UTILISATEUR

. En mode CONSOLE ( dit TTY )

Ouverture d'une session utilisateur

L'invite de connexionest affiché sur l'écran

Entrer un nom d'utilisateur(en minuscule)

Eventuellementdemande de mot de passe

Entrer le mot de passe

Mot de passe utilisateurPour des raisons de sécurité, l'ouverture d'une session utilisateur doit êtreprotégée par un mot de passe.La saisie du mot de passe se fait sans écho.La commande passwd permet de positionner ou de changer un mot depasse avec certaines restrictions.

Terminer une session utilisateurLa déconnexion se fait en appuyant sur les touches <Ctrl> <d>ou avec la commande exit .

. En mode GRAPHIQUE

Après une bannière proposant de remplir les champs "utilisateur" et "mot depasse", l'environnement graphique bureau permet d'ouvrir n fenêtres.Ce fonctionnement utilise le mécanisme dit de pseudo-TTY .

La connexion est établieUn prompt [.....] $ est affiché

Page 14: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 8 UNIXPRES

Login: user1 saisie du nom d'utilisateur$ invite du shell (prompt)

$ passwdChanging password for user1New password :Re-enter new password :

appui sur touches <Ctrl> <d> ou commande exit

Login: user1Password : xxxxxxxx

$ dateThu Apr 25 14:13:11 MET 2003

$ whouser1 tty12 Apr 25 09:07 *user2 tty13 Apr 25 10:50 *user5 tty23 Apr 25 14:12 *user7 pts/0 Apr 25 11:15user12 pts/1 Apr 25 11:06

$ tty/dev/tty12 * ttynn ou vc/nn

LANCEMENT D'UNE COMMANDE

commande [-options] [argument1] . . . [argumentn]

- Un ou plusieurs espaces ou tabulations sont utilisés comme séparateur.

Exemples :wc (word count) affiche le nombre de lignes, de mots, de caractères

d'un fichier.

$ wc /etc/passwd32 37 1139 /etc/passwd

$ wc -l /etc/passwd32 /etc/passwd

$ wc -lc /etc/passwd /etc/group32 1139 /etc/passwd15 337 /etc/group47 1476 total

Page 15: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 9 UNIXPRES

ARRÊT DE L'AFFICHAGE

Deux possibilités :- Par le clavier :

- Arrêt du défilement de l'affichage <Ctrl> <s>- Reprise de l'affichage <Ctrl> <q>

- Au lancement de la commande en utilisant | (pipe) et une des commandes de filtrage page par page more, pg, less.

$ commande | pgh liste des commandes de pg<entrée> avance d'une page-1 une page en arrière+1l avance d'une ligneq quitter

Exemple avec cal qui affiche le calendrier d'une année :

$ cal 2000 | pg

Dans ce cas, la commande cal envoie ses informations à la commande pg par lemécanisme du pipe ou tube de communication (sera vu dans le module "redirections".)

LES MESSAGES D'ERREURS

Si la commande n'existe pas ou si elle n'est pas trouvée :

$ dataksh : data: not found

Si la syntaxe d'appel est erronée :- Chaque commande vérifie ses propres arguments et affiche son propre

message d'erreur.- Dans de nombreux cas, le message d'erreur donne la syntaxe de la

commande.

Exemple :$ wc -? /etc/groupusage: wc [-kclw] [name ...]

Les crochets signifient non obligatoire.

Page 16: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 10 UNIXPRES

EXERCICES

Prise en main d’UNIX / LINUX

1/ Se connecter avec un nom d’utilisateur.

ex: user1<Entrée>

Si le système vous demande un mot de passe, demandez de l'aide.

2/ Attendre l’invite système $, vous avez la main. Tapez :

$ date<Entrée>

3/ Je vais mettre un mot de passe à mon identité :

$ passwd<Entrée>

suivre les indications...

4/ Quels sont les autres utilisateurs connectés ?

$ who<Entrée>

5/ Qui suis-je ?

$ who am i<Entrée>$ whoami<Entrée>

6/ Quel est le nom de mon terminal ?

$ tty<Entrée>

7/ Message sur ma console :

$ echo "Bonjour les Copains "<Entrée>$ echo "Salut \c"<Entrée> (echo -n "Salut " en Linux)$ echo "le prompt $ se trouve après Salut"<Entrée>$ echo "Aujourd’hui nous sommes le : " ; date<Entrée>$ echo <Entrée>$ echo "Deux commandes sur une ligne sont séparées par un ;"<entrée>

Page 17: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 11 UNIXPRES

EXERCICES (suite)

8/ Essayer cal avec ou sans arguments :

$ cal 01 2001<Entrée>$ cal 01<Entrée>$ cal 2001<Entrée>$ cal 2001 | more<Entrée>

9/ Se déconnecter :

Taper simplement <Ctrl> <d>

10/ Se reconnecter ; le système devrait vous demander un mot de passeIl vaudrait mieux se souvenir de celui que vous avez donné !!

11/ Commandes supplémentaires :

$ logname<Entrée>$ uname< Entrée>$ uname -a<Entrée>$ uname -n<Entrée>$ who | wc -l<Entrée>

12/ Utilisation de la documentation en ligne :

$ man passwd<Entrée>$ man who<Entrée>

Page 18: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PRESENTATION ET PRISE EN MAIN D'UNIX / LINUX

LDVINCI Rev3 1 - 12 UNIXPRES

Page 19: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 1 UNIXFIC

UNIX / LINUX

MANIPULER LES FICHIERS

Page 20: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 2 UNIXFIC

SOMMAIRESection Page

ORGANISATION DES FICHIERS 2 - 3Les types de fichiers 2 - 3Organisation des fichiers 2 - 5Exemple d'une arborescence UNIX / LINUX 2 - 5

LE DEPLACEMENT DANS LE SYSTEME DE FICHIERS 2 - 6

OPERATIONS DE BASE SUR LES REPERTOIRES 2 - 7Lister le contenu d'un répertoire 2 - 7Repérer le type des fichiers 2 - 7Créer un répertoire 2 - 7

OPERATIONS DE BASE SUR LES FICHIERS ORDINAIRES 2 - 8Reconnaître un fichier ordinaire 2 - 8Lire un fichier ordinaire ASCII 2 - 8Créer un fichier ordinaire ASCII 2 - 8

LES NOMS DE FICHIERS 2 - 10Donner un nom à la création du fichier 2 - 10Génération de noms par substitution de caractères génériques 2 - 10

DESTRUCTION DE FICHIERS 2 - 11Destruction d'un fichier ordinaire 2 - 11Destruction d'un répertoire 2 - 11

HISTORIQUE DES COMMANDES 2 - 13

EXERCICES 2 - 14Manipuler des fichiers 2 - 14

Page 21: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 3 UNIXFIC

ORGANISATION DES FICHIERS

Les types de fichiers

Fichier ordinaire

Ensemble d'informations (texte ASCII ou binaire).

Les fichiers ordinaires n'ont pas de structure associée.C'est simplement une suite d'octets enregistrés sur le disque.

Un découpage logique en lignes d'un fichier permet son utilisation parcertaines commandes (vi, grep ...).

Fichier répertoire (ou directory)

Contient un ensemble de noms de fichiers.Chaque nom de fichier est associé à un numéro qui permet l'accès au fichier.

Fichier spécial

Nom de fichier associé à un périphérique ou à un mécanisme decommunication.Ce type de fichier sera étudié dans la partie administration.

Exemples:

- Le clavier est un fichier en entrée.- L'écran est un fichier en sortie.- L'imprimante est un fichier en sortie.

Fichier lien symbolique

Nom de fichier faisant référence à un autre fichier.

Page 22: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 4 UNIXFIC

Page 23: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 5 UNIXFIC

Organisation des fichiers

Les fichiers UNIX / LINUX sont organisés en arborescence.

La racine (root) est le nom donné au répertoire qui se trouve au sommet del'arborescence.Ce répertoire est représenté par /

L'ensemble des fichiers est vu par l'utilisateur dans une seule arborescence.Il n'est donc pas nécessaire d'indiquer sur quel périphérique se trouve un fichier pourl'utiliser.Le 1er "/" signifie le répertoire racine.Les autres "/" sont des séparateurs entre les noms de répertoires.

user3

/

sbin dev home

user2user1

entrées sorties

bin

usr

stock

u--> /home

etc tmp

var

fichier ordinaire

fichier répertoire

fichier spécial

Le répertoire /usr/bin contient les commandesutilisateur,le répertoire /etc contient lescommandes et les fichiers de l'administrateur.

bin--> /usr/bin

root

Page 24: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 6 UNIXFIC

LE DEPLACEMENT DANS LE SYSTEME DE FICHIERSDeux commandes importantes de la navigation dans l'arborescence :

pwd qui affiche le répertoire courant (print working directory)cd qui permet de se déplacer (change directory)

A la connexion, l'utilisateur est automatiquement positionné dans un répertoire ditrépertoire d'accueil ( ou HOME directory) que l'on peut connaître simplement :

$ pwd

Ensuite l'utilisateur peut se déplacer dans l'arborescence et se positionner sur lerépertoire de son choix en utilisant cd avec un chemin d'accès en paramètre.

- chemin d'accès par le nom absolu du fichier, c'est-à-dire en partant de /$ pwd/usr/bin$ cd /home/user1/stock$ pwd/home/user1/stock

- chemin d'accès par le nom relatif du fichier, rapport au répertoire courant$ pwd/home$ cd user1/stock$ pwd/home/user1/stock

Il est aussi possible de remonter dans l'arborescence grâce au nom de fichier

.. (point-point) qui représente le répertoire père du répertoire courant.

$ pwd/home/user1$ cd ..$ pwd/home

Pour revenir sous son répertoire de connexion, il suffit de saisir cd$ cd /$ pwd/$ cd$ pwd/home/user1

Pour revenir sous le répertoire précédent cd - (tiret)

Page 25: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 7 UNIXFIC

OPERATIONS DE BASES SUR LES REPERTOIRES

Lister le contenu d'un répertoire

La commande ls (list content of directory) permet d'afficher le nom des fichierscontenus dans un répertoire.

- Afficher le contenu du répertoire courant :$ ls

- Afficher le contenu d'un autre répertoire :$ ls /usr/bin$ Is /usr/bin | pg

- Obtenir des informations supplémentaires sur les fichiers listés :$ ls -l

Repérer le type des fichiers

L'affichage de la commande ls -l permet de repérer le type des fichiers :- la ligne commence par un d : fichier répertoire (directory)- la ligne commence par un - : fichier ordinaire- la ligne commence par b, c : fichier spécial- la ligne commence par l : fichier lien symbolique

Créer un répertoire

La création d'un répertoire se fait par la commande mkdir.$ mkdir stock$ cd stock$ Is -a.. .

la commande mkdir créant 1 répertoire avec 2 entrées :- le répertoire . lié au répertoire créé.

- le répertoire . . lié au répertoire père.

Page 26: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 8 UNIXFIC

OPERATIONS DE BASES SUR LES FICHIERS ORDINAIRES

Reconnaître un fichier ordinaire ASCII

La commande file analyse le contenu du fichier passé en paramètre et affiche lanature de ses informations.

$ file /etc/passwd/etc/passwd : ascii text

$ file /usr/bin/ls/usr/bin/ls : 680x0 R3.1executable page aligned stripped

Lire un fichier ordinaire ASCII

cat affiche le contenu d'un ou plusieurs fichiers.pg, more (unix) permettent d'afficher les gros fichiers page par page.less (linux)

$ pg fichier +3l avance de 3 lignes<entrée> avance d'une page-1 une page en arrièreh help q quitter

$ more fichier <entrée> avance d'une ligneespace avance d'une pageh help q quitter

Créer un fichier ordinaire ASCII

Il n'existe pas de commandes spécialisées pour créer des fichiers ordinaires.Chaque utilitaire (copies, éditeurs de texte, etc ...) crée ses fichiers si besoin.Voici un moyen simple de créer un fichier de texte :

$ cat > entreesligne 1 saisie au clavierligne 2 saisie au clavier<Ctrl> <d>

- Le ">" permet de rediriger la sortie standard d'une commande.- "cat" sans arguments prend en entrée le standard input, c'est-à-dire le

clavier.- Tout le texte frappé est copié dans le fichier de sortie qui est créé par la

redirection (> fichier crée un fichier vide).- <Ctrl> <d> en début de ligne indique la fin d'entrée des données.

Page 27: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 9 UNIXFIC

Page 28: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 10 UNIXFIC

LES NOMS DE FICHIERS

Donner un nom à la création du fichier

Longueur des noms :- Pour UNIX sysV les noms de fichiers sont limités à 14 caractères.- Pour les systèmes de fichiers FFS, BERKELEY, depuis la version

BSD4.2 et les systèmes de fichiers type JFS, Ext2 les noms sontextensibles jusqu'à 255 caractères.

Il n'y a pas de restriction quant à l'orthographe des noms mais voici quelques conseilsà respecter :

- Excepté . (point) et _ (souligné), il ne faut pas utiliser les caractèresspéciaux, car la plupart ont une interprétation possible par le shell.- Un fichier dont le nom commence par point est caché à l'utilisateur.- Les minuscules et les majuscules sont interprétées différemment.

$ > .fic$ Is$ Is -la

Génération de noms par substitution de caractères génériques

Le shell permet l'emploi de caractères génériques qui sont utilisés pourconstruire des noms de fichiers à partir des fichiers sous le répertoire cou-rant ou le répertoire cité.

* remplace n'importe quelle chaîne de caractères par rapportaux noms des objets du répertoire courant ou du répertoirecité.

? remplace un caractère quelconque.[ ] remplace un des caractères contenus entre les crochets.[! ] remplace un des caractères non contenus entre les crochets.

Exemples :$ ls -l /usr/bin/c*$ ls -l /usr/bin/c?

Annulation de la substitution des caractères génériques avec \ (antislash).

Page 29: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 11 UNIXFIC

DESTRUCTION DE FICHIERS

Destruction d'un fichier ordinaire

rm destruction d'un fichier ordinaire.

Voici deux options à connaître :

-i interactif, une question de validation est posée.-f ne tient pas compte des protections des fichiers.

$ rm entrees$ rm -i fichier

Destruction d'un répertoire

Si le répertoire est vide, la destruction peut se faire avec rmdir.

$ rmdir stock

Si le répertoire contient des fichiers, il faut utiliser la commande rm avecl'option -r.

$ rm -ri stock

Page 30: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 12 UNIXFIC

Page 31: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 13 UNIXFIC

HISTORIQUE DES COMMANDESSous BASH (LINUX)

Emacs étant en standard l'éditeur de texte naturel de LINUX, rappel etmodification de commande sont réalisables par l'emploi des touches "flèches":

flèche montante : rappel de la dernière commandeflèche droite et gauche : navigation dans la ligne affichée pour

insérer ou supprimer (touche backspace)

Visualisation des commandes déjà effectuées :$ history extrait le contenu du fichier .bash_history$ history 5 donne les 5 dernières lignes saisies au clavier.

Autres possibilités de réexécution d'une commande :. de la dernière $ !!.de la nième commande $ !n.de l'avant dernière $ !-2.de la dernière commande commençant par find $ !find

Sous KSH (serveur UNIX)

Visualisation des commandes déjà effectuées comme sous bash par :$ history

Réexécution d'une commande :. de la dernière $ r.de la nième commande $ r n.de l'avant dernière $ r -2.de la dernière commande commençant par ls $ r ls

Modification d'une commande déjà exécutée :Nécessite la déclaration de vi dans son environnement de travail par :

$ set -o vi<Echap> entre dans l'éditeur de ligne

k ou - remonte de ligne en ligne

j ou + descend de ligne en ligne

l ou espace avance d'un caractère

h ou backspace recule d'un caractère

x efface le caractère courant

a - - -<Echap> insère du texte à droite du curseur

l - - - <Echap> insère du texte à gauche du curseur

/hist recherche la ligne comprenant la chaîne "hist"r remplace le caractère sous le curseur

Page 32: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 14 UNIXFIC

EXERCICES

Manipuler des fichiers

1/ Se connecter.

2/ Où êtes-vous dans la hiérarchie ?

$ pwd<Entrée>

3/ Y-a-t-il des fichiers et des répertoires ?

$ ls -l<Entrée>

Pour tout effacer de manière interactive :

$ rm -ri *<Entrée>

4/ Je vais entrer du texte dans le fichier tintin :

$ cat > tintin<Entrée> blabla<Entrée> BLABLA<Entrée> blablabla<Entrée> fin<Entrée>

Taper <Ctrl><d> pour terminer l’entrée du texte.

5/ Lister le contenu de tintin :

$ cat tintin<Entrée>

6/ Lister le contenu de votre répertoire :

$ ls -l<Entrée>

7/ Lister les répertoires /usr/bin /dev :

$ ls -l /usr/bin<Entrée> ou ls -C /usr/binou ls -l /usr/bin | pg

8/ Créer les répertoires src et bin :$ mkdir src bin

Page 33: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 15 UNIXFIC

9/ Se positionner sous src

10/ Créer un fichier de nom * (astérisque)

11/ Revenir sous le répertoire de connexion

12/ Lister votre répertoire courant :$ ls -l$ ls$ ls -Rl (-R est récursif : liste une sous-arborescence)

13/ Détruire le répertoire src :$ rm src/*$ rmdir srcou$ rm -ri src

14/ Rechercher et modifier les commandes :<Echap>k n fois jusqu'au lsou/lsA insère au bout de la ligneajouter / /usr

Page 34: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

MANIPULER LES FICHIERS

LDVINCI Rev3 2 - 16 UNIXFIC

Page 35: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 1 UNIXPRO

UNIX / LINUX

PROTEGER SES FICHIERS

Page 36: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 2 UNIXPRO

SOMMAIRE

Section Page

DESCRIPTION D'UN UTILISATEUR 3 - 3

Notion d'utilisateur 3 - 3

DESCRIPTION D'UN GROUPE 3 - 3

Notion de groupe 3 - 3

PROTECTIONS DES FICHIERS ET REPERTOIRES 3 - 4

Les droits d'accès d'un fichier 3 - 4Inode 3 - 4Les droits au niveau d'un fichier ordinaire 3 - 5Les droits au niveau du répertoire 3 - 5

LA COMMANDE ls -l 3 - 7

Fichiers ordinaires 3 - 7Fichiers répertoires 3 - 7

CHANGEMENT DES DROITS D'ACCES 3 - 8

Changer les droits : la commande chmod 3 - 8Changement de propriétaire et de groupe 3 - 11

EXERCICES 3 - 12

Protéger ses fichiers 3 - 12

Page 37: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 3 UNIXPRO

DESCRIPTION D'UN UTILISATEUR

Notion d'utilisateur

Un utilisateur est représenté par les champs suivants du fichier /etc/passwd :

- nom- ["mot de passe"] (dépendant du système d'exploitation)- numéro (uid) - "user identifier number"- numéro de groupe (gid) - "group identifier number"- [commentaire]- répertoire d'accueil- [programme à lancer]

Lors de la connexion, un programme désigné est lancé :généralement il s'agit du shell.

NOTA : Les informations entre crochets sont facultatives.

DESCRIPTION D'UN GROUPE

Notion de groupe

Un groupe d'utilisateurs rassemble un certain nombre d'utilisateurs pouvantpartager les mêmes fichiers.

Il est constitué par les champs suivants du fichier /etc/group :

- nom du groupe- inutilisé ou dépendant du système d'exploitation- numéro du groupe (gid)- [liste des utilisateurs]

Page 38: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 4 UNIXPRO

PROTECTIONS DES FICHIERS ET REPERTOIRES

Les droits d'accès d'un fichier

A la création du fichier :

- Enregistrement de l' uid (user identifier) du propriétaire

- Enregistrement du gid (group identifier) du propriétaire

- Définition et enregistrement des droits d'accès

....

Un fichier est protégé par un ensemble de bits définissant les droits d'accès.

r w x r w x r w x suid sgid

propriétaire groupe autres

Inode

Les caractéristiques d'un fichier (protection, type, adresses des données) sontcontenues dans une suite d'octets appelée l'inode.

Les inodes (un par fichier) forment une liste, la i-list, qui rassemble l'ensemble descaractéristiques des fichiers.

Le numéro d'inode, le i-num, est donné par la commande :

$ ls -li

Page 39: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 5 UNIXPRO

Les droits au niveau d'un fichier ordinaire

r droit d'accès en lecture.

w droit d'accès en écriture.

x droit d'exécution.

suid : set user-idsgid : set group-id

Ces deux informations permettent d'autoriser l'accès à un fichier parl'intermédiaire d'un programme.

L'utilisateur prend temporairement, durant l'exécution du programme,l'identité du propriétaire ou du groupe et donc leurs droits.

Ainsi, les fichiers /etc/passwd et/ou /etc/security/passwd(UNIX),/etc/shadow(LINUX) sont interdits d'accès en écriture mais, parl'intermédiaire de la commande passwd, l'utilisateur peut écrire son mot depasse dans /etc/passwd (système non sécurisé) ou dans-/etc/security/passwd (UNIX)- /etc/shadow (LINUX) -(système sécurisé).

$ ls -l /usr/bin/passwd

$ ls -l /etc/passwd

$ ls -l /etc/security/passwd

Les droits au niveau du répertoire

r autorise la lecture du contenu du répertoire (liste des fichiers).

w autorise la création ou la suppression d'un fichier sous lerépertoire.

x droit d'accès au contenu du répertoire.

nota : Les droits ne sont valables qu'à un seul niveau :Un sous-répertoire peut être protégé, alors que le répertoire nel'est pas et vice-versa.

Page 40: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 6 UNIXPRO

Page 41: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 7 UNIXPRO

LA COMMANDE ls -lFichiers ordinaires

$ ls -l /usr/bintotal 6993-rwxrwxr-x 1 bin bin 16336 Mar 8 2002 cat-rwxrwxr-x 3 root bin 16124 Mar 8 2002 cp-rwxrwxr-x 1 bin bin 18760 Mar 8 2002 date-rwxrwxr-x 1 bin bin 13320 Mar 8 2002 echo-rwxrwxr-x 2 bin bin 33896 Mar 9 2002 ed-rwxrwxr-x 1 bin bin 28928 Mar 8 2002 file-rwxrwxr-x 3 root bin 16124 Mar 8 2002 ln-rwxrwxr-x 8 bin bin 60152 Mar 8 2002 ls-rwxr-sr-x 1 bin mail 63264 Apr 2 2002 mail-rwxrwxr-x 1 bin bin 15276 Mar 8 2002 mesg-rwxr-xr-x 1 root bin 13180 Mar 8 2002 mkdir-rwxrwxr-x 3 root bin 16124 Mar 8 2002 mv-rwsr-sr-x 1 root sys 23600 Mar 8 2002 passwd-rwxrwxr-x 1 bin bin 14300 Mar 8 2002 pwd-rwxrwxr-x 1 bin bin 16384 Mar 8 2002 rm-rwxr-xr-x 1 root bin 13176 Mar 8 2002 rmdir-rwxrwxr-x 2 bin bin 52504 Mar 9 2002 sh-rwxrwxr-x 1 bin bin 14672 Mar 8 2002 wc-rwxrwxr-x 1 bin bin 56144 Mar 8 2002 who

nombrede liens

type etdroitsd'accès

nomdate de dernièremodification

taillepropriétaire groupe

nota : Pour l'affichage, le bit s est représenté à l' endroit du bit x :- s (minuscule) signifie que le bit x est également positionné.- S (majuscule) signifie que le bit x n'est pas positionné.

Fichiers répertoires$ ls -l /utotal 89drwxr-xr-x 2 user1 stagiair 512 Mar 18 11:13 user1drwxr-xr-x 2 user2 stagiair 512 Mar 25 09:15 user2drwxr-xr-x 2 user3 stagiair 512 Mar 25 09:27 user3drwxr-xr-x 2 user4 stagiair 1024Mar 25 16:30 user4

nota : . est un lien sur le nom de répertoire.. est un lien sur le nom du répertoire père

Page 42: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 8 UNIXPRO

CHANGEMENT DES DROITS D'ACCÈS

Changer les droits : la commande chmod

La commande chmod permet de modifier les droits sur les fichiers et répertoires.

Deux syntaxes possibles :

- En absolu : chmod "valeur octale" fichier

r w x r - x r - - 1 1 1 1 0 1 1 0 0 7 5 4

$ chmod 754 fichier

- En symbolique : chmod [ qui ] operation [ permission ] fichier

qui : u userg groupo othera all

opérations : + ajoute des droits- enlève des droits= met des droits,enlève les autres

permissions : r lecturew écriturex exécutions met suid ou guid (fonction de qui)

$ chmod g-w,o=r fichier

nota : Seul le propriétaire d'un fichier et l'administrateur peut enchanger les droits.

Page 43: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 9 UNIXPRO

$ cat >fichierecho "fichier d’essai des droits d’accès"<Ctrl> <d>

$ ls -l fichier-rw-rw-r-- 1 user1 base 42 Apr 5 13:44 fichier

$ chmod 754 fichier$ ls -l fichier-rwxr-xr-- 1 user1 base 42 Apr 5 13:44 fichier

$ chmod g+w,o=x fichier$ ls -l fichier-rwxrwx--x 1 user1 base 42 Apr 5 13:44 fichier

$ cat fichierecho "fichier d’essai des droits d’accès"$ fichierfichier d’essai des droits d’accès

$ chmod 000 fichier$ ls -l fichier---------- 1 user1 base 42 Apr 5 13:44 fichier

$ cat fichiercat: cannot open fichier$ fichierksh : fichier : cannot execute$ echo fin >fichierksh : fichier : cannot create

Page 44: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 10 UNIXPRO

Page 45: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 11 UNIXPRO

Changement de propriétaire et de groupe(uniquement sous super-user dans la plupart des versions)

La commande chgrp permet de changer le groupe d'un fichier.

La commande chown permet de changer le propriétaire d'un fichier.

$ echo bonjour >fichier$ chmod 700 fichier$ ls -l fichier-rwx------ 1 user1 base 8 Apr 5 14:06 fichier

$ cat fichierbonjour

$ chgrp public fichier$ ls -l fichier-rwx------ 1 user1 public 8 Apr 5 14:06 fichier

$ chown phil fichier$ ls -l fichier-rwx------ 1 phil public 8 Apr 5 14:06 fichier

$ cat fichiercat: cannot open fichier

Page 46: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 12 UNIXPRO

EXERCICESProtéger ses fichiers

1/ Ecrire les procédures suivantes dans votre répertoire d’accueil.

bonjour est le nom du fichier contenant les commandes qui suivent:

$ cat > bonjourecho "BONJOUR"echo "Comment ca va?"<Ctrl> <d>

reponse est le nom du fichier contenant les commandes qui suivent:

$ cat > reponseecho "BONJOUR"echo "Tres bien.Et toi?"<Ctrl> <d>

2/ Quelles sont les autorisations d’accès sur les objets que vous avez créés?

$ ls -l -R

3/ Exécuter bonjour et reponse.Positionner les droits d’accès en exécution sur les deux fichiers.Re-exécuter bonjour et reponse.

$ bonjour$ chmod u+x bonjour$ bonjour

4/ Enlever les accès pour bonjour et reponse aux utilisateursde votre groupe mais aussi à tous les autres utilisateurs.

$ chmod go= fichier

Aurait-on pu utiliser chmod différemment? Essayer les possibilités surd’autres fichiers (g-rwx, ou o-rwx, ou 700 .....).

5/ Modifier les accès de bonjour et reponse afin de permettre l’accèsuniquement à votre groupe en lecture et exécution. L’accès à votre fichierest évidemment autorisé à l’utilisateur "root".

Page 47: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 13 UNIXPRO

6/ Essayer la commande chgrp sur un fichier inutile, si vous avez la per-mission de le faire :

$ chgrp groupe fichier

7/ Ecrire le script suivant :

$ cat >rmecho "SALUT"<Ctrl> <d>

Le fichier rm est créé; Modifiez le fichier pour le rendre exécutable,

$ chmod u+x rm

et ensuite essai d’exécution de rm puis essai de suppression d’un fichierexistant.

$ rm fic

Que se passe-t-il?

NE JAMAIS DONNER COMME NOM DE FICHIER LE NOM D’UNECOMMANDE SYSTEME DEJA EXISTANTE

Page 48: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROTEGER SES FICHIERS

LDVINCI Rev4 3 - 14 UNIXPRO

Page 49: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 1 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

UNIX / LINUX

COPIES, DEPLACEMENTS,LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE

FICHIERS

Page 50: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 2 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

Page 51: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 3 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

SOMMAIRE

Section Page

COPIER DES FICHIERS 4 - 4

DEPLACER , RENOMMER UN FICHIER 4 - 5

CREER UN LIEN SUR UN FICHIER 4 - 7

RECHERCHER UN FICHIER 4 - 8

SAUVEGARDER DES FICHIERS 4 - 10

RESTAURER DES FICHIERS 4 - 11

EXERCICES 4 - 12

Copies, déplacements, liens, recherche de fichiers 4 - 12sauvegarde restauration de fichiers

Page 52: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 4 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

COPIER DES FICHIERSLa commande cp (copy) permet de copier des fichiers.

- Copie d'un fichier :cp source destination

- Copie d'un ensemble de fichiers vers un répertoire :cp fichier1 fichier2 . . . repertoire

- Copie de tout un répertoire :cp * repertoire

- Copie de toute une arborescence :cp -r ...... repertoire

$ pwd/home/user2

$ ls -ltotal 2drwxrwxr-x 2 user2 base 512 Apr 5 16:31 copiedrwxrwxr-x 2 user2 base 512 Apr 5 16:32 source

$ cd source$ ls -ltotal 3-rw-rw-r-- 1 user2 base 16 Apr 5 16:25 original1-rw-rw-r-- 1 user2 base 17 Apr 5 16:26 original2-rw-rw-r-- 1 user2 base 18 Apr 5 16:26 original3

$ ls -l ../copietotal 0

$ cp original1 ../copie/original1.copie$ ls -l ../copietotal 1-rw-rw-r-- 1 user2 base 16 Apr 5 16:33 original1.copie

$ cp * ../copie$ cd ../copie$ ls -ltotal 4-rw-rw-r-- 1 user2 base 16 Apr 5 16:34 original1-rw-rw-r-- 1 user2 base 16 Apr 5 16:33 original1.copie-rw-rw-r-- 1 user2 base 17 Apr 5 16:34 original2-rw-rw-r-- 1 user2 base 18 Apr 5 16:34 original3

Page 53: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 5 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

DEPLACER , RENOMMER UN FICHIER

La commande mv (move) permet de déplacer, renommer un fichier.

- Déplacement d'un fichier : mv source destination

- Déplacement de plusieurs fichiers vers un répertoire : mv fichier1 fichier2 . . repertoire mv * repertoire

- Déplacement d'un répertoire : mv repertoire1 repertoire2

$ pwd/home/user2/source$ ls -l-rw-rw-r-- 1 user2 base 16 Apr 5 16:25 original1-rw-rw-r-- 1 user2 base 17 Apr 5 16:26 original2-rw-rw-r-- 1 user2 base 18 Apr 5 16:26 original3

$ mv original1 original1.bis$ ls -l-rw-rw-r-- 1 user2 base 16 Apr 5 16:25 original1.bis-rw-rw-r-- 1 user2 base 17 Apr 5 16:26 original2-rw-rw-r-- 1 user2 base 18 Apr 5 16:26 original3

$ cd ..$ pwd/home/user2$ ls -ldrwxrwxr-x 2 user2 base 512 Apr 5 16:34 copiedrwxrwxr-x 2 user2 base 512 Apr 5 16:36 source

$ mv source deplace$ ls -ldrwxrwxr-x 2 user2 base 512 Apr 5 16:34 copiedrwxrwxr-x 2 user2 base 512 Apr 5 16:36 deplace$ ls -l deplace-rw-rw-r-- 1 user2 base 16 Apr 5 16:25 original1.bis-rw-rw-r-- 1 user2 base 17 Apr 5 16:26 original2-rw-rw-r-- 1 user2 base 18 Apr 5 16:26 original3

Page 54: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 6 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

Page 55: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 7 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

CREER UN LIEN SUR UN FICHIER

La création de lien sur un fichier consiste à donner plusieurs noms et donc plusieurschemins d'accès à un fichier.

La commande ln (link) permet de créer des liens.

- Création d'un lien : ln source destination

La commande ls -l donne le nombre de liens d'un fichier.La commande rm permet d'effacer un lien.Pour supprimer un fichier il faut enlever tous les liens.

$ pwd/home/user2$ ls -ltotal 2drwxrwxr-x 2 user2 base 512 Apr 5 17:05 applidrwxrwxr-x 2 user2 base 512 Apr 5 16:36 source$ ls -li applitotal 17404 -rw-rw-r-- 1 user2 base 72 Apr 5 17:05 fichier1

$ ln appli/fichier1 fichier.lien$ ls -li applitotal 17404 -rw-rw-r-- 2 user2 base 72 Apr 5 17:05 fichier1$ ls -li fichier.lien7404 -rw-rw-r-- 2 user2 base 72 Apr 5 1 fichier.lien

$ rm appli/fichier1$ ls -li applitotal 0$ ls -li fichier.lien7404 -rw-rw-r-- 1 user2 base 72 Apr 5 17:05 fichier.lien

Page 56: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 8 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

RECHERCHER UN FICHIER

La commande find permet de retrouver des fichers dans l'arborescence.

- Recherche par nom de fichier :$ find / -name fichier -print ( -print non obligatoire )

- Recherche par numéro (i-num) de fichier :$ find /home -inum numero -print

- Recherche par nom de propriétaire de fichier :$ find / -user nom -print

- Recherche des fichiers modifiés il y a n jours :$ find /home -mtime n -print

- Recherche des fichiers modifiés à une date plus récente que le fichier cité dans la commande :

$ find /home/user1 -newer ficref -print

- Recherche des fichiers suivant leur type (f=ordinaire, d=répertoire) :$ find /usr/bin -type d -print

- Recherche suivant les droits des fichiers :$ find /home -perm 764 -print

- Recherche des fichiers à n liens :$ find /usr/bin -links n -print

Pour éviter l'édition des messages d'erreurs à l'écran, utiliser la redirection dustandard erreur sur le fichier poubelle /dev/null.

$ find / -name fichier -print 2>/dev/null

Page 57: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 9 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

$ cd /

$ find . -name core -print

$ cd /usr/bin

$ ls -li rm2228 -r-xr-xr-x 2 bin bin 7826 09 avril 2002 rm

$ find /usr/bin -inun 2228 -print/usr/bin/rm/usr/bin/rmdir

$ pwd/home/user1

$ find /home -user user1 -print/home/user1/home/user1/res1/home/user1/res/home/user1/fic/home/user1/fic1

$ Is -ltotal 4-rw-r--r-- 1 user1 base 75 Oct 18 11:41 fic-rw-r--r-- 1 user1 base 169 Oct 18 11:42 fic1-rw-r--r-- 1 user1 base 344 Oct 18 11:46 res-rw-r--r-- 1 user1 base 68 Oct 18 11:28 res1

Page 58: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 10 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

SAUVEGARDER DES FICHIERS

Construction d'un fichier d'archive

La commande cpio -o prend sur l'entrée standard les noms de fichiers àsauvegarder dans le fichier d'archive.

Principe

a) Positionnement sur l'arborescence contenant les fichiers à archiver

b) find . -print | cpio -o[autres options]>fichier archive

Quelques autres options :

-a maintient la date de dernier accès effectué sur les fichiers.

-c écrit un en_tête ASCII (archive portable sur d'autres systèmes).

-v affiche le nom des fichiers archivés à l'écran.

Nota :Le fichier archive peut être :

. 1 fichier ordinaire fic

. 1 fichier spécial /dev/xxxx

Page 59: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 11 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

RESTAURER DES FICHIERS

Gestion d'un fichier d'archive

La commande cpio -i reconstruit une arborescence à partir d'un fichierd'archive.

Principe

a) Positionnement sur l'arborescence devant recevoir les fichiers àrestaurer.

b) cpio -i[autres options] [arguments de sélection]<fichier archive

- Utilisation possible des caractères génériques ? * [ ] pourconstruire les arguments de sélection.Si pas d'arguments de sélection, restauration de tous les fichiersde l'archive.

- Les fichiers restaurés auront les droits d'accès enregistrés parcpio -o, auront même propriétaire/groupe que l'utilisateur exécutantcpio -i.

Quelques autres options :

-c si utilisées lors de cpio -o.

-d crée des fichiers de type répertoire si nécessaire.

-m conserve la date de dernière mise à jour pour les fichiers restaurés.

-u copie inconditionnelle des fichiers de même nom.

-v affiche à l'écran le nom des fichiers restaurés.

-f restaure les fichiers ne répondant pas aux arguments de sélection.

-t extrait les caractéristiques des fichiers archivés (droits d'accès, uid,nom ...).

-r change les noms des fichiers restaurés par dialogue avec l'utilisateur.

Page 60: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 12 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

EXERCICESASSUREZ VOUS D’ETRE TOUJOURS DANS LE BON REPERTOIRE (pwd)

1/ Créer les fichiers de texte fic1 et fic2 dans votre répertoire d’accueil

2/ Copier chaque fichier dans un fichier de nom fichier.old$ cp fic1 fic1.old

3/ Créer les répertoires src et bin$ mkdir src bin

4/ Copier les fichiers fic1 et fic2 dans src, les *.old dans bin.$ cp fic1 src/fic1ou$ cd src ; cp ../fic1 fic1ou$ cd src ; cp ../fic1 .

5/ Détruire les fichiers du répertoire d’accueil.$ cd$ rm fic1 etc...ou$ rm -i fic1 fic2 ...

6/ On aurait pu choisir une solution plus élégante ? Laquelle ?L’essayer en mettant les fichiers fic1 fic2 fic1.old fic2.old dans votrerépertoire d’accueil.

7/ Pour la suite de l’exercice il faut que vous ayez les fichiersfic1 et fic2 dans bin fic1.old et fic2.old dans srcet qu’ils n’existent pas dans votre répertoire d’accueil (HOME).

Créer un lien de nom fic3 sous votre répertoire d'accueil équivalent à fic1.$ cd$ ln bin/fic1 fic3

Page 61: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 13 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

EXERCICES (suite)

8/ Lister les deux fichiers fic1 et fic3.$ ls -il bin/fic1 fic3

Que remarquez-vous ?

9/ Essayer d’annuler fic3. A-t-il disparu ? Et fic1 ? Pourquoi ?$ rm fic3

10/ mv permet de renommer un fichier. Renommer fic2.old dans le répertoiresrc en lui donnant comme nom fic4.$ cd src$ mv fic2.old fic4

ou $ mv src/fic2.old src/fic4

11/ Rechercher le fichier vi.$ find /usr/bin -name vi -print 2> /dev/null

12/ Trouver l'inode du fichier vi.$ Is -il du ficher vi.

13/ Rechercher tous les fichiers ayant le même i-num que vi.$ find /usr/bin -inum "inode-de-vi" -print 2>/dev/null

14/ A partir des fichiers de votre répertoire d'accueil créer un fichier d'archivesous /tmp suffixé par votre nom utilisateur.$ cd$ find . -print | cpio -ocv >/tmp/archi.userx

15/ Vérifier le contenu de l'archive créée.$ cpio -itcv</tmp/archi.userx

16/ Détruire le contenu de votre répertoire d'accueil et le restaurer à partir del'archive.$ cd$ rm -r *$ rm .*$ cpio -icvdm </tmp/archi.userx

Page 62: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev4 4 - 14 UNIXCOP

COPIES, DEPLACEMENTS, LIENS, RECHERCHE DE FICHIERS,SAUVEGARDE RESTAURATION DE FICHIERS

Page 63: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 1 UNIXCOM

UNIX / LINUX

COMMUNIQUER ENTRES UTILISATEURS

AFFICHERET

IMPRIMER

Page 64: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 2 UNIXCOM

Page 65: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 3 UNIXCOM

SOMMAIRE

Section Page

COMMUNICATION PAR MAILX 5 - 4Envoi d'un message par mailx 5 - 4Réception d'un message par mailx 5 - 4

COMMUNICATION PAR WRITE 5 - 7Envoi d'un message par write 5 - 7Protéger son écran 5 - 7

GESTION LOGICIELLE DES IMPRESSIONS : LE SPOOL 5 - 9

COMMANDES DE GESTION DES IMPRESSIONS 5 - 9

LES IMPRESSIONS UNIX 5 - 11Présentation de l'affichage 5 - 11La commande lp 5 - 11

Page 66: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 4 UNIXCOM

COMMUNICATION PAR MAIL OU MAILX

Le service de messagerie est un service système devant être activé explicitement.

Envoi d'un message par mailx (serveur UNIX)

La commande mailx permet d'envoyer des messages à un autre utilisateur,connecté ou non.

$ mailx user1Subject : objet du messagesaisie du message

<Ctrl><d>Cc: user2, user3

Réception d'un message par mailx

Si l'utilisateur est connecté, un message lui indiquera qu'il a reçu un courrier,sinon ce message sera affiché lors de la prochaine connexion.

Le retrait des messages se fait par mailx.

Page 67: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 5 UNIXCOM

$ whoamiagou$$ mail rootSubject: présentation de mailxMessage envoyé à l'utilisateur rootCc:$

# whoamiroot# mailxCourrier [5.2 UCB] [AIX 4.1] Entrez ? pour afficher l'aide."/var/spool/mail/root": 1 message 1 nouveau(x)>N 1 agou Fri Dec 18 17:14 11/312 "présentation de mailx"? ?Commandes de contrôle:

q Abandon - application des commandes de la session en cours.x Abandon - restauration de l'état initial de la boîte aux lettres! <cmd> Lancement d'un shell, exécution de la commande <cmd>

et retour à la session.cd [<rép>] Passage dans le répertoire <rép> ou dans le répertoire de connexion

($HOME).Commandes d'affichage:

t [<liste_msg>] Affichage des messages de <liste_msg> ou du message en cours.n Affichage du message suivant.f [<liste msg> Affichage des en-têtes de message.h [<num>] Affichage des en-têtes du groupe comportant le message <num>.

Gestion des messages :e [<num>] Edition du message <n°> (éditeur par défaut: ex).d [<liste_msg>] Suppression des messages de <liste_msg> ou du message en cours.u [<liste_msg>] Rappel des messages supprimés.s [<liste_msg>] <fich>Adjonction des messages (en-têtes compris) dans le fichier <fich>.w [<liste_msg>]<fich> Adjonction des messages (texte seulement) dans le fichier <fich>.pre [<liste_msg>] Conservation des messages dans la boîte aux lettres.

Création de courrier :m <liste_adr> Création et envoi d'un nouveau message aux adresses de la <liste_adr>.r [<liste_msg>] Envoi d'une réponse aux expéditeurs et destinataires des messages.R [<liste_msg>] Envoi d'une réponse aux expéditeurs des messages.

a Affichage de la liste des alias et de leurs adresses.========================Commandes de boîte aux lettres=========================? e 1Message 1:From agou Fri Mar 18 17:14:18 2002Date: Fri, 18 Mar 2002 17:14:18 + 0200From: agou (alain gourmel)To: rootSubject: présentation de mailxEtat: 0Message envoyé a l'utilisateur root? q#

Page 68: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 6 UNIXCOM

Page 69: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 7 UNIXCOM

COMMUNICATION PAR WRITE

Envoi d'un message par write

La commande write permet de transmettre immédiatement un message à unautre utilisateur connecté.

$ write jeantextedumessage<Ctrl><d>

L'utilisateur destinataire reçoit les lignes au fur et à mesure qu'elles sont écrites.

Il y a donc possibilité d'effectuer un dialogue.

Protéger son écran

la commande mesg inhibe ou non les messages pouvant arriver (ceci évited'avoir des écrans perturbés).

$ mesgis y$ mesg n$ mesgis n

Page 70: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 8 UNIXCOM

Page 71: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 9 UNIXCOM

GESTION LOGICIELLE DES IMPRESSIONS : LE SPOOL

Les impressions sont organisées en file d'attente pour éviter les mélanges defichiers sur la ou les imprimante(s).

Ceci est pris en charge par un ensemble de programmes et de fichiers : spool(shared Peripheral Output On Line)

(fic1) (fic2)

impression de fic1

SPOOLimpression de fic2

pr1

COMMANDES DE GESTION DES IMPRESSIONS

Suivant les systèmes UNIX, les commandes de gestion des impressions changent.

Mettre un fichier dans la file d'attente lp lpr enq, qprt

Connaître l'état de la file d'attente lpstat lpq enq, qchk

Supprimer un fichier de la file d'attente cancel lprm enq, qcan

<------------------ L I N U X ---------->

<--------------------------- A I X ----------------------------->

Page 72: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 10 UNIXCOM

Page 73: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 11 UNIXCOM

LES COMMANDES UTILES D'IMPRESSIONS

La commande pr permet de mettre en forme la sortie de l'état d'un fichier.pr [-options] fichier

Options :-n permet la numérotation des lignes du fichier.-l définit la longueur de la page en lignes (66 par défaut).-h définit un en-tête de page.-ox décale chaque ligne de x caractères vers la droite.

La commande lp notifie l'édition à la file d'attente.lp [-options] fichier

Options :-t imprime un titre sur l'état de sortie.-n spécifie le nombre d'exemplaires.-d définit l'imprimante de destination.-c copie du fichier à imprimer, modification possible du fichier origine

avant l'impression.

La commande lpstat montre le contenu des files d'attente.lpstat [-t]

La commande cancel permet de supprimer un état en file d'attente ou en coursd'édition.

cancel nom-file-d'attente ou n°-de-l'état

Exemple:

$ cat edition | pr -o8 -l22 | lprequest id is pr1-345 (standard input)

$ cat /etc/group | pr -o8 -h "group_$LOGNAME" | lp -dpr1request id is pr1-356 (standard input)

$ cat /etc/group |pr -o8 | lp -t"group_$LOGNAME" -dpr1request id is pr1-359 (standard input)

$ lpstatpr1-356 yvon 7388 Jul 3 17:10 on pr1pr1-359 yvon 7395 Jul 3 17:10 on pr1

$ cancel pr1-356 pr1-359request "pr1-356" cancelledrequest "pr1-359" cancelled

Page 74: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

COMMUNIQUER ENTRE UTILISATEURS, AFFICHER ET IMPRIMER

LDVINCI Rev3 5 - 12 UNIXCOM

Page 75: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 1 UNIXVI

UNIX / LINUX

FONCTIONS DE BASEET

FONCTIONS AVANCEESDE VI

Page 76: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 2 UNIXVI

SOMMAIRE

Section Page

MISE EN OEUVRE DE VI 6 - 4Présentation de vi 6 - 4Spécification du type de terminal 6 - 4Entrée dans vi 6 - 5Sortie de vi 6 - 5

CREATION ET INSERTION DE TEXTE 6 - 6Insertion de texte dans une ligne 6 - 6Insertion de lignes 6 - 6Regroupement de lignes 6 - 6

DEPLACEMENT DU CURSEUR DANS UN FICHIER 6 - 7Sur caractères 6 - 7Sur mots 6 - 7Sur lignes 6 - 7

CHANGEMENT DE FENETRE 6 - 7

OPTIONS DE vi POSITIONNEES PAR LA COMMANDE set 6 - 9

RECHERCHES DANS LE FICHIER 6 - 10Positionnement sur numéro de ligne 6 - 10Recherche de chaîne de caractères 6 - 10

DESTRUCTION DE TEXTE 6 - 10Détruire des caractères 6 - 10Détruire des mots 6 - 10Détruire des lignes 6 - 10

REMPLACEMENT DE TEXTE 6 - 11Remplacement de caractères 6 - 11Remplacement de mots 6 - 11Remplacement de lignes 6 - 11

ANNULATION OU REPETITION D'UNE COMMANDE 6 - 11Annulation d'une commande 6 - 11Répétition d'une commande 6 - 11Compte-rendu 6 - 11

Page 77: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 3 UNIXVI

SOMMAIRE (suite)

Section Page

DEPLACEMENT ET COPIE DE TEXTE 6 - 12Déplacement de texte 6 - 12Copie de texte 6 - 12

RECUPERATION D'UN FICHIER APRES ARRET BRUSQUE 6 - 12

EXERCICES 6 - 13Les bases de vi 6 - 13Le fichier "edition" 6 - 13

FONCTIONS AVANCÉES DE VI 6 - 16

COPIES ET DEPLACEMENT DE TEXTE (COMPLEMENTS) 6 - 16Insérer le contenu d'un autre fichier dans le tampon 6 - 16Insérer le résultat d'une commande dans le fichier 6 - 16Copie d'une partie du tampon dans un autre fichier 6 - 16Copie et déplacement de texte 6 - 17Echanges de tampons nommés entre fichiers 6 - 17

SUBSTITUTIONS 6 - 19Substituer des chaînes de caractères 6 - 19

LES EXPRESSIONS REGULIERES 6 - 20Les caractères spéciaux 6 - 20Quelques exemples d'expressions régulières 6 - 21

RECHERCHE D'UNE EXPRESSION REGULIERE 6 - 22

EXERCICES 6 - 23Utilisation avancée de vi 6 - 23

Page 78: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 4 UNIXVI

MISE EN OEUVRE DE VI

Présentation de vi

vi est un éditeur de texte pleine page :

- L'écran est une fenêtre ouverte sur le fichier.

- Accès à l'ensemble de la fenêtre par déplacement du curseur.

- Possibilité de déplacer la fenêtre dans le fichier à sa guise.

Spécification du type de terminal

vi doit connaître le type de terminal utilisé.

Ceci se fait grâce à la variable TERM de l'environnement.

Sous LINUX, 2 grands cas se présentent :

. mode console :$ TERM=linux

. mode graphique X11 : $ TERM=xterm

Sur serveur UNIX de nombreuses possiblités se présentent suivant laconnexion :

. terminal écran/clavier ASCII : $ TERM=vt320-8

. terminal graphique : $ TERM=hft0

. fenêtre graphique : $ TERM=xterm

Page 79: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 5 UNIXVI

Entrée dans vi

Appel :$ vi fichier

- la fenêtre est au début du fichier.- si le fichier n'existe pas, il sera créé par les directives de sorties.- vi est construit à partir de l'éditeur ex, la dernière ligne sert aux :

- directives en mode éditeur ligne précédées de : et terminées par <Entrée>- statistiques- messages d'erreurs.

Lecture seule :

$ view fichier

- cet appel ouvre le fichier en lecture seule, ce qui permet de consulter unfichier sans risquer de le modifier.

Sortie de vi

Avec sauvegarde :ZZ ou :x<Entrée>date de modification impactée

si modifications dans le fichierou encore

:w<Entrée> suivi de :q<Entrée>ou :wq<Entrée> date de modification

impactée à chaque réécriture

Sans sauvegarde ::q (s'il n'y a pas eu de modifications)

ou:q! (s'il y a eu modifications)

Vers le shell ::! commande

ou:sh$ commandes$ <Ctrl> <d>

Page 80: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 6 UNIXVI

CREATION ET INSERTION DE TEXTE

Insertion de texte dans une ligne

a<texte><Echap> Insertion de texte derrière le curseur.La directive n'est pas affichée.<Echap> : sortie du mode insertion.

i<texte><Echap> Insertion de texte avant le curseur.

A<texte><Echap> Insertion de texte en fin de ligne.

I<texte><Echap> Insertion de texte en début de ligne.

Insertion de lignes

o<texte><Echap> Insertion d'une ligne après la lignecourante.

O<texte><Echap> Insertion d'une ligne avant la lignecourante.

Regroupement de lignes

La directive J permet de regrouper la ligne courante et la suivante.

nota : Pour insérer des caractères non imprimables, les faireprécéder du caractère <Ctrl><v>.

Page 81: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 7 UNIXVI

DEPLACEMENT DU CURSEUR DANS UN FICHIER

Sur caractères

ou h ou backspace

ou j ou <Entrée>

ou l ou espace

ou k

Sur mots

w W Début du mot suivant

La lettre majuscule ne tient compte que des espaces ou des tabulations.La lettre minuscule tient compte des signes de ponctuation.

Sur lignes

^ Début de ligne$ Fin de ligneCR Début de ligne suivante0 (zéro) Début de ligne physique(pour les lignes

commençant par des espaces ou des tabulations)

CHANGEMENT DE FENÊTRE<Ctrl><d> Un demi écran vers le bas (down)

<Ctrl><u> Un demi écran vers le haut (up)

<Ctrl><f> Un écran moins 2 lignes vers le bas (forward)

<Ctrl><b> Un écran moins 2 lignes vers le haut (backward)

Page 82: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 8 UNIXVI

Page 83: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 9 UNIXVI

OPTIONS DE vi POSITIONNEESPAR LA COMMANDE set

:set option1 [option 2] ... [option n]

nu Fait apparaître la numérotation des lignes.

nonu Enlève la numérotation des lignes.

showmode Affiche un message en bas d'écran lors d'unesaisie de texte.

list Fait apparaître les caractères non affichables(<Entrées>, Tabulation, ...).

nolist Enlève le signalement des caractères nonaffichables.

ai Automatise l'indentation lors d'une saisie de texte.La ligne saisie a automatiquement la mêmeindentation que la ligne précédente.

NOTA : La variable d'environnement EXINIT, si elle est renseignéeavec la commande set automatisera les options de vi.

Page 84: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 10 UNIXVI

RECHERCHES DANS LE FICHIER

Positionnement sur numéro de ligne

:n<Entrée>ou n G Le curseur se place sur la ligne n.Au besoin il y a déplacement de la fenêtre.

:$<Entrée> ou G Le curseur se place sur la dernière ligne du fichier

Recherche de chaîne de caractères

Elle se fait par : / (en avant)? (en arrière)

/chaîne<Entrée> Echo sur la dernière ligne.Curseur positionné sur la ligne contenant chaîne.

?chaîne<Entrée> Idem en remontant.n Répétition dans le même sens.N Répétition dans le sens inverse.

DESTRUCTION DE TEXTE

Détruire des caractèresx Détruit le caractère courant.3x Détruit 3 caractères.X Détruit le caractère précédent.

Détruire des motsdw Détruit le mot courant (à partir du curseur

jusqu'à la fin du mot).3dw ou d3w Détruit 3 mots.d/chaîne Détruit jusqu'à chaîne non comprise.

Détruire des lignesdd ou :d<Entrée> Détruit la ligne courante.3dd Détruit 3 lignes.d$ ou D Détruit la fin de ligne.

Page 85: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 11 UNIXVI

REMPLACEMENT DE TEXTE

Remplacement de caractèresrb Remplace le caractère courant par "b".R<texte><Echap> Remplace le nombre de caractères voulu par

"texte".s<texte><Echap> Remplace le caractère courant par "texte".

Remplacement de motscw<texte><Echap> Remplace 1 mot par "texte".

Le mot à remplacer est délimité par lecurseur et un $.

c2w<texte><Echap> Remplace les 2 mots qui suivent.C ou c$ Remplace la fin de ligne.c/chaîne Remplace jusqu'à chaîne non comprise.

Remplacement de lignesS<texte><Echap> Détruit la ligne courante et la remplace par

"texte".

ANNULATION OU REPETITION D' UNE COMMANDE

Annulation d'une commandeu Annule l'effet de la dernière directive de changement

(même pour elle).U Annule tous les changements faits dans la ligne

courante.

Répétition d'une commande. Effectue à nouveau la dernière commande de

modification de texte.

Compte-rendu<Ctrl><g> Donne le nom, l'état du fichier le numéro de ligne, où

est le curseur, et le % de texte au-dessus ducurseur.

Page 86: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 12 UNIXVI

DEPLACEMENT ET COPIE DE TEXTE

Déplacement de textePour chaque directive de destruction (x ou d ), vi mémorise la partie dé-truite jusqu'à la prochaine destruction, dans un tampon dit tampon sans nom.

Les directives p et P (put) permettent de récupérer la partie mémorisée.

Il faut au préalable positionner le curseur à l'endroit choisi sur un objet du mêmetype que l'objet détruit, c'est-à-dire :

- caractère, mot, ligne, fin de ligne

p Copie la dernière destruction après l'objet du même type.P Idem avant l'objet du même type.

Un autre moyen de déplacer des lignes :

:5,10m20 Les lignes 5 à 10 sont déplacées après la ligne 20.

Copie de texte

La directive y (yank) copie sans le détruire l'objet désigné du texte dans letampon sans nom.Il suffit ensuite de se positionner à l'endroit choisi et de récupérer le contenu dutampon sans nom par les directives p ou P.

Y3w Met les 3 mots suivants dans le tampon.Y ou yy Met la ligne courante dans le tampon.5yy Met 5 lignes dans le tampon.

Un autre moyen de copier des lignes :

:5,8t25 Les lignes 5 à 8 sont copiées après la ligne 25.

Récupération d'un fichier après arrêt brusque

Si un arrêt brutal de la machine survient (incident système, coupuresecteur), possibilité de récupérer le fichier temporaire.

- Message de la commande mail.- Récupération du fichier par :

$ vi -r fichier

Page 87: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 13 UNIXVI

EXERCICESLes bases de vi

1/ Copier le fichier des noms dans votre répertoire courant$ cp /tmp/edition .

2/ Toutes les manipulations devront être effectuées sous éditeur vi$ vi edition

contenu du fichier "edition"

Aboaf Maurice 244748Adda Jen 239234Allo Jean-Pierre 255398Ben Raf 238899Bernard Jean-Paul 234567ChasserAt Paul 245678Cousin Pascal 222222Froideceaux Michel 252423Gros Lucien 212121Cayrol Patrice 123456Beux Leon 567891Dupont Jean 111111Dupont Jean 111111Dupont Patrice 222222Dupont Jojo 999999Dupont Pierre 222222Pavageau Andre 222222Serpinet RolandHolka Tadeusz 333333Senechal Yves 245646Gross Parcal 245367Fiquet Paul 265746Firon Pascale 123456Pecheur Francois 223456Grosbois Anne 123456Fiancet Henri 098765Couteau Jean 456378Causse ClaudeBlanche Michele

3/ Se déplacer à la fin du fichier puis revenir sur la première ligneUtiliser les flèchesou <Ctrl><d> et <Ctrl> <u>ou <Ctrl><f> et <Ctrl> <b>ou G et :1 Il y a de multiples manières de se déplacer.

Page 88: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 14 UNIXVI

EXERCICES (suite)4/ Le premier Dupont Jean se prénomme en fait Jean-Jacques.

Le premier Dupont Pierre se prénomme en fait Jean-Pierre.Faire les modifications. /Dupont Jean/ y-a-t’il un Dupont Jean?

( la recherche par critère est très utilisée ) se déplacer sur le nde Jean

a-Jacques<Echap>/Dupont Pierre/se déplacer sur le P de PierrerpiJean<Echap>

5/ Entrer votre nom et prénom avant la ligne du premier Dupont:1/Dupont/Onom prénom<Echap>

6/ Entrer le nom et prénom de votre binôme après la ligne du dernier DupontG?Dupont?onom prenom<Echap>

7/ Ecriture du fichier et sortie de l’éditeur:q Je ne peux pas sortir sans que le tampon modifié ne soit réécrit, sinon :q!:wqouZZ

8/ Entrer à nouveau dans l’éditeur, positionner puis enlever la numérotationvi edition:set nu:set nonu

9/ Dupont Jean s’appelle en fait Martin Jean. Faire la modificationpositionner le curseur sur le D de Dupontxxxxxx puis iMartin<Echap>

U annule les modifications de la ligneoudw puis iMartin<Echap>oucwMartin<Echap>

Quelle solution préférez-vous?

Page 89: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 15 UNIXVI

EXERCICES (suite)

10/ Détruire la ligne Couteau Jean/Couteau Jean/dd

11/ Changer tous les Dupont en Durand/Dupont/cwDurand<Echap>n.

12/ Déplacer tous les Durand en fin de fichier4ddGp

13/ Il faut inscrire un deuxième Martin JeanDupliquer la ligneyyp

14/ Vous êtes sous l’éditeur et vous voulez connaître les utilisateurs connectés, le contenude tout le répertoire /etc, sous quel répertoire vous vous trouvez ....:! who:! ls -lR /etc:! pwd

Page 90: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 16 UNIXVI

COPIES ET DEPLACEMENT DE TEXTE( COMPLEMENTS)

Insérer le contenu d'un autre fichier dans le tampon

La directive :r permet l'insertion d'un autre fichier dans le tampon.

$ vi fic1... positionner le curseur à l'endroit de l'insertion

:r fic2 Le contenu de fic2 est inséré dans fic1.

Insérer le résultat d'une commande dans le fichier

:r! commande

:r! date La date est insérée à partir de laposition courante du curseur.

Copie d'une partie du tampon dans un autre fichier

:adresse1,adresse2w fic

adresse : numéro de ligne ou chaîne de caractères.

:3,12w fic.save Copie les lignes 3 à 12 du tampondans le fichier fic.save.

:/chaîne1/,/chaîne2/w fic Copie les lignes contenues entrechaîne1 et chaîne2 dans le fichierfic.

:w>> fic Copie de tout le tampon en fin dufichier fic.

Page 91: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 17 UNIXVI

Copie et déplacement de texte

Les directives y (yank), d (destruction), p (put) permettent de copier ou de dépla-cer du texte dans le fichier .

Autre possibilité : utiliser plusieurs tampons avec la directive " suivie d'un nomde tampon choisi par l'utilisateur (ce nom doit être une lettre minuscule ou majus-cule).C'est ce qu'on appelle : LES "TAMPONS NOMMES".

Ainsi :

"a5yy Met 5 lignes dans le tampon a.

"f3yy Met 3 lignes dans le tampon f.

"ap Insertion du tampon a après le curseur.

"Add Détruit la ligne courante et l'ajoute au tampon a.a minuscule : remplace le tampon.A majuscule : ajoute au bout.

Echanges de "tampons nommés" entre fichiers

Il est possible de modifier un nouveau fichier sans sortir de vi.Dans ce cas, les tampons restent mémorisés.

:w"u5yy Mémorisation de 5 lignes.

:e fic.new Edition d'un nouveau fichier.

"up Récupération des 5 lignes.:w:e# Retour au fichier de départ.

Attention::q! Force la sortie:w! Force l'écriture:e! fic.new Force l'écriture de fic.new dans le tampon

Page 92: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 18 UNIXVI

Page 93: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 19 UNIXVI

SUBSTITUTIONS

Substituer des chaînes de caractères

Les directives de vi ne permettent pas de faire de substitutions multiples sur tout lefichier.Dans ce cas il faut utiliser la directive de ex :s .

Substitution de la première occurence de "chaîne1" par "chaîne2" pour leslignes d'adresse1 à adresse2 :

:[adresse1[,adresse2]]s/chaîne1/chaîne2/

Substitution de la première occurence de "chaîne1" par "chaîne2", dans laprochaine ligne contenant "chaîne1" :

:/chaîne1/s//chaîne2/

Substitution de toutes les occurences de "chaîne1" par "chaîne2", dans laprochaine ligne contenant "chaîne1" :

:/chaîne1/s//chaîne2/g

Substitution de toutes les occurences de "chaîne1" par "chaîne2" dans tout letampon :

:g/chaîne1/s//chaîne2/g

Ajout d'une chaîne à une autre :

:g/chaîne1/s//chaîne1 et chaîne2/g ou

:g/chaîne1/s//& et chaîne2/g

Substitution de "chaîne2" par "chaîne3" sur toutes les lignes ne contenant pas"chaîne1" :

:v/chaîne1/s/chaîne2/chaîne3/g

Page 94: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 20 UNIXVI

LES EXPRESSIONS RÉGULIÈRES

Les caractères spéciaux

Un certain nombre de caractères ont une signification spéciale. La combinaison deces caractères permet de composer des critères de sélection pour construire deschaînes de caractères. C'est ce qu'on appelle : LES EXPRESSIONS REGULIERES.

Ces caractères spéciaux sont utilisés dans de nombreux utilitaires et en particulierdans les éditeurs de texte vi, ex et ed, et dans les outils grep, sed, awk, nawk.

$ Fin de ligne.

^ Début de ligne.

. Remplace n'importe quel caractère.

* Remplace n'importe quel nombre de fois lecaractère qui précède.

.* N'importe quelle chaîne de caractères y compris lachaîne vide.

[] Remplace un des caractères situés entre lescrochets.

[^] Remplace un caractère non situé entre lescrochets.

\ Annule la signification spéciale du caractèrequi suit.

EXEMPLE :

:g/ *$/s/// Retire tous les blancs en fin de ligne sur tout le texte.

Page 95: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 21 UNIXVI

Quelques exemples d'expressions régulières

a.

a.c

aa ou ab ou ac ....

aac ou abc ou acc .....

ligne commençant par le chiffre 3

ligne se terminant par le caractère A

x xy xyy xyyy ...................

ligne commençant et terminant par unchiffre

Expressions régulières Interprétation pour la recherche

^3

A$

xy*

^[0-9].*[0-9]$

un caractère différent de a, b, c ou d[^abcd] ou [^a-d]

a, b, c ou d

une lettre minuscule ou majuscule

1, 2, 3 ou 7

[abcd] ou [a-d]

[a-zA-Z]

[1-37]

a.ca\.c

Page 96: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 22 UNIXVI

RECHERCHE D'UNE EXPRESSION REGULIÈRE

La commande grep permet la recherche de chaîne de caractères construite à partird'une expression régulière, dans une liste de fichiers.

grep [-options] 'expr' [fichier1] .... [fichier n]

Options :-c rend le nombre de lignes correspondant à l'expression.

-n fait précéder chaque ligne par son rang dans le fichier.

-i minuscules et majuscules identiques pour la recherche.

-s annule les messages d'erreurs.

-v rend les lignes ne correspondant pas à l'expression.

$ grep '^user[1-7]:' /etc/passwduser1:!:2001:200::/home/user1:/usr/bin/kshuser2:!:2002:200::/home/user2:/usr/bin/kshuser3:!:2003:200::/home/user3:/usr/bin/kshuser4:!:2004:200::/home/user4:/usr/bin/kshuser5:!:2005:200::/home/user5:/usr/bin/kshuser6:!:2006:200::/home/user6:/usr/bin/kshuser7:!:2007:200::/home/user7:/usr/bin/ksh

$ grep '^[AG].*[6-8]$' editionAboaf Maurice 244748Allo Jean-Pierre 255398Gross Pascal 245367Grosbois Anne 122456

$ grep -s '[^fe]grep' /etc/*

Page 97: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 23 UNIXVI

EXERCICES d'utilisation avancée de vi1/ A partir du fichier "edition ( refaire si besoin le cp ... edition), copier toutes les

lignes contenant Dupont dans un fichier DUPONTPuis détruire les lignes contenant Dupont:set nu:adresse1,adresse2w DUPONT

2/ Insérer le contenu du fichier DUPONT après Allo Jean-Pierre:r DUPONT

3/ Copier les trois premières lignes et les trois dernières lignes dans le fichierDUPONT en utilisant les tampons nommés:1:w Exemple pour les 3 premières lignes"a3yy:e DUPONT"ap

4/ Revenir dans le fichier édition et changer tous les Dupont en Durand:g/Dupont/s/Dupont/Durand/

5/ Nous allons faire des substitutions/Jean/ Substitution de Jean par Jean Paul:s/Jean/Jean Paul/:g/Jean/s//JEAN Substitution des Jean par JEAN/Jean/ A-t-on substitué tous les Jean ?

Substitution de JEAN par Jean en modifiant le séparateur de l'expression régulière:g:JEAN:s:JEAN:Jean:gp:g,Jean,s,,&-&,p Subsitution de Jean en Jean-Jean sur tout le texte

6/ Ajouter (16) devant chaque numéro commençant par 1,2 ou 3:g/ [1-3]/s// (16)&/

7/ Ajouter 0 à la fin de toutes les lignes qui commencent par F.:g/^F/s/$/0/

8/ Trouver dans edition les lignes dont les prénoms commencent par J et P$ grep ' [JP]' edition

9/ Trouver les lignes se terminant par un chiffre impair dans edition$ grep '[13579]$' edition

10/ Trouver dans le fichier edition, les lignes contenant un prénom de quatrelettres commençant par J ou j :$ grep -i ' j[a-z][a-z][a-z] ' edition

Page 98: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

FONCTIONS DE BASE ET FONCTIONS AVANCÉES DE VI

LDVINCI Rev3 6 - 24 UNIXVI

Page 99: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 1 UNIXSH

UNIX / LINUX

LES PROCEDURES SHELLLES REDIRECTIONSLES MECANISMESDE SUBSTITUTION

DU SHELL

Page 100: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 2 UNIXSH

Page 101: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 3 UNIXSH

SOMMAIRESection Page

GESTION DES PROCESSUS ET RÔLE DU SHELL 7 - 4

COMMANDES INTERNES / COMMANDES EXTERNES 7 - 4

LE MECANISME DU LANCEMENT D'UNE COMMANDE EXTERNE 7 - 5Création de processus et liste des processus 7 - 7

LES PROCEDURES ET LEUR MISE AU POINT 7 - 8

LISIBILITE DES PROCEDURES ET UTILISATION DE VI DANS 7 - 10L'HISTORIQUE DES COMMANDES

LES ENTREES/SORTIES STANDARDS 7 - 11

LA REDIRECTION EN SORTIE 7 - 12Redirection des données en sortie et redirection des erreurs en sortie 7 - 12Caractères génériques après une redirection 7 - 12

LA REDIRECTION EN ENTREE 7 - 13Redirection des données en entrée et redirection de commandes en entrée 7 - 13

COMMUNICATION ENTRE PROCESSUS 7 - 14

LA REDIRECTION DOUBLE EN SORTIE 7 - 14

EXERCICES D'UTILISATION DES REDIRECTIONS 7 - 15

TRANSMETTRE DES PARAMÈTRES 7 - 16Transmettre des paramètres à une procédure et décalage des paramètres 7 - 16

LES VARIABLES SHELL 7 - 18Affectation d'une variable en interactif 7 - 21Protection d'une variable et substitution de variables 7 - 21

LES CARACTÈRES SPÉCIAUX 7 - 25Générer des noms avec les caractères génériques 7 - 25

RECUPERER LE RESULTAT D'UNE COMMANDE 7 - 26Récupérer le résultat dans une variable 7 - 26Récupérer les champs du résultat d'une commande 7 - 26

LES REGLES DE SUBSTITUTION DU SHELL 7 - 27

EXERCICES SUR PARAMETRES ET VARIABLES 7 - 29

Page 102: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 4 UNIXSH

GESTION DES PROCESSUS

Le rôle du shellQuel que soit le type de shell, un shell est un interpréteur de commandes.

COMMANDES INTERNES/COMMANDES EXTERNES

Un shell dispose de deux types de commandes :- les commandes internes : leur code fait partie du code du shell.- les commandes externes : leur code est séparé du code du shell.

$ type cdcd est une commande interne au shell$ type findfind est /usr/bin/find

On appelle processus un programme en exécution.Un processus est crée par un autre processus.Les commandes internes sont exécutées par le shell lui-même.Pour les commandes externes, le shell crée un processus fils qui se charge del'exécution.

lecture commande

création de processus

attente de finde processus

affichage du prompt [....] $

affichage du prompt [....] $

Page 103: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 5 UNIXSH

LE MECANISME DU LANCEMENTD'UNE COMMANDE EXTERNE

duplication du 'ksh' (fork)

code de retour

B à O B à O

Boîte à outilspère

Boîte à outilsfils

duplication

NOYAU

processusFils

processusPère

exécutionde cmd(exec)

$ cmd

ksh kshcmd

kshattend lafin de cmd

déroulementduprocessusfils

processuspèreattend lafin duprocessus fils(wait)

exécutionde cmd

le processus Pèrereprend sondéroulement

fin de cmd(exit)

$ kshreprendle contrôledu terminal

Page 104: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 6 UNIXSH

Page 105: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 7 UNIXSH

Création de processus

Les processus sont organisés en arborescence : père----->fils.

Pour l'utilisateur, le processus père est le shell créé lors de la connexion.

Liste des processus de l'utilisateur

La commande ps sans paramètre affiche la liste des processus de l'utilisateur.

On appelle PID le "Process Identifier"du process lui-même

On appelle PPID le "Process Identifier" du processus père.

Avec des options de la commande ps on obtiendra des renseignements plus internes.

$ ps -fUID PID PPID C STIME TTY TIME COMMANDuser5 4582 1 0 17:04:45 tty23 0:01 -kshuser5 4792 4582 36 17:07:04 tty23 0:04 ps -f

$ ps -lF S CPU UID PID PPID C PRI NI SIZE WCHAN TTY TIME CMD10 S 1 2001 4582 1 0 30 20 35 322160 tty23 0:01 -ksh10 0 1 2001 4819 4582 5 62 20 39 tty23 0:00 ps -l

Liste des processus de l'ensemble des utilisateurs

$ ps -e$ ps -ef$ ps -el

Le processus n° 1 est le processus init qui surveille entre autre les terminaux réels(pas les pseudos), et dans ce cas il devient le père des shells de login.

Page 106: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 8 UNIXSH

LES PROCÉDURES

Le shell peut lire un fichier contenant un ensemble de commandes àexécuter.Il s'agit d'une procédure ou shell-script.

Exécution d'une procédure :

$ chmod u+x procedure$ procedureou$ ksh procedure

MISE AU POINT D'UNE PROCÉDURE

La commande set permet de positionner des options pour la mise au point d'uneprocédure.

$ set -x Impression de chaque commande après expansion.

$ set -v Impression de chaque commande avant expansion.

$ set -e Sortie immédiate sur erreur.

La mise au point ne concerne que la procédure en cours.

Les options -x et -v peuvent être demandées au moment de l'appel :

$ ksh -v procedure

$ ksh -x procedure

Nota:Pour invalider une option : set +optionExemple :

$ set +x

Page 107: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 9 UNIXSH

Soit le script-shell de nom " liste" suivant :

set -xecho "Le repertoire courant est :"pwdecho "Voici la liste des fichiers :"echo *

$ liste+ echo Le repertoire courant est :Le repertoire courant est :+ pwd/home/user8+ echo Voici la liste des fichiers :Voici la liste des fichiers :+ echo liste londres monaco paris romeliste londres monaco paris rome

Soit le script-shell de nom "liste" suivant :

set -vecho " Le repertoire courant est :"pwdecho "Voici la liste des fichiers :"echo *

$ listeecho "Le repertoire courant est :"Le repertoire courant est :pwd/home/user8echo "Voici la liste des fichiers :"Voici la liste des fichiers :echo *liste londres monaco paris rome

Page 108: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 10 UNIXSH

LISIBILITÉ DES PROCÉDURES

Le caractère # permet de mettre des commentaires dans une procédure.

Si le commentaire est à la suite d'une ligne de commande, il doit y avoir un espace devantle #.

UTILISATION DE VI DANS L'HISTORIQUEDES COMMANDES

La commande fc (fix command)

- Editer la dernière commande dans vi :$ fc

- Editer une suite de commande, puis les exécuter :$ fc m n

- Lister les 16 dernières commandes :$ fc -l ou history

Dans l'ordre inverse :$ fc -lr

- Lister sans les numéros d'ordre :$ fc -nl n1 n2 > fichier

fichier devient une procédure comprenant les commandes del'historique depuis la ligne n1 jusqu'à la ligne n2.

Page 109: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 11 UNIXSH

LES ENTREES/SORTIES STANDARDS

Lorsqu'une commande est lancée, trois fichiers sont ouverts dans le shell.

Un numéro est associé à chaque fichier : le file descriptor.

Standard Input fd = 0

Standard Output fd = 1

Standard Error fd = 2

COMMANDE

stdout

stderr

stdin

Page 110: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 12 UNIXSH

LA REDIRECTION EN SORTIE

Redirection des données en sortieCréation d'un fichier :

commande > fichier

Si le fichier n'existe pas, il est automatiquement créé; s'il existe avec lapermission d'écriture, il est écrasé.

commande >> fichier

Les données sont ajoutées en fin de fichier.

Exemples :$ ls -C /bin > liste$ ls -C /etc >> liste

Redirection des erreurs en sortieRedirection dans un fichier :

commande 2> fichier

Redirection en fin de fichier :commande 2>> fichier

Redirection des erreurs dans le même fichier que les données :commande > fichier 2>&1

Caractères génériques après une redirectionLes caractères génériques ne sont valables que dans la partie commande, et non pasdans la partie des redirections (sauf si génération d'un seul nom de fichier).

Exemple:$ echo Bonjour > *.c crée le fichier *.c sauf si présence sous le

répertoire courant d'un seul fichier dont le nomse termine par .c

$ ls *.c liste tous les fichiers dont le nom se terminepar .c

$ ls \*.c liste le fichier de nom *.c

nota : Il existe un fichier poubelle : /dev/null

Page 111: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 13 UNIXSH

LA REDIRECTION EN ENTRÉE

Redirection des données en entrée

commande < fichier

Exemple :$ mailx user1 < fichier_message

Redirection de commandes en entrée

Cette redirection spéciale permet de donner des directives à une commande dansune procédure.

commande <<CHAÎNEdonnées ou directivesà lire par lacommandeCHAÎNE

Exemple :

Création d'un fichier avec cat dans une procédure :

cat > fichier <<OKligne1ligne2ligne3OK

Standard Input pour la commande cat

Page 112: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 14 UNIXSH

COMMUNICATION ENTRE PROCESSUS

L'écriture suivante :commande1 > tempcommande2 < temprm temp

est avantageusement remplacée parcommande1 | commande2

- Le symbole | s'appelle pipe ou tube de communication.- Pas besoin de fichier temporaire (gain de temps et d'espace disque).- Tout octet sorti de la commande1 est immédiatement octet d'entrée de la commande2.

Exemple :$ ls -l | pg

LA REDIRECTION DOUBLE EN SORTIELa commande tee permet de rediriger le résultat d'une commande tout enconservant la sortie standard.

commande | tee fichier

commande stdout

fichier

tee

stdin

stdout

exemple :$ ps -ef | tee ficps | grep $LOGNAME

Dans le cas de tee -a on ajoute à la fin du fichier ficps.

Page 113: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 15 UNIXSH

EXERCICES

Utilisation des redirections

COMMANDE : qui

ENONCE :

Afficher le nombre d’utilisateurs ainsi que leurs caractéristiques (résultat de lacommande who).

Utiliser un fichier temporaire et le supprimer en fin de programme.

REMARQUE : Utilisation de who,tee,wc.

COMMANDE : IId

ENONCE :

Editer la liste des sous-répertoires du répertoire courant.

REMARQUE : Utilisation de Is -l et grep.

Page 114: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 16 UNIXSH

TRANSMETTRE DES PARAMÈTRES

Transmettre des paramètres à une procédure

Une procédure shell peut travailler avec des paramètres positionnels (ou arguments)qui lui sont transmis lors de son appel via la ligne de commande.

proc par1 par2 par3

$0 $1 $2 $3

Dans la procédure appelée, les paramètres positionnels sont référencés par :

$0 Nom de la procédure$1 Premier paramètre$2 Deuxième paramètre${n} Enième paramètre

$# Nombre des paramètres$* Tous les paramètres en ligne$$ PID de la procédure

Exemple :$ echo $0$ print $$

Soit le script-shell de nom "ville" suivant :

echo nom de la procedure : $0echo le premier parametre est : $1echo le troisieme parametre est : $3echo nombre de parametres : $#echo voici tous les parametres : $*

$ ville Londres Paris New-York Bruxellesnom de la procedure : villele premier parametre est : Londresle troisieme parametre est : New-Yorknombre de parametres : 4voici tous les parametres : Londres Paris New-York Bruxelles

Page 115: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 17 UNIXSH

Décalage des paramètres

Le décalage des paramètres positionnels se fait par la commande :

shift [n]

Aprés shift :

- $0 ne bouge pas.- $1 est perdu.- Deuxième paramètre devient premier paramètre ($1).- Troisième paramètre devient deuxième paramètre ($2).- ............- Dixième paramètre devient neuvième paramètre ($9).

- Paramètre n devient paramètre n-1.-$#, $* sont remis à jour

Possibilité de décaler de n positions par :shift n

Soit le script-shell de nom "decalage" suivant :

echo le premier parametre est : $1echo le neuvieme parametre est : $9echo nombre de parametres : $#echo " ATTENTION DECALAGE"shiftecho le premier parametre est : $1echo le neuvieme parametre est : $9echo nombre de parametres : $#

$ decalage A B C D E F G H I J Kle premier parametre est : Ale neuvieme parametre est : Inombre de parametres : 11 ATTENTION DECALAGEle premier parametre est : Ble neuvieme parametre est : Jnombre de parametres : 10

Page 116: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 18 UNIXSH

LES VARIABLES SHELL

Un shell accepte 4 types de variables :

- entiers

- chaînes de caractères

- tableaux de chaînes de caractères

- tableaux d'entiers.

Variables chaînes de caractères :

$ chaine="suite de caracteres"

$ echo $chainesuite de caracteres

le nom d'une variable se différencie de son contenu par un $ au début de lavariable.

L'affectation = ne prend pas d'espace à droite et à gauche.

Variables entières :

$ integer var=2

$ typeset -i var1=23

$ echo $var $var12 23

Page 117: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 19 UNIXSH

Les tableaux de chaînes de caractères :

$ chaine[1]="encore des caracteres"

$ echo ${chaine[1]}encore des caracteres

Il est à noter que chaîne [0] existe déjà :

$ echo ${chaine[0]}suite de caracteres

Une affectation d'une variable simple est en réalité l'affectation du 1er élémentdu tableau de même nom.

Les tableaux d'entiers :

$ typeset -i i tabint

$ tabint[0]=13

$ tabint[1]="toto"ksh : toto : bad number

$ i=1$ tabint[i]=45$ echo ${tabint[1]}45

Les indices des tableaux doivent exprimer des entiers de 0 à n

liste des valeurs d'un tableau :$ echo ${tab[*]}

liste du nombre d'éléments d'un tableau :$ echo ${#tab[*]}

Liste de toutes les variables :

$ set

Suppression de variable :

$ unset i chaine tabint

Page 118: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 20 UNIXSH

Page 119: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 21 UNIXSH

Affectation d'une variable en interactif

La commande read permet de positionner une variable en interactif.

Soit le script-shell de nom "menu" suivant :

echo ceci est un exemple de menuecho "Quel est votre choix : 1, 2, ou 3 ? \c"read reponseecho vous avez choisi $reponse

$ menuceci est un exemple de menuQuel est votre choix : 1, 2, ou 3 ? 2 réponse de l'utilisateurvous avez choisi 2

La syntaxe read var?"invite" permet de mettre directement une invite.

$ read var?"votre choix 1, 2, 3 ? "votre choix 1, 2, 3 ? 3$ echo $var3

Protection d'une variable

La commande readonly protège une variable en écriture.$ var=45$ readonly var

Autre possibilité :$ typeset -r var1=68

$ var=22ksh: var: is read only$ echo $var45

$ typeset +r var déprotège la variable var (si le shell l'accepte)$ var=22$ echo $var22

$ readonly donne la liste des variables protégées

Page 120: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 22 UNIXSH

Substitution des variables :

$ echo ${var-val1} si var non définie, substitue val1 sinonvar rend sa valeur.

$ echo ${var=val2} si var non définie, crée var avec lavaleur val2.

Exemple :

La commande imp1 édite un exemplaire par défaut du fichier dont le nom estdonné en premier paramètre.

Soit le script-shell de nom "imp1" suivant :

nb=${2-1}pr -o8 $1 | lp -n$nbecho Il a été édité $nb exemplaire(s) du fichier $1

$ imp1 /etc/passwdIl a été édité 1 exemplaire (s) du fichier /etc/passwd

$ imp1 /etc/passwd 2Il a été édité 2 exemplaire(s) du fichier /etc/passwd

Page 121: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 23 UNIXSH

Substitution des variables (suite) :

$ echo ${var:-val3} si var non définie ou vide,substitue val3 sinon var rend sa valeur.

$ echo ${var:=val4} si var non définie ou vide,crée var avec la valeur val4.

Exemple :La commande imp2 fait le même traitement que la commande imp1 mais enposant des questions à l'utilisateur.

Soit le script-shell de nom "imp2" suivant :

echo "donnez le nom du fichier à éditer :\c"read ficecho "Donnez le nombre d'exemplaire(s) à éditer :\c"read nbpr -o8 $fic | lp -n${nb:=1}echo Il a été édité $nb exemplaire(s) du fichier $fic

$ imp2Donnez le nom du fichier à éditer : /etc/passwdDonnez le nombre d'exemplaire(s) du fichier à éditer :Il a été édité 1 exemplaire(s) du fichier /etc/passwd

$ imp2Donnez le nom du fichier à éditer : /etc/passwdDonnez le nombre d'exemplaire(s) à éditer : 2Il a été édité 2 exemplaire(s) du fichier /etc/passwd

$ var=chaine$ echo ${#var} rend la longueur de var.6

$ typeset -i tab$ tab[0]=1; tab[1]=2; tab[2]=7$ echo ${tab[*]} liste des valeurs du tableau1 2 7

$ echo ${#tab[*]} nombre d'éléments du tableau3

$ echo ${var?"message"} si var n'est pas définie affiche "message"

Page 122: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 24 UNIXSH

Page 123: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 25 UNIXSH

LES CARACTÈRES SPÉCIAUX

Générer des noms avec les caractères génériques

Quelques caractères ont une signification spéciale dans une commande shell.

Ils sont appelés : les caractères génériques

Ils permettent de générer des noms de fichiers par rapport aux objets du répertoirecourant.

* Remplace n'importe quelle chaîne de caractères (même vide)en fonction des noms de fichiers sous le répertoire courant oule répertoire cité.L'étoile seule est remplacée par la liste de tous les noms defichiers sous le répertoire courant.

? Remplace un caractère.

[] Remplace un des caractères contenus entre les crochets.

[!] Remplace un des caractères non contenus entre les crochets.

L'annulation de l'effet spécial est obtenue en faisant précéder le caractère spécialpar l'antislash : \

ATTENTION : Les caractères génériques du shell n'ont pas la même significationque les caractères spéciaux utilisés dans les expressionsrégulières des éditeurs.

Page 124: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 26 UNIXSH

RECUPERER LE RÉSULTAT D'UNE COMMANDE

Récupérer le résultat dans une variable

$(commande) ou `commande`

Provoque la substitution par le résultat de la commande

Ce mécanisme est utilisé dans les procédures shell pour récupérer le résultat decommandes dans des variables.

Exemple :

$ pwd/home/user1

$ yy=$(pwd)$ echo $yy/home/user1

Récupérer les champs du résultat d'une commande

La commande set permet de récupérer les champs du résultat d'une commandesous la forme des paramètres : $1 $2 $3 ...... ${n}

Exemple :$ datemer 20 mar 17:12:40 DFT 2003

$ set $(date)

$ echo $3mar

$ echo $62003

Page 125: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 27 UNIXSH

LES RÈGLES DE SUBSTITUTION DU SHELL

L'utilisation des apostrophes

'......' Le shell prend les caractères à l'intérieur des apostrophes(quotes) sans faire de substitutions.

"......" Le shell prend les caractères à l'intérieur des guillemets(double quotes) avec la substitution des : $ \ ̀

Exemples :

$ nom=jean

$ echo nom = $nomnom = jean Interprétation de la variable

$ echo 'nom = $nom'nom = $nom Affichage sans substitution

$ echo "nom = $nom"nom = jean Interprétation de la variable

$ echo *fic1 fic2 essai Interprétation de *

$ echo "*"* Affichage sans substitution

Les guillemets ou les apostrophes permettent aussi de conserver tousles espaces :

$ nom=jean

$ echo nom = $nomnom = jean Concaténation des espaces

$ echo "nom = $nom"nom = jean Les espaces sont conservés

Page 126: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 28 UNIXSH

Page 127: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 29 UNIXSH

EXERCICES

Utilisation des paramètres et des variables

COMMANDE : copier fichier répertoire suffixe

ENONCE :

Copier un fichier du répertoire courant vers un répertoire de sauvegarde en ajou-tant au nom un suffixe (exemple : .save).Modifier les droits sur le fichier sauvegardé afin que seul le propriétaire ait lesdroits de lecture (et rien d'autre).

REMARQUE : Utilisation de cp, chmod et des paramètres.

COMMANDE : dupliquer

ENONCE :

Refaire la procédure précédente pour entrer le nom du fichier, du répertoire et lesuffixe d’une manière interactive.

REMARQUE : Utilisation de read et des variables.

COMMANDE : repaccueil utilisateur

ENONCE :

Afficher le répertoire d'accueil d'un utilisateur dont le nom est donné en argument(=6 ème champ du fichier /etc/passwd).

REMARQUE : Utilisation de IFS, grep et set.

Page 128: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

PROCEDURES SHELL, REDIRECTIONS ET MECANISMES DE SUBSTITUTION DU SHELL

LDVINCI Rev3 7 - 30 UNIXSH

Page 129: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 1 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

UNIX / LINUXPROGRAMMATION D'UNE

STRUCTURE CONDITIONNELLEET D'UNE BOUCLE

Page 130: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 2 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Page 131: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 3 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

SOMMAIRE

Section Page

LES TESTS DANS LE SHELL 8 - 5Le code de retour d'une commande 8 - 5Utilisation des tests 8 - 5Syntaxe de la commande test 8 - 5Tests sur les fichiers 8 - 6Tests numériques 8 - 6Tests sur les chaînes de caractères 8 - 7Les conditions composées 8 - 7

LES STRUCTURES CONDITIONNELLES 8 - 8If then else fi 8 - 8Les structures imbriquées 8 - 8Les opérateurs || et && 8 - 9

BRANCHEMENT A CHOIX MULTIPLE 8 - 10case in esac 8 - 10

EXERCICES 8 - 10Utilisation des structures et des branchements 8 - 10

LA BOUCLE FOR 8 - 13For in do done 8 - 13For do done 8 - 13

LES BOUCLES WHILE ET UNTIL 8 - 14while do done 8 - 14Until do done 8 - 15Arithmétique entière 8 - 16Programmation d'un compteur 8 - 17

SORTIE DE BOUCLE 8 - 18

SORTIE DE BOUCLES IMBRIQUEES 8 - 18

SUPPRIMER UN PASSAGE DANS LA BOUCLE 8 - 19

EXERCICES 8 - 21Utilisation des boucles 8 - 21

Page 132: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 4 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Page 133: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 5 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

LES TESTS DANS LE SHELL

Le code de retour d'une commandeA la fin de l'exécution d'une commande, un code de retour est toujours positionné.Le code de retour d'une commande peut être vérifié en affichant sa valeur contenuedans $?

si la commande a répondu vrai, il vaut 0si la commande a répondu faux, il est différent de 0.

Exemple : $ cat faccat: cannot open fac$ echo $?1

$ cat ficJe suis fic$ echo $?0

nota : La commande exit n provoque la sortie d'une procédure shell avecpositionnement du code de retour à la valeur n.

Soit le script-shell de nom "proc" suivant :........exit 3

$ proc$ echo $?3

Utilisation des testsLa commande test est utilisée dans les structures ou les boucles pourprogrammer une condition.

Il existe trois sortes de tests :- Tests sur les caractéristiques des fichiers.- Tests de comparaisons sur des valeurs numériques.- Tests sur les chaînes de caractères alphanumériques.

Syntaxe de la commande testLa commande test peut se faire avec deux syntaxes différentes :

test expressionou [ expression ] Les espaces sont obligatoires après le

crochet ouvrant et avant le crochet fermant.

Page 134: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 6 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Tests sur les fichiers

test -f fichier Vrai si fichier est ordinaire.

[ -d fichier ] Vrai si fichier est répertoire.

[ -r fichier ] Vrai si fichier est autorisé en lecture.

test -w fichier Vrai si fichier est autorisé en écriture.

test -x fichier Vrai si fichier est exécutable.

test -s fichier Vrai si fichier n'est pas vide.

[ fichier1 -ef fichier2 ] Vrai si fichier1 et fichier2 sont liés physiquement.

test -L fichier Vrai si fichier est un lien symbolique

[ fichier1 -nt fichier2 ] Vrai si fichier1 plus récent que fichier2.

[ fichier1 -ot fichier2 ] Vrai si fichier1 plus ancien que fichier2.

Tests numériques

test valeur1 opérateur valeur2

Opérateurs possibles :

-eq égal à-ne différent de-gt plus grand que-ge plus grand ou égal-lt plus petit que-le plus petit ou égal

Exemples :

$ test "$a" -eq 36 Vrai si le contenu de la variable a est égalà 36.

$ [ "$a" -lt 42 ] Vrai si le contenu de la variable a estplus petit que 42.

Page 135: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 7 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Tests sur les chaînes de caractères

[ "chaîne1" = "chaîne2" ] Vrai si chaîne1 est égale à chaîne2.

test "chaîne1" != "chaîne2" Vrai si chaîne1 différente de chaîne2.

test -z "$a" Vrai si la chaîne $a est vide.

test -n "$a" Vrai si la chaîne $a n'est pas vide.

Exemple :

$ test "$LOGNAME" = "user1"

Les conditions composées

Les opérateurs peuvent être combinés avec :

-a et-o ou! négation\(...\) groupement

Exemple :

$ test \( -r fichier1 -o -r fichier2 \) -a -w fichier3

Vrai si fichier1 ou fichier2 accessible en lecture et fichier3 accessible enécriture.

Page 136: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 8 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

LES STRUCTURES CONDITIONNELLES

If then else fiif commande1then commande2[else commande3]fi Si le code de retour de l'exécution de commande1

est égal à 0,alors exécuter commande2,sinon exécuter commande3,fin

Exemple :if test -f fichierthen echo " fichier existe"else echo " fichier n'existe pas"fi

nota : Le else n'est pas obligatoire.if [ -w fic ]then echo "message" >>ficfi

Les structures imbriquées

Il est possible d'imbriquer des structures conditionnelles.Dans ce cas : else if devient elif

Exemple :If test -f ficthen echo "fic est un fichier ordinaire"

elif test -d ficthen echo "fic est un répertoire"

fi Le fi est commun.

nota : La syntaxe suivante est aussi possible :if then else if

then elsefi

fi Attention: ne pas oublier de fi.

Page 137: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 9 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Les opérateurs && et ||

Les opérateurs && et || permettent de programmer les mêmes structures que le ifdans des cas plus simples.

commande1 && commande2

Exécution de la commande1puis exécution de la commande2si commande1 a renvoyé un coderetour égal à 0.

commande1 || commande2

Exécution de la commande1puis exécution de la commande2si commande1 a envoyé un coderetour différent de 0.

Exemples :

test -d demo && echo "demo est un répertoire"

test -d demo || echo "demo n'est pas un répertoire"

test -d demo && ls -l demo || echo "demo non ok"

Page 138: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 10 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

BRANCHEMENT A CHOIX MULTIPLE

Case in esac

La construction case in esac permet de choisir une chaîne de caractères parmiplusieurs et d'exécuter une liste de commandes pour cette chaîne.

case $variable inchaîne1 ) commandes ;;chaîne2 ) commandes ;;chaîne3 | chaîne4 ) commandes ;;esac

Si la variable peut être engendrée parchaîne1, sinon chaîne2, sinon chaîne3 ouchaîne4, alors exécuter la liste de comman-des correspondantes.

nota : Les caractères génériques du shell * ? [ ]peuvent être utilisés pour composer les chaînes de caractères.| signifie l'opérateur logique ou.

Exemple :Extrait d'une procédure d'installation

echo "POUR DIALOGUER EN FRANCAIS TAPER : f"echo "FOR AN ENGLISH DIALOGUE TYPE : e"echoecho "VOTRE REPONSE - YOUR CHOICE : \c"read reponseechocase "$reponse" in[fF]* ) LANG=fr_FR ;; # francais[aAeE]* ) LANG=en-US ;; # english* ) echo "\n ERREUR : LANGUE NON PRISE EN COMPTE" echo " ERROR : WRONG LANGUAGE \n" ;;esac

Page 139: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 11 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

EXERCICESUtilisation des structures et des branchements

Commande : writemail message utilisateur

Enoncé :- Envoyer un message à un utilisateur.- Si celui-ci n’est pas connecté, envoi d’une lettre.

Remarque : Utilisation de write, mailx, ||.

Commande : ficlec argument

Enoncé :- Tester si l’argument communiqué est un fichier ordinaire.- Dans l’affirmative, vérifier si ce fichier est en lecture.- Sortir les messages correspondants.

Remarque : Faire cet exercice avec les deux formes de "et" ( -a de test et && de commandes ).

Commande : tri fichier1 fichier2

Enoncé :-Tester le nombre d’arguments de la commande :- Si le nombre d’arguments est différent de 2, alors sortir le message "commande : tri fichier1 fichier2"

-Ensuite, la procédure lit une ligne sur l’entrée standard et range cette ligne dans un fichier d'après les règles suivantes :

. la ligne est introduite en fin de fichier1 si elle contient au moins une lettre.. elle est introduite en fin de fichier2 si elle contient au moins un chiffre et pas de lettres.. le reste est redirigé vers le fichier poubelle.

Remarque : Utilisation de case, read et des caractères génériques.

Page 140: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 12 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Page 141: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 13 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

LA BOUCLE FORFor in do done

Cette forme de la boucle for permet d'effectuer la même séquence de commandes surchaque valeur d'une liste et il y a autant de boucles que de valeurs dans la liste.

for variable in val1 val2 val3 ...do commande1

commande2 ....done Pour la variable prenant successivement les différentes

valeurs val1 val2 val3 ... exécuter les commandes.

Exemple : La procédure suivante "ecrire" envoie un message à trois utilisateurs.

for nom in jean alex pauldo write $nom < fichier_messagedone

For do doneCette deuxième forme de la boucle for permet d'effectuer la même séquence decommandes sur tous les paramètres ($1 $2 .... ) passés à l'appel de la procédure.

for variabledo commande1

commande2 ....done Pour la variable prenant successivement les différentes

valeurs passées en arguments, exécuter les commandes.

Exemple: Soit le script-shell de nom "copie" suivant :

for ficdo if [ -f $fic ]

then cp $fic /home/user8chmod 600 /home/user8/$ficelse echo "$fic n’est pas un fichier"

fidone

$ ls -l-rw-r--r-- 1 phil anim 56 May 31 14:22 fic1-rw-r--r-- 1 phil anim 22 May 31 14:21 fic2

$ copie fic1 fic2 totototo n’est pas un fichier$ ls -l /home/user8-rw------ 1 user8 base 56 Jun 1 11:57 fic1-rw------ 1 user8 base 22 Jun 1 11:57 fic2

Page 142: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 14 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

LES BOUCLES WHILE ET UNTIL

while do done

La boucle while exécute une séquence de commandes tant qu'unecondition est vraie.

while commande1do commande2

commande3 commande4 .........

done Tant que le code de retour de l'exécutionde commande1 est vraialors exécuter les commandesdu bloc do ... done.

Deux commandes sont fréquemment employées dans les boucles while :

true ou : Rend une valeur vraie (code de retour = 0)sleep n Temporisation de n secondes

Exemples :

Le script-shell de nom "param" suivant édite tous les arguments passés àl'appel :

while test $# -ne 0do echo $1 shiftdone

Le script-shell de nom "temps" suivant affiche la date à l'écran toutes les 30secondes :

while true ou while :do date sleep 30done

Page 143: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 15 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Until do done

La boucle until fonctionne à l'inverse de la boucle while.

until commande1do commande2

commande3 .....

done

Exécuter les commandes du bloc do ...done jusqu'à ce quele code retour de l'exécution de commande1 soit vrai.

false Cette commande rend une valeur fausse

Exemple :Le script-shell "param" écrit différemment :

until test $# -eq 0do echo $1 shiftdone

Page 144: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 16 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Arithmétique entière

La commande let est utilisée pour les opérations arithmétiques.

$ integer i=10 j=2 k l$ let "k=i+j" ou syntaxe équivalente : ((k=i+j))

$ echo $k12

$ ((l=k*j)) ; echo $l24

Les opérateurs sont :

+ - * / % (reste de la division)

La commande let est utilisée aussi avec les opérateurs de comparaison dans cecas c'est $? qui est testé.

$ ((i<j)) ; echo $?1

Les opérateurs sont :

<= >= < > == !=

La commande let accepte les opérateurs logiques : ! && ||

$ ((k==i+j && l==k*2))

$ echo $?0

Page 145: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 17 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Programmation d'un compteur

La commande expr permet aussi de faire des opérations courantes.

expr terme1 opérateur terme2

Les opérateurs :

addition soustraction multiplication division modulo(reste) + - \* / %

Exemple de boucle :

Le script-shell de nom " creat_fic" suivant crée les fichiers fic1 fic2 fic3 ......fic10

En shell de Bourne:

count=1while test $count -le 10do >fic$count

count=`expr $count + 1`done

En Bash ou Korn shell:

typeset -i count=1while let "count <=10"do >fic$count

((count=count+1))done

Page 146: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 18 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

SORTIE DE BOUCLE

La commande break permet de sortir d'une boucle for while ou until.

Exemple :La procédure stocke1 mémorise les lignes entrées au clavier dans le fichier lignesjusqu'à ce qu'on tape le mot FIN :

while truedo echo "Entrez votre ligne:" read reponse if test "$reponse" = "FIN" then break # Sortie de la boucle else echo $reponse >>lignes fidone

SORTIE DE BOUCLES IMBRIQUEESLa commande break n permet de sauter n niveaux de boucles imbriquées.

Exemple :La procédure stocke2 reprend la procédure stocke1 en rajoutant une boucle quiinsère un message à chaque fin de page (toutes les 66 lignes).

typeset -i ligwhile truedo

lig=1while ((lig <= 65))do

echo "Saisissez une ligne :"read reponseif test "$reponse" = FINthen break 2 # Sortie de deux niveaux de boucleselse echo $reponse >>lignefi

((lig=lig+1))doneecho "######## Fin de page ######" >>ligne

done

Page 147: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 19 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

SUPPRIMER UN PASSAGE DANS LA BOUCLE

La commande continue permet de supprimer un des passages dans une boucle for,while ou until.

Exemple :

La procédure "supprime" efface tous les fichiers sauf les fichiers save et source :

set -xfor ido if test "$i" = source -o "$i" = save

then continuefi

echo $irm $idone

$ cd appli$ ls -Cfic save source toto

$ supprime *+ test fic = source -o fic = save+ echo ficfic+ rm fic+ test save = source -o save = save+ continue+ test source = source -o source = save+ continue+ test toto = source -o toto = save+ echo totototo+ rm toto

$ ls -Csave source

Page 148: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 20 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Page 149: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 21 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

EXERCICES

Utilisation des boucles

Commande : testdir

Enoncé :Afficher la liste des répertoires du répertoire courant.

Remarque : Utilisation de for et test.

Commande : mkfiles prefixe n

Enoncé :

1/ Créer n fichiers vides (par défaut = 5) ayant pour nom prefixe.n (exemple : ess.1 ess.2 ess.3 ont pour prefixe = ess et n = 3).

2/ Ajouter dans la boucle une question permettant de valider ou d’invalider la création du fichier "prefixe.n".

Remarque : Utilisation de if, while, test, read, let.

Page 150: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev3 8 - 22 UNIXPROG

PROGRAMMATION D'UNE STRUCTURE CONDITIONNELLE ET D'UNE BOUCLE

Page 151: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 1 UNIXENV

UNIX / LINUX

ENVIRONNEMENTSIGNAUX

ETSYNCHRONISATION

Page 152: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 2 UNIXENV

Page 153: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 3 UNIXENV

SOMMAIRE

Section Page

LES VARIABLES PREDEFINIES DU SHELL 9 - 4Environnement 9 - 4Les variables prédéfinies 9 - 4

LES VARIABLES COMMUNES 9 - 5Exportation de variables 9 - 5

LES ALIAS 9 - 7Définition 9 - 7Principe 9 - 7Utilisation 9 - 7

GESTION DES SIGNAUX 9 - 9Les signaux 9 - 9Programmation du signal "INTERRUPT" 9 - 9

GESTION DES PROCESSUS 9 - 10Lancement d'un processus en arrière-plan 9 - 10Contrôle des tâches en arrière-plan (job control) 9 - 10Maintien d'exécution en arrière-plan après déconnexion 9 - 11Attente de la fin d'un processus 9 - 11Meurtre d'un processus 9 - 11Meurtre d'un processus sous job control 9 - 11

EXERCICES 9 - 13Utilisation du trap 9 - 13

Page 154: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 4 UNIXENV

LES VARIABLES PRÉDÉFINIES DU SHELL

Environnement

L'environnement d'un shell contient un certain nombre de variables prédéfinies.

La liste de toutes les variables (prédéfinies ou initialisées pendant la session)peut s'obtenir par la commande :

$ set

Les variables prédéfinies

Voici les variables prédéfinies les plus courantes :

FCEDIT EDITOR (*) Editeur pour l'historique

HOME Répertoire d'accueil

IFS Liste des séparateurs

LANG Langue des messages système

LOGNAME Nom de l'utilisateur

OLDPWD (*) Répertoire de travail précédent

PATH Chemins d'accès aux commandes

PPID (*) Numéro du processus père du shell

PS1 Prompt primaire

PS2 Prompt secondaire

PWD (*) Répertoire de travail actuel

SECONDS (*) Durée de la connexion en secondes

SHELL Nom du shell

TERM Type du terminal

TMOUT (*) Délai de déconnexion entre deux commandes

(*) spécifique ksh

Page 155: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 5 UNIXENV

LES VARIABLES COMMUNES

Exportation de variables

Le shell n'exécute pas lui-même les commandes qui lui sont soumises, mais crée unautre shell qui se charge de l'exécution.

De ce fait, les variables du shell père ne sont pas systèmatiquement connues desprocessus fils.

Pour qu'une variable soit commune à tous les processus fils d'un processus,elle doit être exportée.

$ var=18 ou $ typeset -x var=18$ export var

NOTA : - Il n'y a pas d'inverse (import).- Une variable, même mise en export, modifiée dans une

procédure appelée, n'a pas sa valeur modifiée dans laprocédure appelante.

La liste des variables transmises s'obtient par la commande :

$ env

Page 156: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 6 UNIXENV

Page 157: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 7 UNIXENV

LES ALIAS

Définition

La commande alias permet la définition d'abréviations de commandesou la création de pseudo-commandes.

Exemple :

$ alias ll="ls -l"

Principe

Le premier mot de la ligne de commande est remplacé par le textecorrespondant si ce mot est un alias.

$ ll est équivalent à ls -l

Utilisation

alias liste la définition de tous les aliasalias nom liste la définition de l'alias nomalias nom=cde définit l'alias nomalias -x nom exporte l'alias nomunalias nom supprime l'alias nom

Plusieurs alias peuvent se suivre sur une ligne de commande à condi-tion de l'avoir prévu lors de la définition. La définition d'un alias suscep-tible d'être suivi d'un autre alias doit se terminer par un espace.

Exemple :L'alias r réexécute la dernière commande de l'historique.

alias -x r="fc -e - "

Permet à ksh de regarder si le mot suivant, dans la ligne de com-mande, est un alias et dans ce cas là de le substituer.

Page 158: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 8 UNIXENV

Page 159: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 9 UNIXENV

GESTION DES SIGNAUX

Les signaux

Durant l'exécution d'une procédure, des signaux matérialisant l'arrivée d'événementspeuvent apparaître :

Signal 0 Sortie du shellSignal 1 Décrochement du terminalSignal 2 InterruptionSignal 3 QuitSignal 9 Meurtre de processusSignal 15 Fin logicielle d'un processus

Un programme utilisateur peut définir un traitement spécifique à réaliserlorsque survient le signal.Pour cela il faut utiliser la commande trap qui permet d'associer un traitement àn'importe quel signal.

Programmation du signal "INTERRUPT"

trap sans paramètres donne la liste de ce qui a été enregistré.$ trap

Positionnement d'un traitement associé à l'arrivée d'un signal "INTERRUPT" :$ trap 'commandes' 2

Inhibition du signal "INTERRUPT" :$ trap ' ' 2

Rétablissement des valeurs par défaut :$ trap 2

Exemple : La procédure decompte affiche 5 puis 4, 3, 2, 1.Si arrivée du signal "INTERRUPT", la temporisation est supprimée.

trap ' continue' 2for i in 5 4 3 2 1do echo $i sleep 5done

Page 160: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 10 UNIXENV

GESTION DES PROCESSUS

Lancement d'un processus en arrière-plan

Pour lancer une commande en arrière-plan, il faut terminer la ligne par &.Le numéro du PID est retourné.

Exemple : Lancement de la procédure decompte en arrière-plan :$ decompte &[1] 467

nota : La main est aussitôt rendue.Possibilité de récupérer le PID du dernier processus lancé enarrière-plan dans la variable $!Il est recommandé de rediriger systématiquement lessorties pour ne pas perturber l'écran.

Contrôle des tâches en arrière-plan (job control)

L'option monitor validée à la connexion permet de contrôler les tâches lancées enarrière-plan.

$ temps >> date_temps &[1] 478$ ecrire &[2] 481$ decompte &[3] 490

$ jobs -l[3] + 490 En cours d'exécution decompte &[2] - 481 Terminé ecrire &[1] 478 En cours d'exécution temps>> date_temps &

indique l'état des commandes lancées en arrière-plan sous la forme :- n° de job- + dernier job manipulé, - avant-dernier job manipulé.- n° de PID.- indique l'état de la tâche ( "en cours d'exécution", "terminé" )- la commande lancée

Page 161: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 11 UNIXENV

Maintien d'exécution en arrière-plan après déconnexion

Il est possible de se déconnecter sans interrompre le déroulement des processuslancés en arrière-plan.Pour cela faire précéder la commande par nohup.Les sorties stdout et stderr se font alors sur le fichier nohup.out.

Exemple :$ nohup decompte &[1] 478sending output to nohup.out$ exityou have running jobs$ exit (ce deuxième exit provoque la déconnexion)

Attente de la fin d'un processus

Elle se fait par la commande wait.Il faut préciser le numéro du processus à attendre.La variable $! contient le PID du dernier processus lancé en arrière-plan, si ceprocessus n'est pas terminé, la commande wait sera bloquante.

$ wait $!

Meurtre d'un processus

Il se fait par la commande kill.Il faut préciser le numéro du processus à tuer.

$ kill 467 Par défaut, envoi du signal 15.$ kill -9 467 Envoi du signal de meurtre.

Meurtre d'un processus sous job control

$ kill %1 numéro de tâche en arrière-plan

$ jobs[1] + Terminé (143) temps >> date_temps &[3] + En cours d'exécution decompte &

$ kill -9 %+[3] + Terminé decompte &

Page 162: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 12 UNIXENV

Page 163: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 13 UNIXENV

EXERCICES

Utilisation du trap

Commande : lisficdel fichier1 fichier2

Enoncé :

Lister le contenu des fichiers dont les noms ont été donnés en paramètres.

- Possibilité d’abandon de l’édition en cours si envoi du signal "INTERRUPT".

- En fin de travail, revenir au traitement implicite du signal "INTERRUPT".

Remarque : Utilisation de trap, continue, signal "INTERRUPT".

Commande : $HOME/.profile (sous UNIX)ou $HOME/.bashrc (sous LINUX)

Enoncé :

Modifier votre fichier "profile" de sorte à exécuter les opérations suivantes aumoment de la déconnexion :

- Effacement de l'écran,

- Affichage d'une bannière ou d'un message "il est : ",suivi de la date,

- Puis quelques secondes d'attente.

Remarque : Utilisation de trap, banner, ou echo, sleep et date.

Page 164: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

ENVIRONNEMENT, SIGNAUX ET SYNCHRONISATION

LDVINCI Rev3 9 - 14 UNIXENV

Page 165: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 1 UNIXAV

UNIX / LINUXAVANCE

COMPLEMENTS

Page 166: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 2 UNIXAV

Page 167: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 3 UNIXAV

SOMMAIRESection Page

COMPLEMENTS SUR LE SHELL 10 - 4

LES ALIAS 10 - 5Définition et utilisation 10 - 5Les alias pistés 10 - 5

SELECTION : LA BOUCLE SELECT 10 - 7Reply 10 - 7Read 10 - 7Print 10 - 7

SESSION UTILISATEUR 10 - 9Les variables Lxxx 10 - 9Changement de session utilisateur 10 - 9Définition d'une fonction 10 - 11

DEFINITION DES DROITS SUR LES FICHIERS 10 - 13umask 10 - 13

GESTION DES NEWS 10 - 14Fichiers des news 10 - 14Logique d'analyse des news 10 - 15

AUTRES COMMANDES D'AIDE AU DEROULEMENT D'UNE SESSION 10 - 16

EXERCICES DE PERSONNALISATION DE L'ENVIRONNEMENT 10 - 17UTILISATEUR

LES FILTRES D'EDITION TR, SORT ... 10 - 19

L'EDITEUR NON INTERACTIF : SED 10 - 20Adressage des lignes à éditer 10 - 20Modification et remplacement dans les chaînes de caractères 10 - 21Les expressions parenthésées 10 - 23Exemples de SED 10 - 24

Page 168: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 4 UNIXAV

COMPLEMENTS SUR LE KSH

Il y a appel du Korn shell lors de la connexion, si l’administrateur du site a modifiéle fichier /etc/passwd pour y inclure, dans le dernier champ de votre entréeutilisateur, le chemin /bin/ksh (valeur par défaut sur de nombreux serveursUNIX).

Au moyen de la commande ksh (création d’un shell fils du shell courant).

Au moyen de la commande exec ksh (recouvrement du shell courant).

Lors de la connexion, ksh exécute /etc/profile, puis le fichier$HOME/.profile s’il existe dans le répertoire d’accueil de l’utilisateur et enfin ilexécute le fichier référencé par la variable ENV si elle existe dans le fichier$HOME/.profile.

Chaque fois qu’un nouveau processus shell sera créé à un niveau inférieur, le kshcommencera à exécuter le fichier référencé par la variable ENV (par exemple$HOME/.kshrc), si elle existe et si elle est exportée (ce fichier contiendravraisemblablement les spécificités du Korn shell).

Sortie du ksh

Par la commande :

$ exit

ou

$ <Ctrl><d>

si l’option ignoreeof a été positionnée (set -o ignoreeof), alors la sortie se faitobligatoirement par exit.

Page 169: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 5 UNIXAV

LES ALIASDéfinition

Abréviation de commandes ou création de pseudo-commandes.Le 1er mot de chaque ligne de commande est remplacé par le texte correspon-dant si ce mot est un alias.

Utilisation

alias liste de tous les aliasalias nom imprime le contenu de nom, si trouvéalias nom=cde affecte nom à une ou plusieurs commandesunalias nom suppression de l’alias nomalias -x nom exporte l’alias nom

Si la définition d'un alias se termine par un espace, le shell vérifiera si le motsuivant est un alias.Cela permet d'utiliser plusieurs alias consécutifs dans une même ligne decommande.

Alias pistés, définition

Les alias pistés permettent d'améliorer les performances, car ils évitent au Kornshell de faire appel à la variable "PATH".

Utilisation

alias -t liste des alias pistésalias -t commande commande devient un aliasset -h toutes les commandesset -o trackall sont pistées

Note :Les alias pistés sont automatiquement annulés dès que le contenude la variable PATH change.Ils seront recréés au prochain appel de la commande.Les alias doivent être exportés pour être utilisés dans un sous-shellpar la commande :

alias -x nomalias=cde

Le fichier cité dans la variable ENV (lu et exécuté à chaque appel duksh) contiendra les alias.Quelques alias exportés sont déjà définis dans le ksh.

Page 170: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 6 UNIXAV

Page 171: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 7 UNIXAV

Sélection, la boucle select

select identifieur [in mot ...]; do commandes ;done

Visualisation des mots de la liste (ou de $*) précédés par leur numéro positionnel,suivi de ")". Il est ensuite envoyé le prompt PS3 (par défaut #?) et il y a alorsattente de lecture, au terminal, d’un chiffre.

Si la réponse est un des chiffres affichés, identificateur sera affecté du motcorrespondant, les commandes entre do et done seront exécutées. Sinonidentificateur sera "null" et PS3 sera reproposé.

La réponse chiffrée entrée au terminal sera sauvegardée dans la variableREPLY.

Exemple :$ cat selselect cde in ls pwd ps exitdo$cdedone$ sel1) ls2) pwd3) ps4) exit#?4$

read

read [options] Nom_variables (Utilisation de la variable IFS).

-r n’interprète pas les "\" comme un caractère spécial(continuation de ligne)

print

print [options] chaine_de_caractères

- ignorer toutes les options qui suivent-n ne met pas un new-line en fin de ligne-r ignorer les séquences (\b, \c, \f, \n, \r, \t)-R équivalent à -r et ignore toutes les options excepté -n

Page 172: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 8 UNIXAV

Page 173: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 9 UNIXAV

SESSION UTILISATEUR

- Tout terminal en connexion directe est surveillé par un processus : /usr/bin/getty (voir /etc/inittab).

- L’acceptation d’une session utilisateur (nom+mot de passe cor-rect) déclenche (si les fichiers existent) :

. L’exécution de /etc/profile

. L’exécution, s'il existe, de $HOME/.profile

.L'exécution, s'il existe, de $HOME/.kshrc

- Il est possible de conditionner la dernière séquence par :

Login : nom_utilisateur paramètres

La récupération de ces valeurs se fait sur test des paramètres définis explicite-ment, ou des valeurs positionnelles L0, L1,...

Exemple :

Login: alain revision=B projet=70054 CNRS

$ echo $L0 $projet $revision

CNRS 70054 B

- La fin de session (exit ou <CTRL><d>) déclenche l’exécution descommandes attachées au signal 0 par le trap de même numéro.

trap 'cmd1;cmd2;...' 0

positionné dans $HOME/.profile ou durant le déroulement de lasession.

Page 174: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 10 UNIXAV

Changement de session utilisateur

Obtenue par la commande :

su .... . .finie par <CTRL><d> ou exit

su nom_utilisateur

permet de changer d’identité (uid, gid) tout en conservantl’environnement de la session suspendue dépendant des variablesexportées.Les alias ne sont pas exportés au travers de su. (Sauf si les alias sontspécifiés dans le fichier référencé par la variable ENV)

su - nom_utilisateur

permet de changer d’identité et d’environnement par exécution des"profile" comme lors d’une connexion de 1er niveau.

su [-] [ nom_utilisateur -c "commande (s) [arguments]"]

exécute la(les) commande(s) citée(s) avec l’identité et les droits(plusl'environnement) de l’utilisateur désigné.Il y a retour automatique à la session suspendue immédiatement aprèsl’exécution.

Il est souhaitable après "su" de vérifier son identité par la commande : id

Environnement d’une session

$ env

L’environnement d’une session (variables exportées) est l’un deséléments de base de gestion utlisateur.La commande env en donne le contenu.

Page 175: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 11 UNIXAV

Définition d’une fonction

Ensemble de commandes regroupées sous un nom quelconque, exécutablesdans le shell courant par référence à ce nom.

Création d’une fonction

function nom

{

liste de commandes

}

ou

nom()

{

liste de commandes

}

Les fonctions peuvent récupérer des paramètres comme les procédures.

Une fonction peut définir des variables locales en utilisant la commande :typeset.

return [n]permet de spécifier le code de retour n (par défaut celui de la dernièrecommande exécutée).

Liste des fonctions :

functions ou typeset -f

Une fonction peut être exportée :

typeset -fx nom

Annulation d’une fonction :

unset -f nom

Les fonctions définies durant une session ne sont valables que pour la session.Pour les conserver, il faut les mettre dans le fichier référencé par ENV.

Page 176: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 12 UNIXAV

Page 177: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 13 UNIXAV

DEFINITION DES DROITS SUR LES FICHIERS

Les droits d’accès à un fichier peuvent être positionnés par un masque decréation en octal et en complément binaire à 2, grâce à l’instruction :

umask nnn

Liste des droits :

$ umask

022 # soit : rwx r-x r-x

Seules les chaînes de production de programmes créent directement desfichiers exécutables.

Positionnement des droits durant la session :

Exemple pour un fichier ordinaire :

rw- pour le propriétaire

r-- pour le groupe

--- aucun droit pour les autres

$ umask 027

Positionnement des droits sur un fichier par chmod :

$ chmod u=rw,g=r,o= fic

Le propriétaire peut changer le groupe

chgrp gid|nom_groupe fichier(s)

Il peut aussi donner un fichier à un autre propriétaire

chown uid|nom_user fichier(s)

Page 178: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 14 UNIXAV

GESTION DES NEWS

(SUR SERVEUR PRINCIPALEMENT)

Fichiers d’information : news

Fichiers de structure quelconque contenant des informations d’ordre généralconsultables avec la commande news.

Deux types de fichiers :

-Les fichiers d’informations :Ce sont des fichiers textes écrit par tout utilisateur ayant les droits enécriture sur le répertoire /var/news dans lequel ils seront créés.Les informations stockées dans ces fichiers seront consultables par lacommande news.

-Le fichier de contrôle d’accès :C'est un fichier dont la date de modification servira comme référencepour visualiser les fichiers d'informations (les news) les plus récents,par rapport à cette date référence.Ce fichier, $HOME/.news_time, sera créé à la première utilisation dela commande news, ensuite seule sa date de modification sera remiseà jour.Il aura la même date que celle du fichier d'information le plus récent.

Exemple :

$ ls -l /var/newstotal 1-rw-r--r-- 1 c700541 avance 59 20 fév 14:35 info1

$ cat /var/news/info1L'utilisation des news est très simple et pas compliquée!!!

$ ls -l $HOME/.news_timels: 0653-341 Le fichier /home/c700541/.news_time n'existe pas.

$ newsinfo1 (c700541) jeu 20 fév 14:35:21 NFT 2001 L'utilisation des news est très simple et pas compliquée!!!

$ ls -l $HOME/.news_time-rw-r--r-- 1 c700541 avance 0 20 fév 14:35 /home/c700541/.news_time

Page 179: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 15 UNIXAV

Logique d’analyse des news

Nombre de news à examiner (plus récents que .news_time)

$ news -s --> n item(s)

Noms des news à examiner (plus récents que .news_time)

$ news -n --> nom(s) de(s) news

Visualisation des news

- Sans mise à jour de .news_time

nom(s) de(s) news --> contenu des nom(s)

$ news

-a --> contenu de toutes les news

- Avec mise à jour de .news_time

(fichier vide, date/heure modifiées par celles du news le plus récent).

$ news --> contenu de(s) news de date postérieure au dernier .news_timeactuel (... puis mise à jour de .news_time)

Page 180: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 16 UNIXAV

AUTRES COMMANDES D’AIDE AUDÉROULEMENT D’UNE SESSION

Contrôle de déroulement

whoami identité actuelle de l’utilisateur de la session en cours.

who [am i] identité de connexion sur la ligne au 1er niveau.

who -option

-u événements de connexion : heure, n° de processshell.

-T autorisations d'écriture sur les terminaux.

ps [-options] liste les processus associés au terminal.

-e liste de tous les processus actifs.

-f de leur dépendance.

-t terminal liste des processus réduite à ceux associés à unterminal.

-p pid liste des processus associés à un n° de processus.

-u utilisateur liste des processus associés à un nom d’utilisateur.

leave [hhmm]

Spécification d’une échéance à partir de laquelle unmessage préviendra de l’atteinte de cette heure.

(message répétitif jusqu’au meurtre du processus leave).

Page 181: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 17 UNIXAV

EXERCICES DE PERSONNALISATION DE L'ENVIRONNEMENT UTILISATEUR

1 - Ecrire un fichier ".profile" permettant lors d’une connexion login :

- d’écrire dans un fichier .journal les dates de connexion- de définir le prompt primaire PS1 identifiant le nom de la machine, le répertoire courant et le n° historique d’instruction

exemple : moka /home/user1 (35)

- de définir le prompt secondaire comme suit: (suite)>- de définir le prompt tertiaire PS3 comme suit: (choix):- de protéger l'écran contre toute messagerie immédiate- de consulter les "news" et de programmer l'avertissement de l’heure de fin de travail de la journée.- de proposer un choix vous permettant de vous placer sous un répertoire projet_1, projet_2 ou projet_3; (ces répertoires ayant été créés au préalable), ou sous le répertoire d’accueil.

2 - Lors de la déconnexion :

- effacement de l’écran,- envoi d’un message de fin (avec le nom de l’utilisateur se déconnectant sur quelle machine),- écrire dans .journal la date et l’heure de déconnexion

3 - Vous associerez à votre .profile un fichier ENV (.kshrc):

- dans lequel vous invaliderez la fin de session par <CTRL><d>.- vous imposerez un "timeout" (TMOUT) de 5 minutes sur votre terminal.- vous définirez deux fonctions,

. l’une permettant d’obtenir l’heure courante,

. l’autre une liste des sous répertoires

4 - Si vous êtes sur un système AIX, vous créerez en plus :

- dans le fichier . profile. une variable EDITOR=/usr/bin/vi en l'exportant

- dans le fichier ENV. un alias ll équivalent à "ls -l" en l'exportant.

Page 182: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 18 UNIXAV

Page 183: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 19 UNIXAV

FILTRES D’EDITIONFiltres d’édition par ligne

tr substitution, traduction, destruction de caractères précisésdans une ligne.

exemple :

$ tr '[a-z]' '[A-Z]' </etc/passwd convertit toutes les minusculesen majuscules.

$tr -d : </etc/passwd suppression du caractère : (2pts)

Filtres d’édition par page

more filtre d’édition par écran d’un texte continu. Un certain nombred’options sont utilisables (commande h sous more).

pg même commande que more (des différences suivant lessystèmes d'exploitation)

Filtre d’édition triée

La commande sort trie le contenu d’un fichier en fonction d’une ou plusieurs clés.- La ligne entière peut constituer 1 clé unique.- 1 clé = 1 champ (ou une partie de champ).- 1 champ = chaîne de caractères encadrée d’espaces ou

d’un autre séparateur explicite (option -t).

Un certain nombre d’options permettent :- De préciser l’environnement de travail de sort : -o.- De préciser les règles du tri: -d, -f, -i, -n, -r, -u, -t.- De préciser la ou les clés de tri +pos1 -pos2 par clé de tri.

Exemples :$ ls -l | sort +7 -8

Trie suivant le 8ème champ du format de sortie de lacommande ls -l.

$ sort -r -o sortie +1.1 -1.2 fic1 fic2Trie dans l’ordre inverse de l’ordre lexicographique les2 fichiers "fic1" et "fic2" avec le premier caractère dusecond champ comme clé ; résultat du tri dans le fichier"sortie".

Page 184: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 20 UNIXAV

ÉDITEUR NON INTERACTIF : SEDGénéralités

- pour des fichiers de taille importante.- pour des commandes de mise à jour compliquées.- pour des fonctions de mise à jour à effet global en un seul parcours

des données.

Appel de sedsed [-n] 'commande' fichierssed [-n] [-e 'commande'] ..... [-f ficcde] ...... [fichiers ...]

Options-n : supprime toutes les sorties par défaut (seules les

lignes affectées par la fonction p iront versla sortie standard).

-e commande : commande est une commande de mise à jour.-f ficcde : ficcde est un fichier de commandes de mise à jour.

Syntaxe d’une commande de mise à jour

[adr1[,adr2] ] fonction [arguments]

Adressage des lignes à éditer

. adressage par numéro de ligne.

. utilisation des expressions régulières.

. pas d’adressage relatif.

/exp.reg/ adresse toutes les lignes qui contiennent "exp.reg"

/exp.reg1/, /exp.reg2/ adresse toutes les lignes à partir de celle quicontient "exp.reg1" jusqu'à celle qui contient "exp. reg2".

Exemples :12 ligne numéro 12/toto/ toutes les lignes contenant "toto"/toto/,/titi/ toutes les lignes, de la ligne de "toto"

à la ligne "titi"

Page 185: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 21 UNIXAV

Les fonctions de mise à jour

Action sur des lignes entièresd : Suppression de lignes.a\<texte> : Ajouter le texte.c\<texte> : Substituer le texte.i\<texte> : Insérer le texte.

Modification, remplacement dans les chaînes de caractères.

y : Remplacement de plusieurs caractères.s : Substitution, modification de partie(s) de ligne(s)

Forme générale d'écriture de l'action "y"

[adr1[,adr2]] y <liste1> <liste2>

Remplace toutes les occurences des caractères de <liste1> par les caractèrescorrespondant de <liste2> (le caractère <NL> est représenté par \n). <liste1>et <liste2> doivent être de même longueur.

Exemple :$ echo $PATH | sed 'y;/:; \n;'

Forme générale d'écriture de l'action "s"

[adr1[,adr2]] s <expression> <remplacement> <options>

<expression> est une expression régulière délimitée par n’importequel caractère sauf "espace" et "new-line".

<remplacement> est une expression qui n’utilise pas la syntaxe desexpressions régulières mais les conventions :& chaîne avec laquelle <expression> coïncide.\n nième expression parenthèsée.

<option> prend sa valeur dans :g toutes les occurences sur la ligne sont traitées.n seulement la nième occurence est traitée.p impression du résultat.w fic écriture du résultat dans "fic".

Page 186: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 22 UNIXAV

Page 187: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 23 UNIXAV

Les expressions parenthésées

L'action s permet de remplacer les chaînes de caractères à l'endroit souhaitédans la ligne.Les expressions parenthésées donnent la possibilité de regrouper des chaînes decaractères.

s/.....\(exp1\).....\(expn\)/\n.....\1/

exp1 Première expression parenthésée.expn Nième expression parenthésée.\n et \1 Représentent respectivement les expressions

numéro n et 1 parenthésées (leur ordre de placementdépend de la réorganisation souhaitée en sortie).

Exemple :

Dans le fichier edition , il y a 4 champs par enregistrement :

Nom Prénom Numéro1 Numéro2

En sortie nous voulons obtenir :

Prénom Nom

Commande à passer :

$ sed 's/\(.*\) \(.*\) .* .*/\2 \1/' edition

Page 188: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 24 UNIXAV

Exemple 1

Soit le fichier de nom "texte" suivant :1 Le systeme UNIX comprend le Noyau, le Shell, les programmes2 utilitaires et les langages :3 - le noyau planifie les taches ; gere la memoire, la4 structure et les acces aux fichiers.5 - le Shell est un langage de commande. Il interprete6 les commandes et les execute.7 - les programmes utilitaires, encore appeles outils,8 representent le logiciel utilisateur de base.9 N’est-ce pas tout un programme?...

Par un fichier de directives envoyant sur la sortie standard le contenu du fichier"texte" on veut faire les actions suivante :- insertion de "bonjour" avant la 1ère ligne- changement de la 2ème ligne en "bonsoir"- insertion de "au revoir" après la quatrième ligne- destruction de la 6ème ligne

$ sed -f actli texte

contenu de actli1i\bonjour2c\bonsoir4a\au revoir6d

Résultat :

bonjour1 Le systeme UNIX comprend le Noyau, le Shell, les programmesbonsoir3 - le noyau planifie les taches ; gere la memoire, la4 structure et les acces aux fichiers.au revoir5 - le Shell est un langage de commande. Il interprete7 - les programmes utilitaires, encore appeles outils,8 representent le logiciel utilisateur de base.9 N’est-ce pas tout un programme?...

Page 189: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 25 UNIXAV

Exemple 2

Dans le fichier "edition" remplacement à la ligne 4 de "Dupont" par "Durand" aumoyen d’une ligne de commande.

Sans option -n

$ sed '4s/Dupont/Durand/p' edition

Avec option -n

$ sed -n '4s/Dupont/Durand/p' edition

Résultat :

Sans option -n

Aboaf Maurice 244 748Adda Jen 539 234Allo Jean-Pierre 255 98Durand Jean 111 112Durand Jean 111 112Bernard Jean-Paul 234 567Chasserat Paul 245 178Cousin Pascal 222 222Froideceaux Michel 252 423Gros Lucien 212 121

Avec option -n

Durand Jean 111 112

Page 190: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

UNIX AVANCE : COMPLEMENTS

LDVINCI Rev3 10 - 26 UNIXAV

Page 191: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 1 UNIXMEMO

MEMO

UNIX / LINUXMEMO

Page 192: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 2 UNIXMEMO

MEMO

Page 193: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 3 UNIXMEMO

MEMO

MEMO VIvi fichier Appel de vi

a<texte><Echap> Insère le texte après le curseur

i<texte><Echap> Insère le texte avant le curseur

o<texte><Echap> Insère une ligne après la ligne courante

O<texte><Echap> Insère une ligne avant la ligne courante

A<texte><Echap> Insère le texte à la fin de la ligne courante

ZZ Sort avec sauvegarde

:w Sauvegarde

:q! Sort sans sauvegarde

:!commande Exécute une commande shell

:sh Sort avec un shell fils

:set nu Numérote les lignes

:set nonu Supprime la numérotation des lignes

Les quatres fléches Déplace le curseur dans le buffer

^F Déplace le curseur un écran vers le bas

^B Déplace le curseur un écran vers le haut

/chaîne Déplace le curseur sur la chaîne

n ou N Répète la recherche dans le même sens ou dans le sens

inverse

33G Déplace le curseur sur la ligne 33

x Détruit le caractère courant La dernière

dd Détruit la ligne courante destruction est

3dd Détruit trois lignes contenue dans le

dw Détruit un mot buffer sans nom

r<caractère> Remplace le caractère courant par un autre caractère

cw<texte><Echap> Remplace un mot par texte

3s<texte><Echap> Remplace 3 caractères par texte

R<texte><Echap> Remplace plusieurs caractères par texte

u Annule le dernier changement

. Répète la dernière commande

p Copie le buffer sans nom après le curseur

P(majuscule) Copie le buffer sans nom avant le curseur

5yy Place 5 lignes dans le buffer sans nom

Page 194: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 4 UNIXMEMO

MEMO

(*) Spécifique ksh

MEMO COMMANDES

alias Définit ou affiche une abréviation de commande (unixenv)

banner texte Affiche le "texte en bannière (unixenv)

break Sort d'un niveau de boucle (unixprog)

cal Affiche le calendrier (unixpres)

cancel Stoppe l'impression d'un fichier (Syst.V) (unixcom)

cat fic Concatène le contenu du fichier sur la sortie standard (unixfic)

cd /users Déplace vers le répertoire /users (unixfic)

cd .. Déplace vers le répertoire père (unixfic)

cd Retourne au répertoire de connexion (unixfic)

chmod Change les droits d'accès (unixpro)

chown Change de propriétaire (unixpro)

chgrp Change de groupe (unixpro)

continue Supprime un passage dans une boucle (unixprog)

cpio -i Reconstruit une arborescence à partir d'un fichier d'archive

(unixcop)

cpio -o Crée une archive avec le contenu des fichiers dont le nom

est passé sur l'entrée standard (unixcop)

cp source destination Copie d'un fichier (unixcop)

date Affiche la date (unixpres)

echo "texte" Affiche texte sur la console (unixpres)

enq Gère les impressions (AIX) (unixcom)

env Liste les variables d'environnement (unixenv)

exit Sort du shell (unixsh)

export var Exporte la variable var (unixenv)

expr 4 + 2 Calcul arithmétique (unixprog)

fc Edite des commandes de l'historique(*) (unixsh)

file fic Donne la nature du fichier fic (unixfic)

find Recherche d'un fichier (unixcop)

fold Plie les lignes avant édition (unixcom)

for do done Programme une boucle (unixprog)

grep Recherche une expression régulière dans une liste de fichiers

(unixvi)

history Affiche les 16 dernières commandes(*) (unixfic)

if then else fi Structure conditionnelle (unixprog)

integer var Définit var comme variable entière (unixsh)

jobs Contrôle les tâches en arrière-plan(*) (unixenv)

kill -9 14759 Tue le processus 14759 (unixenv)

Page 195: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 5 UNIXMEMO

MEMO

let a+b ou ((a+b))etlet a<b ou ((a<b)) Calcul arithmétique et tests sur les variables entières

(unixprog)

lpq Affiche le contenu d'une file d'attente (BSD) (unixcom)

lpr Imprime un fichier (BSD) (unixcom)

lprn Arrête une impression (BSD) (unixcom)

lpstat Affiche le contenu d'une file d'attente (Syst V) (unixcom)

ls -C Liste en colonne (unixfic)

ls -l Liste les fichiers avec leurs caractéristiques

(unixpro)

ln source destination Lie un fichier (unixcop)

logname Affiche le nom de login (unixpres)

lp Imprime un fichier (Syst. V) (unixcom)

ls Liste les fichiers du répertoire courant (unixfic)

mailx userx Envoie d'un message à userx (unixcom)

man commande Affiche la documentation de la commande (unixpres)

mesg n Interdit l'affichage des messages (unixcom)

mkdir fic_rep Crée le répertoire fic_rep (unixfic)

more fic Affiche le contenu du fichier fic paginé (unixfic)

mv source destination Renomme un fichier (unixcop)

nohup commande & Protège la commande en arrière-plan d'une déconnexion

(unixenv)

passwd Positionne ou change un mot de passe (unixpres)

pg fic Affiche le contenu du fichier fic paginé (unixfic)

pr Affiche un fichier présenté (unixcom)

print "texte" Affiche un texte sur le terminal (*) (unixsh)

ps -f Liste les process en cours (unixsh)

pwd Affiche le répertoire courant (unixfic)

qcan Arrête une impression (AIX) (unixcom)

qchk Affiche le contenu d'une file d'attente (AIX) (unixcom)

qprt Imprime un fichier (AIX) (unixcom)

r Réexécute une commande (*) (unixfic)

read var Affecte la valeur entrée au clavier à la variable var

(unixsh)

readonly var Protège une variable (unixsh)

rmdir fic_rep Détruit un répertoire vide (unixfic)

rm fic Détruit un fichier ordinaire (unixfic)

rm -ri fic_rep Détruit un répertoire et son contenu (unixfic)

set Liste les variables du shell (unixenv)

Page 196: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 6 UNIXMEMO

MEMO

(*) Spécifique ksh

shift Décale les paramètres (unixsh)

sleep n Temporise n secondes (unixprog)

tee Redirige dans un fichier (unixsh)

test ou Teste les caractéristiques de fichiers,les valeurs num., les

[ expression ] chaînes de caract. (unixprog)

trap Synchronise un signal (unixenv)

true ou : Toujours vrai (unixprog)

tty Donne le nom du fichier spécial de votre terminal (unixpres)

type fic Affiche le type des données de fic (unixsh)

typeset-i var ou

integer var Définit var comme variable entière (unixsh)

unalias Supprime un alias (unixenv)

uname Affiche le nom de la machine (unixpres)

unset var Efface une variable (unixsh)

until do done Programme une boucle (unixprog)

wait n Le processus attend la fin du processus n (unixenv)

wc fichier Affiche le nombre de lignes, de mots,

de caractères d'un fichier (unixpres)

while do done Programme une boucle (unixprog)

who Liste les utilisateurs connectés (unixpres)

write userx Envoie un message à un utilisateur connecté (unixcom)

Page 197: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 7 UNIXMEMO

MEMO

(*) Spécifique ksh

MEMO (SUITE)

>fichier Redirige la sortie standard dans fichier (unixsh)

>>fichier Redirige la sortie standard en fin de fichier (unixsh)

2>fichier Redirige la sortie d'erreurs dans fichier (unixsh)

2>>fichier Redirige la sortie d'erreurs en fin de fichier (unixsh)

<fichier Redirige l'entrée standard à partir de fichier (unixsh)

commande<<FIN Utilise les directives d'une commande

dans une procédure (unixsh)

com1 | com2 La sortie de com1 est mise sur l'entrée de com2 (unixsh)

com | tee fichier Double la redirection de la sortie (unixsh)

$0 Nom de la procédure appelante (unixsh)

$1 à ${n} Paramètres 1à n (unixsh)

$# Nombre de paramètres (unixsh)

$* Tous les paramètres (unixsh)

$? Code de retour d'une commande (unixprog)

$! PID du dernier processus lancé en arrière-plan (unixenv)

alpha=100 Affecte la valeur 100 à la variable alpha (unixsh)

print $alpha Affiche le contenu de la variable alpha(*) (unixsh)

Page 198: F o rm a tio n U N IX / L IN U X - damienterrisse.free.frdamienterrisse.free.fr/site/coursettutoriaux/unixbases.pdf · in t r o d u c t io n l d v in c i 2 0 0 4 2 u n ix in t - r

LDVINCI Rev2 11 - 8 UNIXMEMO

MEMO

* Dans une commande SHELL :

remplace n'importe quelle chaîne de caractères

pour générer des noms de fichiers

Dans les cas de CASE IN ESAC :

remplace n'importe quelle chaîne de caractère

(unixfic)

? Remplace 1 caractère (unixfic)

[] Remplace 1 des caractères contenus entre les crochets

(unixfic)

\ Annule l'effet spécial du caractère qui suit

(unixfic)

$(commande) Provoque la substitution par le résultat de la commande (*)

ou `commande` (unixsh)

'......' Ne provoque pas de substitutions à l'intérieur des quotes

(unixsh)

"......." Accepte la substitution des caractères $ \ `

et conserve les espaces (unixsh)

; Sépare les commandes sur une ligne (unixpres)

# Délimite un commentaire (unixpres)

commande& Lance une commande en arrière-plan (unixenv)

com1 || com2 Commande1 ou commande2 (unixprog)

com1&& com2 Commande1 et commande2 (unixprog)

(*) Spécifique ksh