+ - 0:00:00
Notes for current slide
Notes for next slide

INFORMATIQUE 3 - CM8

Inès de Courchelle

2024-2025

1 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
2 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
3 / 52

Prompt

Définition

  • Invite de commande
  • Variable d'environnement PS1

Syntaxe de base

L'invite par défaut contient donc \u@\h:\w\$

syntaxe description
\u nom de l'utilisateur
\h nom de la machine
\w le chemin de travail… où vous êtes


Où ?

Dans ton .... .bashrc

4 / 52

Bashrc

C'est quoi ?

  • Le fichier qui permet de lancer la configuration lors du lancement du terminal
  • Créer des alias
  • ...

C'est où ?

  • Dans le home directory
  • C'est un fichier caché
  • On peut l'ouvrir sous emacs de la manière suivante :
    sudo emacs ~/.bashrc

Comment le recharger ?

Si on a apporté des modifications au fichier on peut le recharger sans avoir à fermer le terminal

source ~/.bashrc
5 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
6 / 52

Les processus

Définition

  • Ensemble d'instructions à exécuter
  • Hierarchisation des processus dans les commandes UNIX
  • Différents types
    • Interactifs : la plupart des processus s'exécutent en utilisant des E/S avec un utilisateur
    • Non Interactifs : certains processus gèrent en arrière plan des choses sans interaction (démons

Cycle de vie

7 / 52

Représentation

Lire un processus dans le terminal

nom de la colonne explication
uid Propriétaire du processus
pid Numéro du processus
ppid Père du processus
C Utilisation CPU
stime Temps où le processus à commencer
tty Terminal associé au processus
time Total de CPU utilisé
cmd Nom du processus


8 / 52

Les processus

Les commandes d'affichage

Processus du prompt en cours

ps

Processus du système en utilisant la syntaxe traditionnelle

ps -ef

Processus du système en utilisant la syntaxe BSD

ps -ax
9 / 52

Les processus

Les commandes d'affichage

Arborescence des processus

ps -ejH

Processus apartement à l'utilisateur

ps -aux
ps -x -u <login>
10 / 52

Rechercher un processus

Comment ?

  • avec un pipe
  • avec la commande grep

C-à-d

La commande

ps -ef | grep nomduprocessus

Exemple

ps -ef | grep teams
11 / 52

Tuer un processus

Pourquoi ?

  • Par exemple firefox plante impossible de le fermer ou de le redémarrer
  • Parce que ...

Comment ?

solution 1

kill <n° pid>

solution 2

killall <nom du processus>
12 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
13 / 52

Mode d'exécution

2 types d'exécution

  • foreground
  • background

Foreground

  • processus qui bloque l'invite de commande
  • on doit attendre que le processus soit fini pour en démarrer un autre

Background

  • processus qui ne bloque PAS l'invite de commande
  • on peut lancer d'autre processus en paralléle

14 / 52

Mais comment ?

Exemple

Le mieux c'est de le tester soit même

15 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
16 / 52

Langages scripts

Définition

  • Langage de programmation interprété (pas besoin de compiler)
  • Exemple : Script Shell (sh,bash, ksh ...), JavasCript, VBA, PowerShell ...

Script Shell

  • Enchaîner des commandes Unix
  • Automatiser une série d'opérations
  • Interprêter des commandes
17 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
18 / 52

Différence entre bash et shell

sh

  • Bourne Shell (SHell)
  • le plus simple

Bash

  • Bourne Again Shell
  • Amélioration du bourne Shell disponible par défaut sous linux et Mac OX

  • Tout ce que je peux faire en Sh je peux le faire en bash
  • Bash a plus de fonctionnalités
19 / 52

L'exécution

monScript.sh

Solution 1

./monScript.sh

Attention : il faut rajouter les droits d'exécution au fichier (chmod +x monScript.sh)

Solution 2

sh monSript.sh

Solution 3

bash monSript.sh
20 / 52

Mon premier script

Le fichier

Le contenu

# C'est un super commentaire
echo "coucou" # ici j'affiche la chaîne de caractère coucou

Attention :

  • Il n'y a pas de ;
  • Il faut respecter les tabulations (comme en python)
21 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
22 / 52

Les variables

Stocker une chaine

maChaine="coucou"

Stocker un entier

monEntier="coucou"

Stocker le résultat d'une commande

maCommande=`ls -l`

Attention Pour utiliser une variable il faut utiliser le $

23 / 52

Les variables

Exemple

maChaine="coucou"
echo $maChaine
monEntier=4
echo $monEntier
maCommande=`ls -l`
echo $maCommande


24 / 52

Les variables

Additionner des entiers

a=4
b=5
echo "solution1 : " $(($a+$b))
let "c=$a+$b"
echo "solution 2 : " $c

Attention : pour utiliser let, il faut obligatoirement utiliser la compilation ./script.sh

Les différentes opérations :

  • addition : +
  • soustraction : -
  • multiplication : *
  • division euclidienne : /
  • reste : %
  • puissance : **
25 / 52

Les variables

Lire une entrée utilisateur au clavier

read x
echo "l'utilisateur a rentré $x"

26 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
27 / 52

Les chaînes de caractères

ls -l
ls -l | wc -l
echo "ls -l | wc -l"
echo 'ls -l | wc -l'
echo `ls -l | wc -l`
  • doubles quotes : Appelées aussi quote-quote
  • simples quotes : Appelées aussi quote
  • back quotes : combinaisons touches : altGr + 7

Attention

  • Notez bien la différence qui existe entre les quotes
  • Utile pour mixer des commandes dans d'autres
28 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
29 / 52

Les commandes

Les mêmes

  • La base ls cat ls du cp mv mkdir rm rmdir chmod touch pwd
  • Les sorties echo head tail wc source pipe
  • Les fichiers grep find --exec sort cut ssh scp who
  • Jobs bg fg jobs

30 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
31 / 52

Structures de contrôle

Avec des SI ...

La classique

if condition
then
...
fi

La complète

if condition
then
...
else
...
fi
32 / 52

Structures de contrôle

Avec des SI ...

La surprise du chef

if condition1
then
...
elif condition2
then
...
else
...
fi

Attention : il faut bien utiliser les tabulations à l'intérieur des si

33 / 52

Structures de contrôle

Les conditions

Pour les entiers

ecriture signification équivalence en C
[ $x -eq $y ] $x equal to $y x==y
[ $x -ne $y ] $x not equal $y x!=y
[ $x -lt $y ] $x lower than $y x<y
[ $x -le $y ] $x lower or equal to x<=y
[ $x -gt $y ] $x greater than $y x>y
[ $x -ge $y ] $x greater or equal to $y x>=y

Attention

  • ne pas oublier les crochets
  • mettre un espace avant et après les crochets
34 / 52

Structures de contrôle

Exemple

read x
echo "l'utilisateur a rentré $x"
read y
echo "l'utilisateur a rentré $y"
if [ $x -lt $y ]
then
echo "$x est plus petit que $y"
else
echo "$x est plus grand que $y"
fi
35 / 52

Structures de contrôle

Les boucles

La While Do Done

i=0
while [ $i -lt 5 ] # tant que i lower than 5 (i<5)
do
echo "coucou" # pour afficher coucou
let "i++" # pour incrémenter i
done

Until Do done

j=0
until [ $j -eq 5 ] # jusqu'à que j equal to 5 (i==5)
do
echo "coucou"
let "j++"
done
36 / 52

Structures de contrôle

Les boucles

Pour afficher successivement le nom de fichier présent dans le répertoire courant

for fic in *
do
echo $fic
done


Pour i dans un intervalle

for i in {1..10}
do
echo $i
done
37 / 52

Structures de contrôle

Case

var="hello"
case $var in
h) echo "1" ;; # traitement si var=a
ell|lo) echo "2" ;; # traitement si var = "b" ou "c"
h*) echo "3" ;;# traitement si $var commence par "d";;
*) echo "null" ;; # traitement par défaut;;
esac

