Résumé des commandes bash

13 novembre 2020

Voici un résumé des commandes bash

CommandeDescriptionExample
ECHO

ECHO.

@ECHO texte

@ECHO [ON|OFF]
Affiche un message à l'écran:

Affiche une ligne vide

N'affiche pas la commande à l'écran, seulement le résultat.

Active ou désactive l'affichage des commandes à l'écran.
Note: Cette commande n'a pas d'effet sur l'affichage que produira une commande.
ECHO Bonjour le monde!

ECHO.

@ECHO Hello Wolrd!


ECHO OFF
@ECHO OFF
REM ou ::En début de ligne, permet de documenter le code source.REM Projet réalisé par moi.
REM ---------------------
:: Ceci est un autre commentaire
PAUSEInsérer une pause dans l'exécution d'un script batch.

Il faut appuyer sur une touche pour continuer.
Echo.
PAUSE
Echo suite du programme.
cmd.exe /c chcp 65001Activer un jeu de caractères étendus ce qui permet d'afficher correctement les caractères accentués des messages d'un fichier batch.
%1..%9Variables qui contiennent les paramètres passés au fichier batch.





Note: Il est possible d'itérer les paramètres reçus grace à l'instruction FOR:

REM Voir instruction FOR
FOR %%A IN (%*) DO (
echo -------------------------------
echo contenu = %%A
)
Si 'tp.bat' contient
echo %1 chèr(e) %2

Alors

c:>tp Allo Bob

va afficher

Allo cher(e) Bob
-------

%1 = Allo
%2 = Bob

tp.bat "Allo Bob"
%1 = Allo Bob
%0Variable qui contient le nom du fichier batchtp.bat Allo Bob

%0 = tp.bat
SET variable=

















SET /p variable=
Définir une variable dans un script.

Note: Il ne faut insérer d'espaces entre la variable et l'affectation.

Par exemple,
SET a = 99. n'est pas valide!

À l'utilisation de la variable, il faut délimiter le nom avec le caractère %.

L’option /A spécifie que la chaîne à droite du signe égal est une
expression numérique qui est évaluée.

Par exemple,

SET /A i=0
SET /A i+=1


Créer une variable à partir d'une saisie clavier.
SET secret=password







echo %secret%
if %1==%secret% echo ...







SET /p option=Option menu (1,2,3,99)?

IFLance l’exécution conditionnelle dans un programme de commandes.

IF [NOT] ERRORLEVEL nombre commande
IF [NOT] chaîne1==chaîne2 commande
IF [NOT] EXIST nom_de_fichier commande
IF condition (commande) ELSE commande

** La clause ELSE doit être sur la même ligne que la commande suivant IF. Par
exemple:

EQU - égal à
NEQ - différent de
LSS - inférieur à
LEQ - inférieur ou égal à
GTR - supérieur à
GEQ - supérieur ou égal à



IF EXIST nomfichier (del nomfichier) ELSE echo nomfichier introuvable

IF %ERRORLEVEL% LEQ 1 goto okay


NOTE: Pour avoir de l'aide sur la commande IF; c:>IF /?
IF "coucou" EQU "coucou" ECHO oui!

if 123 LSS 99 (echo 123 plus petit que 99) ELSE echo 99 plus petit que 123

if %1 LSS %2 (echo %1 plus petit que %2) ELSE echo %2 plus petit que %1

login.bat ->
@echo off
SET secret=password
SET msg=Mot de passe
if %1==%secret% (
echo %msg% valide
) else (
echo %msg% Invalide
)

IF EXIST tp.bat ECHO le fichier tp est présent dans le dossier.
FORExécute une boucle sur un ensemble de valeurs.

Dans un fichier .BAT:

FOR %%variable IN (ensemble) DO commande [paramètres]

%variable Spécifie un paramètre remplaçable par une seule lettre.
(ensemble) Ensemble de fichiers. Caractères génériques autorisés.
commande Commande à exécuter pour chaque fichier.
paramètres Liste des paramètres ou des options pour la commande spécifiée.

À partir de l'invite:

FOR %variable IN (ensemble) DO commande [paramètres]
EXEMPLE 1

test.bat
@echo off
for %%f in (*.bat) do (
echo voici le contenu du fichier: %%f
type %%f
echo ---------------------------
echo.
pause
)

================================
EXEMPLE 2
for %%f in (allo mon coco) do (
echo %%f
)

================================
EXEMPLE 3
ECHO Voici la liste des paramètres reçus:
SET /A compteur=0
setlocal ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
echo param !compteur! = %%A
SET /A compteur=compteur+1
)



