====== 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. {{ :tutoriel-bash-shell-linux:bash-wide.jpg?400 |}} ===== 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 ou encore 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 : * Nous récupérons le statut du service //fail2ban//, avec la commande **service**.// /dev/null //permet de ne pas afficher le résultat de la commande. * Le paramètre spécial ? du shell contient le code de retour de la dernière commande exécutée. Ici nous mettons ce dode retour dans la variable //resultat//. * Nous affichons le contenu de la variable //resultat// avec la commande **echo**. 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 ===== * [10/06/2018] : Article initial * [20/06/2018] : Ajout de "Récupérer dans une variable le code retour d'une commande" ===== Auteurs et sources ===== * Auteur : [[:user:montuy337513]] ===== Navigation ===== * [[:accueil|Accueil]] * [[:gestion-site-internet]] * [[:tutoriel-javascript]] * [[:tutoriel-html]] * [[:tutoriel-php-mysql]] * [[:tutoriel-referencement-seo]]