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?