CALLExécute un script à partir d'un autre script.

Il est possible de sortir d'un script après une condition donnée:

IF ... EXIT [/B] [exitCode]

Le exitCode peut-être testé avec:

IF %ERRORLEVEL% LEQ 1 CALL :ERREUR

...

:ERREUR
CALL afficher.bat "Bonjour le monde"

-------
Fichier afficher.bat:
echo ---------------------------
echo %1
echo ---------------------------
EXIT 0
FINDRecherche une chaîne de texte dans un ou des fichiers.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "chaîne" [[lecteur:]
[chemin]nom_de_fichier[ ...]]

/V Affiche toutes les lignes ne contenant pas la chaîne spécifiée.
/C Affiche seulement le nombre de lignes contenant la chaîne.
/N Affiche les numéros de ligne avec les lignes affichées.
/I Ignore la casse lors de la recherche de la chaîne.
/OFF[LINE] Ne pas ignorer les fichiers dont l’attribut hors connexion a été réglé.
"chaîne" Spécifie la chaîne de texte à trouver.
[lecteur:][chemin]nom_de_fichier
Spécifie un ou des fichiers pour la recherche.

Sans nom de chemin, FIND recherche le texte entré à l’invite ou redirigé
depuis une autre commande.

NOTE: Find retourne la valeur 0 si trouvé ou 1 si pas trouvé. Il est possible de tester la valeur avec 'if errorlevel n'
FIND /i "Elvis" MesAmis.txt

DIR *.bat | FIND /i "tp.bat"

===================

@echo off
find /C /I "%1" MesAmis.txt > nul
if errorlevel 1 goto pasami
echo %1 est mon ami
echo.
goto fin
:pasami
echo %1 n'est pas mon ami echo.
:fin pause

Exemples de fichiers bash

Afficher les caractères étendus francophones

Avant de tester les exemples, charger les caractères étendus francophones en tapant la commande suivante à l’invite du CLI.

cmd.exe /c chcp 65001

Exemple 1 – Afficher un message et commentaires

@ECHO off
REM Fichier: Ex02.bat
REM Auteur:
REM Date:
:: --------------------------------------------
:: Description: Afficher un message à l'écran
:: ECHO OFF permet de masquer les commandes qui vont être exécutées par la suite
:: le @ permet de masquer cette même commande
:: cls permet d'effacer l'écran
:: --------------------------------------------
CLS
REM echo affiche le message bonjour
ECHO bonjour
REM echo suivi d'un point permet d'insérer une ligne vierge echo.
ECHO.
rem affiche la suite du message
ECHO tout le monde !

Exemple 2 – Traiter les paramètres %0..%9

@ECHO OFF
REM Fichier: Ex02.bat
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description
REM --------------------------------------------
ECHO Bonjour %1!

Exemple 3 – Tester une condition,  la commande IF

@ECHO OFF
REM Fichier: Ex03.bat
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description: Tester une condition avec IF
REM Note: if /? à l'invite pour de l'aide
REM --------------------------------------------
IF %1 LSS %2 (echo %1 est plus petit que %2) ELSE (echo %1 est plus grand que %2)

Exemple 4 – Boucle FOR sur les fichiers

@ECHO OFF
REM Fichier: Ex04.bat
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description: Boucler sur des fichiers
REM Note: FOR /? à l'invite pour de l'aide
REM --------------------------------------------
for %%f in (*.bat) do (
  echo voici le contenu du fichier: %%f
  type %%f
  echo --------------------------------
  echo.
  pause
)

Exemple 4a – Boucle FOR sur un ensemble

:: Fichier: Ex04a.bat
:: Auteur:
:: Date:
:: --------------------------------------------
:: Description: Boucler sur un ensemble
:: Note: FOR /? à l'invite pour de l'aide
:: --------------------------------------------
@ECHO OFF
for %%f in (allo mon coco) do (
        echo %%f
)

Exemple 4b – Boucle FOR sur les paramètres

:: Fichier: Ex04b.bat
:: Auteur:
:: Date:
:: --------------------------------------------
:: Description: Boucler sur les paramètres
:: Note: FOR /? à l'invite pour de l'aide
:: --------------------------------------------
@ECHO OFF
ECHO Voici la liste des paramètres reçus:
SET /A compteur=1
setlocal ENABLEDELAYEDEXPANSION
FOR %%A IN (%*) DO (
      echo param !compteur! = %%A
      SET /A compteur=compteur+1
)

Exemple 5 – Boucle et concaténation

