DATE:
====== Bash : vérifier le mode d'exécution interactif ======
Lorsque Bash est lancé en mode interactif l'option -i est précisée et la variable **PS1** est définie. Les options actives sont listées dans la varia... ** utilise la valeur de cette variable pour déterminer si l'exécution courante est interactive ou non
s cachés avec mv ======
Lors de la phase de globbing, l’interpréteur remplace les métacaractères tels que ''*'' par les noms de fichiers. Par défaut ce développement n'inclus pas les fichiers cachés :
<code bash>
# Le d... la valeur de l'option
shopt dotglob
# Activer l'inclusion des fichiers lors de la phase de globbing
syntaxe d'un fichier de script. Pour cela on peut invoquer un shell avec l'option -n (noexec) et le sc... -n monscript.sh
</code>
Le shell Bash peut être invoqué avec l'option **-x** pour activer le mode tr... ise en première ligne le shabang pour spécifier l'interpréteur à utiliser (bash) avec l'option **-x** (**xtrace**) ainsi les commandes présentes dans le script seront a
{{tag>sysadmin dev script bash recherche}}
====== Rechercher une chaîne dans un ensemble de fichiers ... le for**. Elle peut être directement tapée dans l’interpréteur bash. On récupère les fichiers dont on ... c les options **%%--%%with-filemane** et **%%--%%line-number** qui permettent de préfixer le résultat ... r et la ligne lorsqu' il y a correspondance (matching c'est a dire lorsque la chaîne recherchée est pr
DO: :TODO_DOCUPDATE:
====== bashdb ======
===== Installation =====
Sur les version récentes des dis... sé dans le gestionnaire de paquets mais on peut l'installer facilement à partir des sources.
<code bash>
apt-get install binutils
./configure
make
make check
# vérifier la valeur de umask
# valeur attendue 0022
uma
une chaîne de caractères contenant des LF ne les interprète pas, elle peut donc être utilisée pour co... résentées en colonne:
<code bash>
echo $(cat data_in_column.txt)
</code>
===== tr =====
On peut rem... s avec la commande **tr**:
<code bash>
$ cat data_in_column.txt | tr '\n' ' '
</code>
===== awk ====... de de la commande **awk**:
<code bash>
cat data_in_column.txt | awk ‘{printf(“%s “, $0)}’
</code>
=
rguments passés aux scripts.
* **getopts** est intégré a l’interpréteur **bash** (primitve).
* **getopt** est un binaire.
La gestion des options n'est pas triviale s... --long-c --long-b
</code>
Les difficultés que pointe cet exemple:
* Ordre des options/paramètres
{{tag>dev bash base conversion binaire}}
====== Changer la base d'un nombre en bash ======
L'utilita... de base. Pour cela, utiliser les variables prédéfinies **ibase** et **obase**:
<code bash>
echo "obase=10; ibase=16; a=AC; print(a);" | bc
</code>
Ici on redéfinit **ibase** à 16 pour spécifier que le nombre en entrée utilise la
{{tag>dev bash shell}}
====== Bash: Accès par indirection ======
L'accès à une valeur par indirection est possible en shell. Pour cela il faut **proc... ution de variable est abordé dans le wiki [[cours:informatique:fun_mooc:maitrise_du_bash_univ-reunion:... ubstitution on utilisera la commande **eval**. On indique au shell que le premier caractère ’$’ est à
syntaxiquement faux,
# Il conduit a un problème d'interprétation par le shell
echo 'un exemple s\'il te plaît'
</code>
Les guillemets permettent d'inhiber le développement des noms de fichiers/dossiers (globbing):
<code bash>
# Ici on utilise les guillemets p... pement des noms par le shell
# c'est la commande find qui interprete
find . -type f -iname "*.sh" -p
el (équivaut à ''man -k'').
<code bash>
apt-get install man-db manpages
</code>
Les pages du manuel sont installées sous **/usr/share/man**
<note>
Certaines pages de manuel sont contenues dans des paquets néc... ntrib** et **non-free** pour être disponibles à l'installation.
</note>
Liste des paquets contenant d
rection des entrées/sorties ======
Pour un shell interactif l'entrée standard (stdin), la sortie standard (stdout) et la sortie erreur standard (stderr) sont toutes les trois associées au terminal de l'utilisateur.
Cela peut être visualisé en ... h a également un descripteur 255 supplémentaire pointant sur le terminal de l'utilisateur.
<code bash>
spaces |
| [:lower:] | caractères en minuscules |
| [:print:] | caractères imprimables avec espaces |
... (les crochets simples ont une signification au sein des expressions rationnelles):
<code bash>
# Sélectionne les lignes avec des paquets installés man*
dpkg -l | grep -E "^ii[[:space:]]+man
{{tag>dev sysadmin bash case switch}}
====== Structure de contrôle case ======
Au sein des scripts bash, la structure de contrôle **case... pour une variable donnée.
<code bash>
case "$C" in
"1")
do_this()
;;
"2" | "3")
do_what_you_are_supposed_to_do()
;;
*)
do_nothing()
;;
esac
</code>
Une utilisation courante