Table des matières

Mon mémento sur Bash

J'utilise cette page comme pense-bête sur la programmation Bash. J'y note mes trouvailles, astuces et autres petits bouts de scripts. C'est avant tout un aide-mémoire qu'autre chose. Mais si cela peut aider d'autres personnes, c'est bien aussi.

L'ensemble des commandes qui seront présentées ci-dessous ont été réalisées sur des systèmes Debian/Ubuntu.

Je compléterai cette page au fur et à mesure, n'hésitez pas à passer régulièrement sur cette page.

Compter le nombre de lignes d'un fichier

Pour compter le nombre de lignes d'un fichier, il y a plusieurs méthodes :

wc -l nom_fichier

Cela affiche le nombre de ligne mais aussi le nom du fichier.

cat nom_fichier | wc -l

Ici nous avons le résultat souhaité.

Autre méthode

sed -n '$=' nom_fichier
</bash>
 
ou encore
<code bash>
awk 'END {print NR}' nom_fichier

peut aussi faire l'affaire.

Récupérer dans une variable le code retour d'une commande

Le code de retour d'une commande est un mécanisme fourni par le shell Linux. Il signale à l'utilisateur si l'exécution de la commande s'est déroulée correctement ou bien s'il y a eu un problème. Le code de retour est un entier compris entre 0 et 255.

Par convention, un code retour égal à 0 signifie que l'exécution de la commande s'est déroulé sans rencontrer d'erreur.

Nous allons voir comment récupérer ce code erreur et l'insérer dans une variable pour un traitement ultérieur. Dans notre exemple, nous allons vérifier si le service fail2ban a bien démarré.

#!/bin/bash
service fail2ban status > /dev/null   
resultat=$?     // Nous utilisons le caractère spécial
echo ${resultat}

Explication du code :

Une autre méthode fonctionnant sous Debian 9 :

systemctl status fail2ban.service 1>/dev/null 2>&1; resultat=$?
echo ${sresultat}

Les deux exemples ci-dessus afficheront 0 si fail2ban fonctionne. Et 3 si fail2ban est à l'arrêt.

Notes de version

Auteurs et sources

Autres liens rapides pouvant vous intéresser