@ECHO OFF
REM Fichier: Ex04b.bat
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description: Concaténation de fichiers
REM Note: FOR /? à l'invite pour de l'aide
REM --------------------------------------------
echo.
for %%a in (*.bat) do type %%a >> batch.txt
echo Voici le resultat du fichier batch.txt
pause
ECHO ============================================
type batch.txt
ECHO ============================================
pause
CLS

Exemple 6 – La commande CALL

@ECHO OFF
REM Fichier: Ex04b.bat
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description: Concaténation de fichiers
REM Note: FOR /? à l'invite pour de l'aide
REM --------------------------------------------
echo Utilisation de la commande call
echo.
rem On utilisera Ex02.bat, celui avec plusieurs paramètres
call Ex02.bat %1 %2
echo.
echo Retour au script principal !
echo.
pause

Exemple 07 – Les commandes FIND, GOTO et EXIT

Instruction de branchements: GOTO
Fichier b.bat

:: Fichier b.bat
@Echo off
Echo Ceci est la ligne 1
GOTO ligne3
:: La commande suivante ne sera pas exécutée!!
Echo Ceci est la ligne 2
:ligne3
Echo Ceci est la ligne 3

Instruction pour quitter un BATCH avec un code d’erreur: EXIT /B code
Fichier err.bat

:: Fichier err.bat
@ECHO off
if NOT 1==2 EXIT /B 99

Créer un fichier MesAmis.txt avec le contenu suivant:

John
Claire
Gabriel
Stephane
Madeleine
Sylvain
Garry
Daniel
Martine

Tester la commande FIND

find /i "garry" MesAmis.txt
type MesAmis.txt | find /i "garry"
type MesAmis.txt | find /i /c "garry"
echo %errorlevel%

Fichier ex07.bat

@echo off
cmd.exe /c chcp 65001
cls
echo -------------------------------------------------------
echo   Utilisation de la commande find
echo -------------------------------------------------------
echo   Exemple 1
echo.
echo   Recherche d'une chaîne de caractères dans un fichier
echo   avec l'option /i pour ignorer la casse.
echo   C:^\^> find /i "garry" MesAmis.txt
echo -------------------------------------------------------
find /i "garry" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 2
echo.
echo   Recherche sans l'option i
echo   C:^\^> find "garry" MesAmis.txt
echo -------------------------------------------------------
find "garry" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 3
echo.
echo   Afficher toutes les lignes qui ne contiennent
echo   pas la chaine de caractères spécifiée
echo   C:^\^> find /v "Claire" MesAmis.txt
echo -------------------------------------------------------
find /v "Claire" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 4
echo.
echo   Afficher toutes les lignes qui contiennent "iel"
echo   C:^\^> find "iel" MesAmis.txt
echo -------------------------------------------------------
find "iel" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 5
echo.
echo   Afficher toutes les lignes qui contiennent "iel",
echo   prédédées par le numéro de la ligne
echo   C:^\^> find /n "iel" MesAmis.txt
echo -------------------------------------------------------
find /n "iel" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 6
echo.
echo   Compter le nombre de lignes qui contiennent "iel"
echo   C:^\^> find /c "iel" MesAmis.txt
echo -------------------------------------------------------
find /c "iel" MesAmis.txt
pause
cls
echo -------------------------------------------------------
echo   Exemple 7
echo.
echo   Utilisation de tube ou pipe
echo   C:^\^> type MesAmis.txt ^| find /i "garry"
echo -------------------------------------------------------
type MesAmis.txt | find /i "garry"
pause
cls
echo -------------------------------------------------------
echo   Exemple 8
echo.
echo   Utilisation de tube ou pipe
echo   C:^\^> type MesAmis.txt ^| find /i /c "iel"
echo -------------------------------------------------------
type MesAmis.txt | find /i /c "iel"
echo.
Echo FIN de l'application

Fichier ex07a.bat

@echo off
:: Fichier : Ex07a.bat
:: Fonction : Utilisation de la commande FIND
echo Utilisation de FIND
echo.
find /C /I "%1" MesAmis.txt > nul
if errorlevel 1 goto pasami
echo %1 est mon ami
echo.
goto fin
:pasami
echo %1 n'est pas mon ami
echo.
:fin
pause

08 – Renseigner une variable à partir d’un saisie clavier

Fichier login.bat

:: Fichier login.bat
@ECHO off
CLS
SET /P motPasse=Entrez le mot de passe:
IF NOT %motPasse%==secret goto erreur
ECHO.
ECHO Succès, le mot de passe est valide.
EXIT /B 0
:erreur
Echo ERR - Le mot de passe est invalide!!!
EXIT /B 2

Fichier ex08.bat

@echo off
rem Fichier: Ex08.bat
rem Fonctions:
rem - Affiche un menu avec 4 choix
rem - Utilisation de la commande SET /p
rem - Appels d’autres scripts batch
rem Le echo off cache les commandes exécutées et le '@' cache le echo off comme tel
rem point d'ancrage avant le menu
:boucle
rem Efface la fenêtre de commande pour afficher le menu en haut de l'écran
cls
echo Bienvenue au menu principal!
echo.
echo Veuillez effectuer un choix parmi les suivants:
echo 1. Option A
echo 2. Option B
echo 3. Option C
echo 4. Option D (sortie)
rem initialise la variable choix
set choix=null
rem Affiche Votre choix: (grâce au /P) et attend une entrée de l'utilisateur
rem qui sera, par la suite, assignée à la variable choix.
set /p choix=Qu'est-ce que vous choisissez (1/2/3/4)?
rem Condition qui teste si la variable choix est égal à 4. Si c'est le cas, le
rem programme saute au point d'ancrage :fin, ce qui termine l'exécution.
if %choix% == 4 goto fin
rem Les 3 prochains "if" s'exécutent si la variable choix est égale à leur valeur
rem (1,2 ou 3) et appellent le fichier .bat qui correspond à leur choix (voir menu).
if %choix% == 1 CALL OptionA.bat
if %choix% == 2 CALL OptionB.bat
if %choix% == 3 CALL OptionC.bat
echo.
pause
rem Saut à l'ancrage :boucle pour réafficher le menu après l'exécution d'un choix
goto boucle
:fin
echo Au revoir!
-----------------------------------------
@echo off
rem Fichier: OptionC.bat
rem Auteur: Enseignant Ordinateurs et systèmes d'exploitation
rem Fonction: Affiche un message
cls
echo.
echo Option C choisie
echo.

Exemple 09 – La commande SORT

Créer le fichier fruits.txt avec le contenu suivant:

banane
orange
Pomme
abricot
%%banane
Abricot
ORANGE
@echo off
rem Fichier: Ex09.bat
rem Fonction: Trier le contenu d’un fichier dans l’ordre croissant ou décroissant
rem selon le choix de l’utilisateur
:: ------------------------------------------
cmd.exe /c chcp 65001
cls
echo.
set /p ordre= Est ce que vous voulez trier dans l'ordre [c]roissant ou [d]écroissant?
if %ordre% == c goto tri
if %ordre% == d goto tri
goto erreurSaisie
:tri
set /p chemin=Donnez le chemin du fichier à trier:
if not exist %chemin% goto erreurFichier
echo.
echo Le nom du fichier à trier est:  %chemin%
if %ordre%==c sort %chemin% > fruitsC.txt
if %ordre%==d sort /r %chemin% > fruitsD.txt
:: Tester le code de retour de la commande SORT
if %errorlevel 0 echo le fichier a été trié sans problème
:fin
:: Le programme s'est terminé de façon normale.
:: Retourne la valeur 0 dans errorlevel
exit /B 0
:erreurSaisie
echo ERR 1: Choix de tri invalide!
:: Retourne la valeur 1 dans errorlevel
exit /B 1
:erreurFichier
echo ERR 2: Fichier non trouvé!
:: Retourne la valeur 2 dans errorlevel
exit /B 2

Menu.bat – Afficher un menu

@echo off
REM Fichier: MENU.BAT
REM Auteur:
REM Date:
REM --------------------------------------------
REM Description
REM --------------------------------------------
:debut
:: Fond d'écran bleu, caractères blancs
color 1F
cls
echo  ┌──────────────────────────┐
echo  │     Menu principal       │
echo  │                          │
echo  │ (A)fficher le répertoire │
echo  │ (D)ate du système        │
echo  │ (T)trier un fichier      │
echo  │ (C)Créer un répertoire   │
echo  │ (Q)uitter le menu        │
echo  └──────────────────────────┘
echo.
set option=null
set /p option=Option (A/D/T/Q)?
if /i %option%==q goto quitter
if /i %option%==a DIR /P
if /i %option%==d DATE
if /i %option%==t CALL trier.bat
if /i %option%==c CALL creerRep.bat
echo.
pause
goto debut
:quitter

Fichier creerRep.bat

:: Fichier creerRep.bat
@echo off
CLS
SET /P nom=Entrez le nom du répertoire à créer:
md %nom%