Cours

Linux Leçon 3

Lire et chercher

Afficher un fichier, suivre un journal en direct, chercher un mot et enchaîner les commandes.

20 min

À la fin de cette leçon, tu sauras

  • Afficher un fichier avec cat, less, head et tail
  • Chercher un texte avec grep
  • Enchaîner des commandes avec le tube |

Afficher un fichier

cat notes.txt               # affiche tout le fichier
less /var/log/syslog        # affiche page par page (q pour quitter, / pour chercher)
head -n 20 fichier.log      # les 20 premières lignes
tail -n 50 fichier.log      # les 50 dernières lignes
tail -f fichier.log         # suit le fichier en direct (Ctrl+C pour arrêter)

tail -f est très utile sur un serveur : tu vois les nouvelles lignes du journal arriver pendant que tu testes ton site.

Chercher avec grep

grep "erreur" app.log             # les lignes qui contiennent « erreur »
grep -i "erreur" app.log          # sans tenir compte des majuscules
grep -r "mot_de_passe" projet/    # dans tous les fichiers d'un dossier
grep -n "TODO" index.php          # avec le numéro de ligne

Le tube | et les redirections

Le tube | envoie le résultat d'une commande à la suivante. On construit ainsi des commandes puissantes avec de petites briques.

cat app.log | grep "404" | wc -l        # compte les lignes qui contiennent 404
ls -la | grep ".html"                    # les fichiers HTML du dossier

echo "Bonjour" > message.txt             # écrit dans le fichier (l'écrase)
echo "Encore" >> message.txt             # ajoute à la fin du fichier

wc -l compte les lignes. > redirige vers un fichier en le remplaçant, >> ajoute à la fin.

Attention : > écrase le fichier sans prévenir. Pour ajouter, c'est >>.

À toi de jouer

Ton site plante. Le journal est dans /var/log/site.log. Tape dans le terminal les commandes pour :

  1. afficher les 30 dernières lignes du journal ;
  2. afficher seulement les lignes qui contiennent « error », sans tenir compte des majuscules ;
  3. compter ces lignes en enchaînant grep et wc -l avec un tube.
eleve@cours: ~
  • tail affiche les 30 dernières lignes
  • grep -i cherche « error »
  • Un tube envoie le résultat à wc -l
Bloqué ? Voir une solution
tail -n 30 /var/log/site.log
grep -i "error" /var/log/site.log
grep -i "error" /var/log/site.log | wc -l

Quiz

1Quelle commande suit un journal en direct ?
2Que fait le symbole | ?
3Que se passe-t-il avec echo "test" > notes.txt si le fichier existe déjà ?