Bash basics

TODO in english.......

Objectif : automatiser des tâches

  • Fichier texte (attention a l'encodage)

  • Suite de commandes shell

  • Executable par un interpréteur

  • Retournant dans tous les cas une valeur (best practice)

    • code de bon fonctionnement

    • code d'erreur

    • différenciation des erreurs si possible !

Le shell

ensemble de commande et d'outil d'échange avec le système Ensemble de commandes

Exemple de shell:

  • bash : bourne again shell : shell GNU

  • csh, tcsh : shels proche du C de Berkeley

  • ksh : korn shell

  • ...

Script élémentaires

avec les guillemets on interprete le contenu, et cela ne représente qu'une donnée

exit 0 = variable par défaut quand ça c'est bien passé

on retour 0 car il n'y a qu'un succès alors que les erreurs peuvent être multiples.

Pour rendre le script exécutable et le lancer :

Exécution d'une commande

  • Utilisation de $

  • Exploitation de la chaîne retournée

    • Affichage

    • Stockage

Les variables

  • Non typées, non déclarées

  • référencement de la valeur : $

  • variable en lecture readonly

  • exploitation des variables d'environnement

  • $USER (nom current user), $PWD(print work directory), $HOME (chemin du home du current user)....

  • Liste des variables d'environnement : env

Exemple de variable

Variables prédéfinies

Command

Description

$?

valeur de sortie de la dernière commande

$0

nom du script

$n

Nième argument passé au Script

$#

Nombre d'arguments

$$

PID du processus courant

$*

liste des arguments à partir de $1

Exemple var2.sh

Opérations sur les Variables

Les tableaux

  • Déclaration globale ou individuelle

  • Pour l'affichage :

@ affiche la totalité du tableau

  • Pour la taille : demande de la taille de la structure de données

Les tests

Deux syntaxes

  • test expression

  • [ expression ]

Tests sur les types de fichiers

Tests sur les valeurs ( chaînes, numériques )

Tests sur les fichiers

Command

Description

-e

le fichier existe

-f

c’est un fichier

-d

c’est un répertoire

-r -w -x

propriété du fichier

-s

non vide

f1 –nt f2

Plus récent que

f1 –ot f2

Plus vieux que

Expressions logiques

Command

Description

expr1 –a expr2

Et

expr1 –o expr2

Ou

!

Expr Négation

Tests des valeurs

  • Chaine de caractères

    • z / -n Chaîne vide / non vide

    • != / n Différentes identiques

  • Valeurs numériques

    • -eq / -ne Égal / différent

    • -lt / -gt Strictement inférieur / strictement supérieur

    • -le / -ge Inférieur ou égal/ supérieur ou égal

Structure conditionnelles if

Généralement on commence le script par vérifier if [ $# -ne 1 ] pour vérifier si les paramètres correspondent.

Structure conditionnelles connaisse

Structures itératives for

Structures itératives while / until

While :

Until :

La gestion des flux

En UNIX tout est fichier.

Utilisation des flux

  • < entrée standard depuis un fichier

  • > ou 1> flux standard

  • 2> flux d’erreur

  • 2>&1 redirection de la sortie d’erreur vers la sortie standard

Redirection dans un fichier

  • > écriture et création du fichier

  • >> ajout à un fichier

Le cas du clavier

  • Ecriture de scripts interactifs

  • Lecture au clavier

  • Utilisation de read

  • Affectation d’un liste de variables

Exploitation d'un fichier en sortie

  • Exploitation de la redirection

  • Ecriture avec echo dans le fichier

Lecture d'un fichier

  • Lecture d’un fichier

  • Lecture de la totalité d’un fichier dans une variable

    • Exploitation de cat

    • Exploitation de la redirection

Lecture ligne à ligne

Utilisation de

  • Boucle while

  • read

  • redirection

Les fonctions

  • Eléments de structuration de programmes

  • Pas toujours ( bien ) utilisées

  • Script souvent == programmation « sale »

  • Exploitation standard

    • Déclaration

    • Paramétrage

    • Appel

Les fonctions : déclaration et appel

Les fonctions : paramètres

  • Pas de déclaration dans le prototypage

  • Exploitation des paramètres comme pour les scripts $1 , $2 …

Travail sur les chaînes

  • Possibilité de réaliser des opérations spécifiques

    • Extraction directe

    • Modification du symbole délimiteur

  • Simplification des programmes

    • Evite l’usage d’expressions régulières

  • Attention dans le cas des séparateurs

    • Persistance de la modification

Extraction

Extraction

  • Dans un chaine

  • À partir d’un position

  • Un nombre définit de caractères

Troncature

  • Dans un chaine

  • Un nombre définit de caractères

Exemple :

Notion de séparateur

  • Définition de la variable spéciale $IFS (Internal Field Separator)

  • Utilisé pour effectuer les opérations standard de lecture

  • Valeur par défaut (configurable et dépendante du système)

    • newline

    • newline , tab , space

  • Redéfinition possible de l’IFS

    • Permet le split implicite

Exemple :

IFS et fichiers

Autour du réseau

Commandes réseau

  • Commandes respectant les protocoles réseau

  • Intégrable dans des scripts

  • Définition de l'ensemble des commandes

    • En ligne de commande

    • Dans des fichiers de configuration

  • Eléments définis

    • Adresse de destination

    • Fichier source

    • Fichier destination

    • login/motdepasse

    • ...

WGET

  • Outil lié au requêtes

    • Téléchargement

    • Test d’existence (en HTTP on utilise le verbe HEAD)

  • Permet

    • De télécharger en ligne de commande

    • D’intégrer le téléchargement dans les scripts

  • Permet «l’aspiration»

  • Exploitation des protocoles

    • FTP

    • HTTP

    • HTTPS

0

Succès

1

Erreur générique

2

Parse error

3

Erreur d'ent

4

Erreur réseau

5

Erreur d’authentification SSL

6

Erreur d’authentification

7

Erreur de protocole

8

Erreur retournée par le serveur

CURL

  • Bibliothèque de requête pour les URL

    • commande de transfert de et vers un serveur

  • Accès et création de ressource sur un serveur

    • Exploitable en environnement REST

  • Protocoles supportés : FTP(S) , HTTP(S), SMPT(S), POP(S), IMAP(S), SCP, SFTP, SMB ...

  • Conçu pour fonctionner sans inter-actions

  • Basé sur libcurl

    • intégration dans les langages de script

Utilisation HTTP

Utilisation FTP

Last updated

Was this helpful?