Attention

  • ne pas oublier les doubles ;; à la fin d'un cas
  • on peut enchaîner plusieurs commandes dans chaque cas
38 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
39 / 52

Les tableaux

Définition

Manipulation

Création

montab=( "case1" "case2" "case3" )

Affichage

for case in ${montab[*]}
do
...
done
40 / 52

Les tableaux

Définition

Manipulation

Modification

montab[0]="nouvelle valeur"

41 / 52

Les tableaux

Exemple

montab=( "led" 666 "pj" 42 )
for case in ${montab[*]}
do
echo "case : $case"
done
echo " montab : ${montab[*]}"
echo " case 0 : ${montab[0]}
montab[0]="zep"
echo " case 0 : ${montab[0]}"

42 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
43 / 52

Les arguments

Définition

  • Envoyer des paramètres à l'appel du programme
  • Utiliser pour ne pas avoir à entrer des valeurs dûr dans le programme

Exemple

Vous l'avez déjà fait

Compter le nombre de ligne d'un fichier

wc -l monFichier.csv

wc -l c'est la commande et monFichier.csv est le paramètre

Afficher le contenu d'un fichier

cat monFichier.csv

cat c'est la commande et monFichier.csv est le paramètre

44 / 52

Les arguments

Exemple

for i in $(seq 0 $#)
do
echo "le parametre numero $i est ${!i}"
done

Résultat

45 / 52

Variables prédéfinies

Nota Bene

  • $0 contient le nom du programme en cours
  • $1..$9 contiennent les différentes valeurs des arguments/paramètres
  • $# contient le nombre de paramètres/arguments
  • $* contient une liste de l’ensemble des paramètres/arguments
  • $? contient l’état de sortie de la dernière commande. Si la commande s’est bien passée, alors elle renvoie 0, sinon une valeur différente de zéro.
  • $$ contient le numéro du processus en cours

46 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
47 / 52

Les tests

Exemples

Vérifier si c'est un exécutable

maVar="algo.c"
if [ -x $maVar ]
then
echo "$maVar est un executable"
else
echo "$maVar n'est pas un executable"
fi

Attention :

  • Un exécutable est un fichier ayant les droits x pour tout les types d'utilisateurs
  • Pour ajouter l'exécutabilité d'un fichier, il faut lancer la commande
48 / 52

Les tests

Exemples

Vérifier si c'est un répertoire

maVar="monDossier"
if [ ! -d $maVar ]
then
echo "$maVar n'est pas un dossier"
else
echo "$maVar est un dossier"
fi

49 / 52

Les tests

Exemples

Arrêter le programme

maVar="monDossier"
if [ ! -d $maVar ]
then
echo "$maVar n'est pas un dossier je pars"
exit 1
fi
echo "Moi je reste et je continue"
echo "... traitement divers ..."
exit 0

50 / 52

Les tests

Exemples

Le exit et etat de sortie

En tapant dans le terminal echo $? on peut vérifier l'état de sortie du programme

  • 0 si tout c'est bien passé
  • Valeur différente de zéro si un problème
maVar="monDossier"
if [ ! -d $maVar ]
then
echo "$maVar n'est pas un dossier je pars"
exit 666
fi
echo "Moi je reste et je continue"
echo "... traitement divers ..."
exit 0
51 / 52

Les tests

Exemples

Le exit et etat de sortie

maVar="monDossier"
if [ ! -d $maVar ]
then
echo "$maVar n'est pas un dossier je pars"
exit 666
fi
echo "Moi je reste et je continue"
echo "... traitement divers ..."
exit 0

52 / 52

Les Jobs et Les scripts

Plan

  1. Les variables prédéfinies du shell
  2. Les processus
  3. Les modes d'exécution des processus
  4. Langages scripts
  5. Différence entre bash et shell
  6. Les variables
  7. Les chaînes de caractères
  8. Les commandes
  9. Structures de contrôle
  10. Les tableaux
  11. Les arguments
  12. Les tests
2 / 52
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow