Deprecated: Use of MediaWiki\Parser\ParserOutput::getText was deprecated in MediaWiki 1.42. [Called from SMW\MediaWiki\Hooks\OutputPageParserOutput::getParserOutput in /home/jltryoen/www/MediaWiki/extensions/SemanticMediaWiki/src/MediaWiki/Hooks/OutputPageParserOutput.php at line 161] in /home/jltryoen/www/MediaWiki/includes/debug/MWDebug.php on line 386
« Bash » : différence entre les versions — La FAQ de JLT

« Bash » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
 
Ligne 9 : Ligne 9 :


== Récupérer le répertoire du script courant ==
== Récupérer le répertoire du script courant ==
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
CURDIR=$(dirname $(readlink -f $0))
CURDIR=$(dirname $(readlink -f $0))
</syntaxhighlight><br>
}}<br>


== Rediriger les sorties ==
== Rediriger les sorties ==
Attention, bien mettre 2>&1 à la fin de la ligne
Attention, bien mettre 2>&1 à la fin de la ligne
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
prog > log.txt  2>&1
prog > log.txt  2>&1
</syntaxhighlight><br>
}}<br>




== Un équivalent de sprintf ==
== Un équivalent de sprintf ==
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)
file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)
</syntaxhighlight><br>
}}<br>




== Vérifier le retour d'une commande ==
== Vérifier le retour d'une commande ==
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
grep "test" test.txt
grep "test" test.txt
if [ $? -gt 0 ]; then
if [ $? -gt 0 ]; then
     echo "ERROR!"
     echo "ERROR!"
fi
fi
</syntaxhighlight><br>
}}<br>




== Debug de bash ==
== Debug de bash ==
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash
set -x
set -x
...
...
</syntaxhighlight><br>
}}<br>




== Ligne de Commande ==
== Ligne de Commande ==
=== Test du nombre d'arguments de la ligne de commande ===
=== Test du nombre d'arguments de la ligne de commande ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash
if [ $# -ne 2 ]
if [ $# -ne 2 ]
Ligne 51 : Ligne 51 :
exit
exit
fi
fi
</syntaxhighlight><br>
}}<br>




=== Récupérer les options de la ligne de commande ===
=== Récupérer les options de la ligne de commande ===
<source lang="Bash">
{{syntaxhighlight| lang=bash |code= {{#!:
#!/bin/bash
#!/bin/bash


Ligne 85 : Ligne 85 :
done
done
  shift $(($OPTIND - 1))
  shift $(($OPTIND - 1))
</source><br>
}}}}




== Fichier==
== Fichier==
===Supprimer tous les fichiers d'un répertoire à l'exception d'un fichier===
===Supprimer tous les fichiers d'un répertoire à l'exception d'un fichier===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
shopt -s extglob
shopt -s extglob
rm -rf -- !(.git)
rm -rf -- !(.git)
</syntaxhighlight><br>
}}<br>


=== Récupérer le nom et l'extension d'un fichier ===
=== Récupérer le nom et l'extension d'un fichier ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash
F=”thisfile.txt”
F=”thisfile.txt”
Ligne 103 : Ligne 103 :
echo ${F%.*}
echo ${F%.*}
thisfile
thisfile
</syntaxhighlight><br>
}}<br>




=== Tester si un fichier existe ===
=== Tester si un fichier existe ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
if [ ! -f /tmp/foo.txt ]
if [ ! -f /tmp/foo.txt ]
then
then
     echo the file does not exist
     echo the file does not exist
fi
fi
</syntaxhighlight><br>
}}<br>




=== Tester si un lien existe ===
=== Tester si un lien existe ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
if [ ! -L /tmp/foo.txt ]
if [ ! -L /tmp/foo.txt ]
then
then
     echo the link does not exist
     echo the link does not exist
fi
fi
</syntaxhighlight><br>
}}<br>




=== Ecrire en binaire dans un fichier ===
=== Ecrire en binaire dans un fichier ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code= {{#!:
#!/bin/bash
#!/bin/bash
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc  
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc  
</syntaxhighlight><br>
}}
}}




== Variables ==
== Variables ==
=== Définir la valeur par défaut ===
=== Définir la valeur par défaut ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
DIR=${1:-$tmpdir}  
DIR=${1:-$tmpdir}  
</syntaxhighlight><br>
}}<br>






=== Tester une valeur ===
=== Tester une valeur ===
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
if [ "$VAR" == "Test" ]
if [ "$VAR" == "Test" ]
then
then
     echo "var is Test"
     echo "var is Test"
fi
fi
</syntaxhighlight><br>
}}<br>




== Vérifier si une variable est vide (non affectée) ==
== Vérifier si une variable est vide (non affectée) ==
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
if [ -z "$1" ]
if [ -z "$1" ]
then
then
Ligne 157 : Ligne 158 :
echo "variable is set"
echo "variable is set"
fi
fi
</syntaxhighlight><br>
}}<br>


=== Comment récupérer une variable de nom variable ===
=== Comment récupérer une variable de nom variable ===
 
{{syntaxhighlight| lang=bash |code=
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash


Ligne 168 : Ligne 168 :
C=${!B}
C=${!B}
echo $C
echo $C
</syntaxhighlight><br>
}}<br>




== Comment lire un mot de passe ==
== Comment lire un mot de passe ==
on utilise l'option -s de read
on utilise l'option -s de read
<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash


read -s password
read -s password
</syntaxhighlight><br>
}}<br>




== Comment faire des opérations mathématiques sur des variables ==
== Comment faire des opérations mathématiques sur des variables ==


<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash


Ligne 189 : Ligne 189 :
$ C=$((A+B))
$ C=$((A+B))
$ echo $C
$ echo $C
</syntaxhighlight><br>
}}<br>




Ligne 195 : Ligne 195 :
== Comment utiliser les expressions régulières ==
== Comment utiliser les expressions régulières ==


<syntaxhighlight lang="bash">
{{syntaxhighlight| lang=bash |code=
#!/bin/bash
#!/bin/bash
if [[ $NUMBER =~ ^[0-9]+$ ]]; then
if [[ $NUMBER =~ ^[0-9]+$ ]]; then
Ligne 202 : Ligne 202 :
     echo ceci n'est pas un nombre
     echo ceci n'est pas un nombre
fi
fi
</syntaxhighlight><br>
}}<br>





Dernière version du 20 février 2025 à 10:49

langfr-290px-Gnu-bash-logo.svg.png

Le fichier .bashrc

Voir   .bashrc

Historique du bash

 98-petits-trucs-pour-configurer-l-historique-du-bash

Récupérer le répertoire du script courant

CURDIR=$(dirname $(readlink -f $0))


Rediriger les sorties

Attention, bien mettre 2>&1 à la fin de la ligne

prog > log.txt  2>&1



Un équivalent de sprintf

file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)



Vérifier le retour d'une commande

grep "test" test.txt
if [ $? -gt 0 ]; then
    echo "ERROR!"
fi



Debug de bash

#!/bin/bash
set -x
...



Ligne de Commande

Test du nombre d'arguments de la ligne de commande

#!/bin/bash
if [ $# -ne 2 ]
then	
	exit
fi



Récupérer les options de la ligne de commande

#!/bin/bash

while getopts lvxad:s:u:h opt
do
        case $opt in
                d)  DISPLAY="$OPTARG:0.0"
                        DIS_CMD="-display $DISPLAY"
                        export DISPLAY
                        ;;
                s)  SSH_CMD="ssh $OPTARG"
                        HOSTNAME=$OPTARG
                        ;;
                h)      ACTION=HELP
                        echo "help"
                        ;;
                x)  ACTION=XXREF
                        ;;
                a)  ACTION=XXREF_ALL
                        ;;
                l)  ACTION=LIST
                        ;;
                u)  USER=$OPTARG
                        echo "user:" $USER
                        ;;
                v)  opt_verbose=1
                        ;;
        esac       
done
 shift $(($OPTIND - 1))


Fichier

Supprimer tous les fichiers d'un répertoire à l'exception d'un fichier

shopt -s extglob
rm -rf -- !(.git)


Récupérer le nom et l'extension d'un fichier

#!/bin/bash
F=”thisfile.txt”
echo ${F#*.}
txt
echo ${F%.*}
thisfile



Tester si un fichier existe

if [ ! -f /tmp/foo.txt ]
then
    echo the file does not exist
fi



Tester si un lien existe

if [ ! -L /tmp/foo.txt ]
then
    echo the link does not exist
fi



Ecrire en binaire dans un fichier

#!/bin/bash
echo -n "Suspend2"| dd of=/my_hibernation_image bs=1 conv=notrunc


Variables

Définir la valeur par défaut

#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
DIR=${1:-$tmpdir}



Tester une valeur

if [ "$VAR" == "Test" ]
then
     echo "var is Test"
fi



Vérifier si une variable est vide (non affectée)

if [ -z "$1" ]
then
	echo "unset variable"
else
	echo "variable is set"	
fi


Comment récupérer une variable de nom variable

#!/bin/bash

A="abcd dcba"
B=A
C=${!B}
echo $C



Comment lire un mot de passe

on utilise l'option -s de read

#!/bin/bash

read -s password



Comment faire des opérations mathématiques sur des variables

#!/bin/bash

$ A=2
$ B=3
$ C=$((A+B))
$ echo $C



Comment utiliser les expressions régulières

#!/bin/bash
if [[ $NUMBER =~ ^[0-9]+$ ]]; then
    echo ceci est un nombre
else
    echo ceci n'est pas un nombre
fi



Liens externes