Tubes et redirection sous Linux : traiter du texte

Apprends à manipuler du texte en ligne de commande sous Linux. Consulte des fichiers avec cat, less, head et tail, envoie les sorties et les messages d’erreur dans des fichiers et enchaîne de petites commandes dans des pipelines qui comptent, trient et extraient du texte. Effectue des recherches dans les fichiers avec grep et les expressions régulières, trouve des fichiers selon leur nom, leur taille et leur ancienneté, et modifie des fichiers de configuration dans les éditeurs de terminal nano et vi.

DébutantUnité 3 sur 7 de la formation Formation : Linux : ligne de commande, scripts shell et administration

Ce que tu vas apprendre

  1. Affiche les fichiers courts en entier, parcours les fichiers longs page par page et affiche seulement les premières ou les dernières lignes d’un fichier.
    • Affiche des fichiers et parcours-les page par page avec cat et less
      Affiche les fichiers courts avec cat, lis les fichiers longs écran par écran avec less, et déplace-toi et effectue des recherches dans less.
    • Affiche les premières ou les dernières lignes avec head et tail
      Utilise head et tail pour afficher le début ou la fin d’un fichier, ignorer une ligne d’en-tête, extraire une plage de lignes et suivre un fichier journal qui s’allonge.
  2. Explique les trois flux standard d’une commande et redirige les entrées, les sorties et les messages d’erreur depuis ou vers des fichiers.
    • Comprends l’entrée standard, la sortie standard et la sortie d’erreur standard
      Décris les trois flux standard, explique pourquoi les sorties et les erreurs sont séparées et comment une commande peut lire son entrée depuis un fichier plutôt que depuis le clavier.
    • Redirige les sorties et les erreurs vers des fichiers
      Enregistre les sorties et les messages d’erreur dans des fichiers en écrasant leur contenu ou en ajoutant à leur fin, regroupe ou élimine des flux et évite de détruire un fichier en y redirigeant une sortie.
  3. Relie de petites commandes par des tubes pour compter, trier, dédoublonner et extraire du texte, et répondre à des questions sur les données en une seule ligne de commande.
    • Relie des commandes avec des tubes et tee
      Utilise un tube pour transmettre la sortie d’une commande à la suivante, construis et vérifie un pipeline étape par étape et enregistre une copie en cours de route avec tee.
    • Compte et trie les lignes, puis supprime les doublons
      Compte les lignes, les mots et les octets avec wc, trie les lignes par ordre alphabétique, numérique ou selon un champ avec sort, et supprime ou compte les doublons avec uniq.
    • Extrais des colonnes avec cut
      Sélectionne des champs dans du texte délimité et des caractères à des positions fixes avec cut, puis utilise cette commande dans des pipelines pour répondre à des questions sur les données.
  4. Trouve des lignes dans des fichiers avec grep et décris précisément le texte recherché avec des expressions régulières de base et étendues.
    • Recherche du texte dans les fichiers avec grep et ses principales options
      Utilise grep pour afficher, compter ou numéroter les lignes correspondantes, ou inverser la sélection, effectue des recherches dans des répertoires entiers et choisis entre une recherche par motif et une recherche de texte littéral.
    • Écris des expressions régulières de base
      Construis des motifs avec des caractères littéraux, le point, des ancres, des expressions entre crochets et l’astérisque, et évite de les confondre avec les caractères génériques de noms de fichiers.
    • Utilise des expressions régulières étendues avec grep -E
      Utilise les opérateurs ?, +, { }, | et ( ) avec grep -E pour trouver du texte facultatif, répété ou parmi plusieurs possibilités, et affiche seulement les parties correspondantes.
  5. Trouve des fichiers dans toute l’arborescence avec find et locate, et exécute des commandes sur les fichiers trouvés.
    • Effectue des recherches dans l’arborescence avec find
      Utilise find avec des tests sur le nom, le type, la taille et la date, combine les tests et évite les problèmes de protection des caractères et de droits que rencontrent les débutants.
    • Agis sur les fichiers trouvés et utilise des recherches plus rapides
      Exécute des commandes sur chaque fichier renvoyé par find, supprime les éléments correspondants en toute sécurité et sache quand locate ou which est l’outil le plus rapide.
  6. Ouvre, modifie, enregistre et ferme des fichiers texte dans les deux éditeurs de terminal présents sur la plupart des systèmes Linux : nano, simple, et vi, modal.
    • Modifie et enregistre un fichier avec nano
      Ouvre un fichier dans nano, saisis et modifie du texte, effectue des recherches et des remplacements, coupe et colle des lignes, puis enregistre et quitte correctement.
    • Utilise les différents modes de vi
      Passe des modes normal, insertion et ligne de commande de vi à l’un ou l’autre, déplace-toi et modifie le texte avec des commandes à une touche, puis enregistre ou quitte sans perdre ton travail.

Tubes et redirection sous Linux : cours

6 chapitres

1

Consulte des fichiers depuis le terminal

Un fichier texte peut contenir quelques notes ou des milliers de paramètres. Choisis un affichage adapté à tes besoins : le fichier entier, un écran dans lequel te déplacer ou une petite partie près de l’une des extrémités. Tu apprendras à te déplacer et à chercher sans modifier le fichier, à sélectionner une plage exacte de lignes et à observer l’arrivée de texte dans un fichier qui s’allonge. Ces commandes de consultation acceptent aussi la sortie d’autres commandes : les mêmes compétences t’aideront donc à examiner une longue liste de répertoire ou les résultats d’un pipeline.

1.1 Affiche des fichiers et parcours-les page par page avec cat et less

Les fichiers courts sont faciles à afficher. Les fichiers longs sont plus faciles à lire lorsque l’affichage attend ton intervention. Ni cat ni la vue de lecture normale de less ne modifient le fichier.

Afficher ou réunir du texte avec cat

cat notes.txt envoie le fichier entier vers la sortie standard, normalement ton terminal. Son nom vient de concatenate : avec plusieurs noms de fichiers, il affiche leur contenu dans l’ordre indiqué. Il n’insère pas d’en-tête entre les fichiers.

Supposons que a.txt contient les lignes « a » et « b », et que b.txt contient « c d ». Exécute :

cat -n a.txt b.txt

Tu vois trois lignes numérotées. La numérotation se poursuit d’un fichier à l’autre ; -n numérote la sortie, pas les fichiers enregistrés. Pour enregistrer le texte réuni, utilise cat a.txt b.txt > ab.txt. Le nouveau fichier contient les trois lignes d’origine sans numérotation. Ajouter -n enregistrerait aussi les numéros.

L’affichage d’un grand fichier peut pousser son début hors de la partie visible de l’écran. Un pageur te laisse contrôler l’affichage. less /etc/services ouvre un long fichier texte et en affiche un écran. Il peut afficher le premier écran avant d’avoir lu tout le fichier, ce qui est utile pour les fichiers volumineux.

Se déplacer dans less

L’invite de commande est masquée pendant l’exécution de less. Le programme attend une touche de navigation :

ToucheAction
Espace ou fAvancer d’un écran
bReculer d’un écran
Flèche bas, Entrée ou jDescendre d’une ligne
Flèche haut ou kRemonter d’une ligne
g / GAller à la première / dernière ligne
h / qAfficher l’aide / quitter

La casse compte : g et G vont aux extrémités opposées. Pour terminer la lecture, appuie sur q ; attendre une nouvelle invite sans quitter peut donner l’impression que le pageur est bloqué.

Rechercher dans le texte affiché

Saisis /, entre un mot et appuie sur Entrée pour chercher vers l’avant. Par exemple, /ssh trouve le texte correspondant suivant. Saisis ?ssh puis Entrée pour chercher vers l’arrière. Ensuite, n répète la recherche dans son sens actuel, tandis que N cherche dans le sens opposé. Après une recherche vers l’arrière, n continue donc vers l’arrière.

La recherche utilise une expression régulière. /^# trouve une ligne commençant par « # », car ^ marque le début d’une ligne. Tu peux apprendre séparément les règles des motifs tout en utilisant dès maintenant des mots simples.

less -N notes.txt ajoute les numéros de ligne à l’affichage. Pour les enregistrements larges, less -S notes.txt garde une ligne longue sur une seule ligne d’écran en coupant sa partie droite visible ; les flèches gauche et droite permettent de se déplacer horizontalement. Le texte reste dans le fichier. Sans -S, les lignes longues se poursuivent sur d’autres lignes d’écran. more est un pageur plus ancien qui offre moins de possibilités de navigation.

Parcourir la sortie d’une autre commande

ls -l /usr/bin | less te permet de parcourir la longue liste. Le tube transmet la liste au pageur. Pour un fichier existant, less notes.txt l’ouvre directement ; cat notes.txt | less ajoute une commande pour obtenir le même affichage.

Utilise ces commandes sur du texte. L’affichage d’un programme binaire comme /bin/ls peut montrer des caractères de contrôle et brouiller le terminal. Si cela se produit, saisis reset et appuie sur Entrée pour rétablir l’affichage.

Points clés

  • cat affiche les fichiers dans l’ordre fourni ; -n numérote la sortie combinée.
  • less affiche le texte page par page sans le modifier ; q revient au shell.
  • Dans less, / cherche vers l’avant, ? vers l’arrière et n répète la recherche dans le sens actuel.
  • less -N affiche les numéros de ligne ; less -S permet de faire défiler les lignes larges horizontalement.

1.2 Affiche les premières ou les dernières lignes avec head et tail

Lorsque tu n’as besoin que des premières ou des dernières entrées d’un fichier, tout afficher masque la partie utile. head sélectionne le début et tail la fin. Tous deux affichent 10 lignes par défaut.

Choisir un nombre de lignes

Si numbers.txt contient les nombres de 1 à 100, un par ligne, head numbers.txt affiche de 1 à 10, tandis que tail numbers.txt affiche de 91 à 100. Utilise -n pour changer le nombre :

head -n 3 numbers.txt
tail -n 3 numbers.txt

La première commande affiche 1, 2, 3. La seconde affiche 98, 99, 100. Si un fichier contient moins de lignes que demandé, la commande affiche celles qui sont disponibles.

head -c 5 sélectionne cinq octets au lieu de cinq lignes. Pour un texte qui commence par « banana », il affiche « banan ». Les octets sont des unités de stockage ; en UTF-8, un caractère peut occuper plus d’un octet, donc un nombre d’octets ne correspond pas toujours à un nombre de caractères.

Lire correctement une position de départ

Un signe plus change le sens de tail -n. Compare :

CommandeSignification
tail -n 2 fileAfficher les deux dernières lignes
tail -n +2 fileAfficher de la ligne 2 jusqu’à la fin

tail -n +2 scores.csv retire la première ligne, ce qui est utile lorsqu’elle contient des en-têtes de colonnes. Il ne sélectionne pas seulement la deuxième ligne. Sur le fichier numéroté, tail -n +98 numbers.txt affiche de 98 à 100.

La version GNU de head accepte aussi un nombre négatif : head -n -97 numbers.txt omet les 97 dernières lignes et laisse de 1 à 3. Le signe fait partie du nombre et de l’instruction.

Sélectionner une plage au milieu

Pour afficher les lignes 11 à 20, conserve d’abord tout jusqu’à la ligne 20. Puis conserve les 10 dernières lignes de cette sélection :

head -n 20 numbers.txt | tail -n 10

Après head, les données vont de 1 à 20. Les dix dernières lignes vont de 11 à 20. Une plage qui inclut ses deux extrémités contient un nombre de lignes égal au numéro de fin moins le numéro de début plus un ; ce dernier un tient compte de l’inclusion des deux extrémités. Utiliser tail -n 11 inclurait aussi la ligne 10.

Les deux commandes peuvent lire un tube lorsqu’aucun fichier d’entrée n’est indiqué. ls /etc | head -n 5 limite une liste à ses cinq premiers noms. Avec ls -lt | head -n 4, rappelle-toi que la première ligne de sortie est la ligne « total » : seules trois entrées la suivent.

Observer un fichier qui s’allonge

tail -f /var/log/app.log affiche d’abord les dernières lignes, puis attend et affiche le texte ajouté au fichier. Utilise cette commande pendant qu’un programme écrit de nouvelles entrées. Appuie sur Ctrl+C pour arrêter le suivi et revenir au shell. Cette attente est voulue ; elle diffère de la sortie unique et achevée de tail utilisé seul.

tail -F réessaie aussi et continue à suivre le nom du fichier lorsqu’un journal est supprimé puis recréé lors d’une rotation. Avec plusieurs fichiers d’entrée, head et tail indiquent la sortie de chaque fichier par un en-tête tel que « ==> fruit.txt <== ». Ajoute -q lorsque tu as besoin du texte sélectionné sans ces en-têtes.

Points clés

  • head et tail affichent 10 lignes par défaut ; -n définit le nombre de lignes.
  • tail -n +K commence à la ligne K ; cela ne signifie pas les K dernières lignes.
  • Pour une plage incluant ses deux extrémités, conserve d’abord autant de lignes que le numéro de la ligne de fin, puis les dernières lignes correspondant à la longueur de la plage.
  • tail -f suit le texte ajouté ; Ctrl+C arrête le suivi.
  • tail -F suit un nom de fichier malgré son remplacement, et -q supprime les en-têtes lors du traitement de plusieurs fichiers.
2

Contrôle la provenance des entrées et la destination des sorties et des erreurs

Une commande peut produire des résultats utiles et des messages d’erreur au cours d’une même exécution. Linux leur donne des voies distinctes, en plus d’une voie pour l’entrée. Le shell peut relier chaque voie à un fichier avant le démarrage de la commande. Comprendre ces connexions te permet d’enregistrer un rapport, de garder les erreurs dans un fichier séparé et de fournir des données sans les saisir. L’ordre des redirections compte, et un fichier de sortie peut être vidé avant que le programme ne lise son entrée.

2.1 Comprends l’entrée standard, la sortie standard et la sortie d’erreur standard

Une commande communique par des flux standard. Considérer l’entrée et la sortie comme des voies distinctes permet de comprendre comment un même programme peut lire le clavier, lire un fichier ou recevoir la sortie d’une autre commande.

Identifier les trois flux

Un descripteur de fichier est le numéro utilisé pour identifier un flux ouvert. Une commande ordinaire du shell hérite de ces trois flux :

NuméroNomConnexion habituelle au terminal
0Entrée standard, stdinEntrée au clavier
1Sortie standard, stdoutRésultats normaux à l’écran
2Sortie d’erreur standard, stderrErreurs et messages d’état à l’écran

Bien que stdout et stderr partagent normalement l’écran, ce sont des connexions distinctes. Un programme peut fournir un résultat sur stdout et expliquer un problème sur stderr au cours d’une même exécution.

Par exemple, ls /etc/hostname /nonexistent > out.txt liste un chemin existant et rencontre un chemin absent. La liste va dans out.txt. Le message « No such file or directory » reste dans le terminal, car > redirige stdout, pas stderr. Voir une erreur à l’écran ne signifie pas que la redirection de sortie a échoué.

Fournir l’entrée d’une commande depuis un fichier

Des commandes comme cat, sort, wc, grep, head et tail peuvent lire stdin lorsqu’aucun fichier d’entrée n’est indiqué. Exécute sort seul, saisis quelques lignes et appuie sur Ctrl+D au début d’une ligne vide. Cela signale la fin de l’entrée et permet à sort d’afficher les lignes triées. Ctrl+C arrête la commande au lieu de terminer l’entrée.

L’opérateur d’entrée < relie un fichier à stdin :

wc -l < fruit.txt

Si fruit.txt contient six lignes terminées par un saut de ligne, la sortie est « 6 ». Compare avec wc -l fruit.txt, qui affiche « 6 fruit.txt ». Dans la forme avec redirection, le shell ouvre le fichier et wc reçoit un flux sans le nom du fichier d’origine. Dans la forme avec argument, wc ouvre lui-même le fichier indiqué.

Le shell prépare les redirections avant de démarrer le programme. sort < fruit.txt et < fruit.txt sort relient donc le même fichier au même flux d’entrée. Le placement habituel après la commande est plus facile à lire.

Fournir directement quelques lignes

Un document en ligne place l’entrée sous la commande. Le mot après << marque la fin de cette entrée :

cat <<EOF > greeting.txt
Hello
See you soon
EOF

cat reçoit les deux lignes de salutation sur stdin et les écrit dans le fichier de sortie. La dernière ligne contient seulement EOF ; c’est un délimiteur, pas une partie du texte enregistré. Un autre mot peut servir de délimiteur si la ligne de fermeture lui correspond exactement.

Dans Bash, une chaîne en ligne fournit une chaîne suivie d’un saut de ligne. wc -w <<< "a b c" indique trois mots. Ces deux formes fournissent directement une entrée sans créer d’abord un fichier d’entrée.

Lire la flèche avant d’exécuter la commande

sort < fruit.txt lit le fichier. sort > fruit.txt l’ouvre comme destination de sortie, vide son contenu existant et attend une entrée au clavier. Le shell effectue cette ouverture destructive avant l’exécution de sort. Garde les fichiers d’entrée distincts des destinations de sortie, sauf si la commande dispose d’une méthode documentée pour mettre à jour son entrée en toute sécurité.

Points clés

  • stdin, stdout et stderr utilisent les descripteurs de fichier 0, 1 et 2.
  • < fournit un fichier par stdin ; > change la destination de stdout.
  • Ctrl+D sur une ligne d’entrée vide signale la fin de l’entrée ; Ctrl+C arrête la commande.
  • Un document en ligne utilise un délimiteur correspondant, seul sur sa ligne.

2.2 Redirige les sorties et les erreurs vers des fichiers

La redirection change la destination d’un flux. C’est une opération du shell : les mêmes opérateurs fonctionnent donc avec de nombreux programmes. Commence par déterminer quel flux envoyer et s’il faut remplacer ou compléter un fichier existant.

Enregistrer les résultats normaux ou les ajouter en fin de fichier

echo one > log.txt crée le fichier ou le vide avant d’y écrire la ligne « one ». Un echo two >> log.txt exécuté ensuite ajoute « two » à la fin, ce qui donne deux lignes. >> crée aussi le fichier s’il n’existe pas.

OpérateurEffet
> out.txtÉcrire stdout en remplaçant le contenu existant
>> out.txtAjouter stdout en fin de fichier
2> err.txtÉcrire stderr en remplaçant le contenu existant
2>> err.txtAjouter stderr en fin de fichier

ls /etc/hostname /nonexistent > out.txt 2> err.txt sépare la liste obtenue du message d’erreur concernant le chemin absent. Le descripteur doit toucher l’opérateur. ls 2> err.txt redirige les erreurs ; ls 2 > err.txt demande à ls de lister un fichier nommé « 2 » et redirige sa sortie normale.

Regrouper les flux dans le bon ordre

2>&1 dirige stderr vers la destination actuelle de stdout. Lis les redirections de gauche à droite :

ls /etc/hostname /nonexistent > all.txt 2>&1

D’abord, stdout est dirigé vers all.txt. Ensuite, stderr copie cette connexion. Les deux flux arrivent maintenant dans le fichier. &> all.txt est une forme plus courte proposée par Bash, et &>> all.txt ajoute les deux flux en fin de fichier.

Inverser l’ordre change le résultat :

ls /etc/hostname /nonexistent 2>&1 > out.txt

D’abord, stderr est dirigé là où va actuellement stdout : le terminal. Ensuite, stdout est dirigé vers le fichier. Stderr conserve la connexion précédente, donc l’erreur reste visible. 2>&1 établit une connexion à cet instant ; il ne fait pas suivre à stderr tous les changements ultérieurs de stdout.

Éliminer volontairement un flux

/dev/null élimine les données qui y sont écrites. find / -name passwd 2>/dev/null laisse les chemins correspondants sur stdout tout en masquant les messages de diagnostic tels que « Permission denied ». Ces messages peuvent indiquer des répertoires non explorés : les éliminer supprime donc aussi des informations sur les parties non couvertes par la recherche.

Protéger un fichier d’entrée

N’écris pas sort fruit.txt > fruit.txt. Le shell vide la destination avant que sort ne la lise. Utilise un autre chemin de sortie, vérifie le résultat, puis renomme le fichier. Pour sort en particulier, sort -o fruit.txt fruit.txt utilise l’option prévue pour le fichier de sortie afin de mettre à jour ce fichier en toute sécurité.

Bash peut aussi refuser l’écrasement accidentel :

set -o noclobber

Avec ce réglage, > ordinaire échoue pour un fichier ordinaire existant. >> ajoute toujours en fin de fichier. Utilise >| pour un écrasement volontaire, ou set +o noclobber pour désactiver le réglage. Cette protection est utile pour enregistrer des rapports répétés, mais elle ne modifie pas les options d’écriture de fichiers propres à une commande.

Points clés

  • > écrase le contenu, tandis que >> ajoute en fin de fichier ; utilise le descripteur 2 pour stderr.
  • > all.txt 2>&1 capture les deux flux, car les redirections sont traitées de gauche à droite.
  • 2>&1 > out.txt laisse stderr à la destination précédente de stdout.
  • /dev/null élimine le flux sélectionné, y compris les messages de diagnostic utiles.
  • Évite de rediriger vers un fichier d’entrée ; sort -o fournit une solution prévue à cet effet.
  • Le réglage noclobber de Bash refuse > ordinaire sur les fichiers ordinaires existants ; >| passe outre.
3

Combine des commandes dans des pipelines

Les petites commandes de traitement de texte deviennent plus utiles lorsque leurs entrées et leurs sorties s’enchaînent. Un pipeline peut retirer un en-tête, sélectionner une colonne, regrouper les valeurs répétées et les compter sans créer de fichier après chaque étape. Chaque étape modifie ce que reçoit la suivante. Examine les étapes séparément pour savoir si un total erroné vient de la sélection, du tri ou du comptage, et enregistre les résultats intermédiaires lorsque tu as besoin de les examiner.

3.1 Relie des commandes avec des tubes et tee

Un tube, noté |, relie la sortie normale d’une commande à l’entrée de la suivante. Tu peux relier plusieurs petites opérations sans enregistrer de fichier temporaire entre elles.

Suivre le flux du texte

Dans ls /etc | wc -l, ls écrit les noms et wc -l compte les caractères de saut de ligne reçus. Une commande qui lit stdin, sélectionne ou modifie du texte et écrit sur stdout s’appelle un filtre. sort, uniq, wc, cut, grep, head et tail peuvent tous servir de filtres.

La forme générale est command1 | command2 | command3. Chaque étape reçoit la sortie de l’étape précédente, qui peut avoir une forme différente de celle du fichier d’origine. Une étape ultérieure ne peut pas récupérer les lignes ou les colonnes supprimées par une étape précédente.

Construire un comptage par étapes

Supposons que fruit.txt contient six lignes : « banana », « apple », « cherry », « apple », « banana », « apple ». Pour compter les noms différents, exécute d’abord :

sort fruit.txt

La sortie contient trois lignes « apple », deux lignes « banana » et une ligne « cherry ». Les noms identiques sont maintenant côte à côte. Ajoute une étape :

sort fruit.txt | uniq

uniq supprime les répétitions adjacentes et laisse « apple », « banana » et « cherry ». Enfin, sort fruit.txt | uniq | wc -l indique 3. Compter directement le fichier d’origine donnerait six lignes, ce qui répond à une autre question.

Exécute le pipeline à chaque ajout et examine son résultat avant d’ajouter la commande suivante. Pour une sortie très longue, ajoute temporairement | head afin de voir les dix premières lignes. Il est ainsi plus facile de repérer un en-tête qui n’a pas été retiré ou un champ mal sélectionné.

Garder les erreurs séparées

Un tube ordinaire transporte stdout, pas stderr. Avec un chemin existant et un chemin absent, ls /etc/hostname /nonexistent | wc -l compte l’unique ligne de liste normale. L’erreur apparaît toujours dans le terminal.

Pour inclure les messages de diagnostic dans les données, utilise ls /etc/hostname /nonexistent 2>&1 | wc -l, qui compte deux lignes dans cet exemple. |& dans Bash combine aussi stdout et stderr dans le tube. L’intérêt d’inclure les erreurs dépend du sens que tu veux donner au décompte final.

Les étapes s’exécutent simultanément. tail -f /var/log/app.log | grep ERROR affiche dans le terminal les nouvelles lignes ajoutées qui correspondent au motif. C’est un affichage en direct, pas un processus qui attend la fin du fichier. Les programmes peuvent toutefois mettre leur sortie en mémoire tampon ; l’affichage immédiat n’est donc pas garanti pour tous les pipelines.

Enregistrer une copie en cours de route

tee écrit son entrée à la fois dans un fichier et sur stdout :

sort fruit.txt | uniq | tee unique.txt | wc -l

Le terminal affiche 3, tandis que unique.txt stocke les trois noms. tee -a ajoute à la fin du fichier enregistré au lieu de le remplacer. Placer tee plus tôt enregistrerait une forme antérieure des données.

Un tube se connecte à une commande, tandis que > désigne un fichier. ls > less crée un fichier nommé « less » ; il ne lance pas le pageur. La commande réceptrice doit aussi lire stdin : transmettre du texte à echo ou à ls par un tube ne transforme pas ce texte en arguments.

Points clés

  • | relie stdout à stdin de la commande suivante.
  • Vérifie un pipeline étape par étape ; chaque étape reçoit la sortie de la précédente.
  • stderr reste en dehors d’un tube ordinaire, sauf si tu combines les flux.
  • tee enregistre l’entrée et la transmet à la suite ; tee -a ajoute en fin de fichier.
  • Le texte transmis par un tube arrive sur stdin ; il ne constitue pas une liste d’arguments de commande.

3.2 Compte et trie les lignes, puis supprime les doublons

Compter et trier sont des opérations distinctes. Avant d’utiliser un décompte, détermine si tu as besoin du nombre d’enregistrements, de mots, d’octets ou de valeurs distinctes. Avant de supprimer les doublons, vérifie si les lignes identiques sont déjà côte à côte.

Compter ce qu’il faut avec wc

wc file utilisé seul indique le nombre de lignes, de mots et d’octets, dans cet ordre, puis le nom du fichier. La liste de six lignes contenant « banana », « apple », « cherry », « apple », « banana », « apple » donne « 6 6 39 fruit.txt ». Chaque ligne contribue au total avec ses lettres et un octet de saut de ligne.

OptionCe qu’elle compte
-lCaractères de saut de ligne
-wMots séparés par des caractères d’espacement
-cOctets
-mCaractères

Un dernier fragment de texte sans saut de ligne n’est pas compté par wc -l. Un texte contenant « one », un saut de ligne puis « two » donne donc un décompte de 1. En UTF-8, « café » suivi d’un saut de ligne occupe six octets mais compte cinq caractères, car « é » occupe deux octets. Avec plusieurs fichiers d’entrée, wc affiche leurs décomptes et un total supplémentaire.

Choisir un tri textuel ou numérique

sort écrit les lignes triées sans modifier le fichier d’entrée. Son ordre par défaut suit les paramètres régionaux actifs. sort -f compare sans distinguer les majuscules des minuscules.

Le tri textuel compare les caractères : « 100 », « 25 », « 9 » apparaissent dans cet ordre, car leurs premiers chiffres sont « 1 », « 2 », « 9 ». sort -n compare les valeurs numériques et donne 9, 25, 100. Ajoute -r pour inverser l’ordre, comme dans sort -rn. sort -h comprend les suffixes de taille tels que « 2K », « 300M » et « 1G ».

Trier selon un champ

Pour des enregistrements séparés par des virgules, -t, définit le séparateur. -k3,3nr sélectionne seulement le champ 3, compare les valeurs numériquement et inverse l’ordre :

tail -n +2 scores.csv | sort -t, -k3,3nr | head -n 3

Avec « name,city,score » suivi de « Ana,Lisbon,82 », « Ben,Oslo,75 », « Chen,Lisbon,91 », « Dara,Oslo,68 » et « Eli,Lisbon,88 », le résultat donne Chen, Eli, puis Ana avec leurs enregistrements complets. La première étape retire l’en-tête. Sans cela, sa clé de score non numérique compte pour zéro lors du tri numérique.

Sans -t, des espaces ou des tabulations séparent les champs. -k2 étend la clé du champ 2 jusqu’à la fin de la ligne ; -k2,2 la limite au champ 2.

Regrouper les doublons avant de les compter

uniq compare chaque ligne aux lignes identiques adjacentes. Sur la liste de fruits non triée, il laisse les six lignes, car aucun nom identique n’est adjacent à un autre. sort fruit.txt | uniq affiche les trois noms différents ; sort -u fruit.txt peut aussi produire une liste triée sans doublons.

Après le tri, uniq -c indique le nombre de chaque suite : « 3 apple », « 2 banana », « 1 cherry », avec des espaces devant les nombres. uniq -d affiche un exemplaire de chaque valeur répétée, et uniq -u affiche seulement les valeurs présentes une fois. uniq -i ignore la casse dans ses comparaisons.

Pour obtenir d’abord les valeurs les plus fréquentes, utilise sort fruit.txt | uniq -c | sort -rn. Le premier tri regroupe les lignes identiques ; le dernier classe leurs décomptes. Omettre le premier tri compte séparément les suites dispersées.

Points clés

  • wc -l compte les sauts de ligne, -w les mots, -c les octets et -m les caractères.
  • sort -n compare les nombres ; -r inverse l’ordre ; -h traite les suffixes de taille.
  • sort -t, -k3,3nr trie les enregistrements séparés par des virgules selon le champ 3, numériquement et par ordre décroissant.
  • Retire l’en-tête avant de trier les enregistrements de données.
  • uniq supprime les répétitions adjacentes ; trie d’abord lorsque les valeurs identiques sont dispersées.
  • uniq -c compte les suites, -d sélectionne les valeurs répétées et -u celles qui apparaissent une fois.
  • sort | uniq -c | sort -rn regroupe les valeurs, les compte et classe les décomptes.

3.3 Extrais des colonnes avec cut

Un enregistrement contient souvent plus d’informations qu’il n’en faut pour répondre à une question. cut sélectionne des champs ou des positions fixes dans chaque ligne et écrit la sélection sur stdout. Il ne réorganise ni ne modifie le fichier d’origine.

Sélectionner des champs selon leur séparateur

Un délimiteur sépare les champs. Dans /etc/passwd, des deux-points séparent le nom d’utilisateur, le caractère de remplacement du mot de passe, l’identifiant utilisateur, l’identifiant de groupe, le nom complet, le répertoire personnel et le shell de connexion. Pour cet exemple d’enregistrement :

alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash

cut -d: -f1,6 affiche « alice:/home/alice ». Les numéros de champ commencent à 1 et le délimiteur reste entre les champs sélectionnés. cut -d: -f5 affiche « Alice Smith » ; l’espace intérieur fait partie de ce champ, car le délimiteur est un deux-points.

SélectionChamps affichés
-f1,3Champs 1 et 3
-f2-4Champs 2 à 4
-f3-Du champ 3 au dernier champ

La liste sélectionne des champs sans définir un nouvel ordre. cut -d, -f3,1 affiche toujours le champ 1 suivi du champ 3. Par défaut, le séparateur est une tabulation : cut -f2 file sélectionne donc le deuxième champ séparé par des tabulations.

Une ligne sans délimiteur est affichée en entier. Par exemple, cut -f2 affiche « no tabs here » sans modification, car cette ligne ne contient pas de tabulation. Ajoute -s pour exclure les lignes sans délimiteur. Une ligne contenant des délimiteurs mais dépourvue d’un champ demandé est un cas différent ; -s ne vérifie pas de façon générale si les enregistrements sont complets.

Sélectionner des positions fixes

cut -c1-5 sélectionne les positions 1 à 5. Sur l’enregistrement de compte ci-dessus, il affiche « alice ». La sélection par position convient au texte à champs de largeur fixe, où les colonnes recherchées commencent aux mêmes endroits sur chaque ligne. La sélection par champ convient aux enregistrements dont les longueurs de champs varient mais dont les séparateurs restent constants.

Vérifier le comportement des séparateurs

Avec cut -d' ' -f2, chaque espace est un séparateur. Le texte « a b » a un deuxième champ vide entre ses deux espaces : le résultat est donc une ligne vide. Si les espaces répétés servent seulement à espacer les colonnes, tr -s ' ' | cut -d' ' -f2 réduit d’abord chaque suite d’espaces à un seul.

cut traite aussi les virgules à l’intérieur de valeurs entre guillemets comme des séparateurs. Une valeur CSV entre guillemets telle que « Smith, Ann » n’est pas automatiquement gardée ensemble. Utilise des exemples simples à champs délimités seulement lorsque les limites des champs correspondent réellement à la règle du délimiteur.

Compter les valeurs d’une colonne sélectionnée

Pour compter les villes dans scores.csv, commence par cut -d, -f2 scores.csv. Avec les enregistrements d’Ana, Ben, Chen, Dara et Eli, cette commande affiche « city », « Lisbon », « Oslo », « Lisbon », « Oslo », « Lisbon ». Puis :

cut -d, -f2 scores.csv | tail -n +2 | sort | uniq -c | sort -rn

Retirer la première ligne supprime « city ». Le tri regroupe les trois entrées Lisbon et les deux entrées Oslo ; uniq -c les compte et le dernier tri place « 3 Lisbon » avant « 2 Oslo ». Oublier l’étape qui retire l’en-tête crée une valeur supplémentaire, « 1 city », car ces commandes traitent aussi un en-tête comme du texte.

Points clés

  • cut -d définit le délimiteur et -f sélectionne les champs numérotés à partir de 1.
  • Les listes de champs sélectionnent les champs dans leur ordre d’origine ; -c sélectionne des positions fixes.
  • Le délimiteur par défaut est une tabulation ; -s omet les lignes sans délimiteur.
  • Les espaces répétés créent des champs vides et cut n’analyse pas les guillemets CSV.
  • Pour compter les occurrences, retire l’en-tête, sélectionne la valeur, regroupe les lignes identiques et compte-les.
4

Recherche du texte avec grep et des expressions régulières

Rechercher du texte commence par déterminer ce qui constitue une correspondance. Tu peux avoir besoin d’une expression littérale, d’un mot entier, d’une ligne complète ou d’un motif tel que deux lettres suivies de quatre chiffres. grep peut afficher les lignes correspondantes ou indiquer leurs numéros, leur nombre et les noms des fichiers. Les expressions régulières décrivent les motifs, tandis que les guillemets empêchent le shell de les modifier au préalable. Tu partiras de correspondances simples pour arriver à des alternatives regroupées et à des parties répétées.

4.1 Recherche du texte dans les fichiers avec grep et ses principales options

grep recherche du texte et affiche normalement chaque ligne contenant une correspondance. Pour obtenir une recherche utile, commence par choisir le motif et le type de résultat dont tu as besoin : lignes, nombres, numéros de ligne ou noms de fichiers.

Commencer avec un motif entre guillemets

La forme habituelle est grep 'pattern' file. Sans argument désignant un fichier, grep lit stdin. Les recherches sont sensibles à la casse, sauf si tu ajoutes -i.

Supposons que server.log contient cinq entrées : une ligne INFO de démarrage, une ligne ERROR indiquant un disque plein, une ligne WARN de nouvelle tentative, une ligne contenant « error timeout » en minuscules et une ligne INFO de sauvegarde. grep 'ERROR' server.log affiche seulement la ligne ERROR en majuscules. grep -i 'error' server.log affiche les deux lignes d’erreur.

Place les motifs entre guillemets même lorsqu’ils semblent simples. grep 'disk full' server.log recherche les deux mots ensemble. Sans guillemets, grep disk full server.log utilise « disk » comme motif et traite « full » comme un autre nom de fichier. Les guillemets empêchent aussi le shell de développer les astérisques et d’autres caractères spéciaux avant que grep les reçoive.

Choisir la sortie nécessaire
OptionRésultat
-iChercher sans distinguer les majuscules des minuscules
-vAfficher les lignes qui ne correspondent pas
-cAfficher le nombre de lignes correspondantes
-nFaire précéder les correspondances de leur numéro de ligne
-wExiger une correspondance sur un mot entier
-xExiger une correspondance sur la ligne entière

Les options se combinent : grep -ic 'error' server.log indique 2, tandis que grep -n 'WARN' server.log indique la ligne 3. -c compte les lignes correspondantes, pas le nombre d’occurrences qu’elles contiennent. Une ligne contenant « error error » compte pour un.

Considère les lignes « error », « terror », « errors » et « Error found ». grep 'error' seul trouve les trois premières. grep -w 'error' ne trouve que la première, car « error » n’est pas un mot entier dans « terror » ou « errors ». Ajouter -i permet aussi de trouver « Error found ». -x exige une ligne entièrement correspondante : « Error found » ne correspond donc toujours pas à une recherche de « error » sur la ligne entière.

Effectuer une recherche dans plusieurs fichiers

Lorsqu’une recherche porte sur plusieurs fichiers, grep fait normalement précéder les correspondances des noms de fichiers. grep -r 'TODO' notes effectue une recherche dans les fichiers de toute l’arborescence du répertoire. Ajoute -l pour afficher seulement les noms des fichiers contenant des correspondances : grep -rl 'TODO' notes. -L en majuscule liste les fichiers sans correspondance. Ces résultats sélectionnent des fichiers ; ils ne comptent pas les lignes correspondantes.

Déterminer si le motif est littéral

Par défaut, grep interprète une expression régulière. Un point correspond à n’importe quel caractère unique : '10.0.0.7' peut donc aussi correspondre à « 10a0b0c7 ». grep -F '10.0.0.7' file recherche le texte exact. Échapper chaque point, comme dans '10\.0\.0\.7', rend aussi les points littéraux.

grep -q supprime la sortie normale et communique par son code de retour : 0 en cas de correspondance, 1 en l’absence de correspondance et normalement 2 en cas d’erreur dans GNU grep. Un fichier d’entrée manquant est une erreur, pas une preuve que le motif était absent.

Dans un pipeline, grep -i 'error' server.log | wc -l compte les lignes correspondantes comme le fait grep -ic. La première forme permet d’ajouter d’autres filtres entre la sélection des lignes et leur comptage.

Points clés

  • grep affiche les lignes correspondantes et respecte la casse, sauf si -i est utilisé.
  • Place le motif entre guillemets pour que le shell le transmette intact.
  • -c compte les lignes correspondantes ; -n les numérote ; -v sélectionne celles qui ne correspondent pas.
  • -w exige un mot entier et -x une ligne entière.
  • -r effectue une recherche dans une arborescence, -l liste les fichiers contenant une correspondance et -L ceux qui n’en contiennent pas.
  • -F traite un motif comme du texte littéral ; -q indique le résultat d’une recherche par le code de retour.

4.2 Écris des expressions régulières de base

Une expression régulière décrit le texte susceptible de correspondre. grep cherche normalement une partie correspondante n’importe où dans une ligne, puis affiche la ligne entière. La plupart des lettres correspondent à elles-mêmes ; les caractères spéciaux décrivent des positions, des choix ou des répétitions.

Trouver un caractère ou une position

Le point . correspond à un caractère dans une ligne. Avec les lignes « cat », « cart », « coat », « cut », « act », « scat » et « color », le motif 'c.t' correspond à « cat », « cut » et « scat ». Cette dernière ligne contient « cat », qui est une partie correspondante. « coat » contient deux caractères entre « c » et « t », donc un seul point ne peut pas couvrir les deux.

Utilise des ancres pour imposer des positions. ^ marque le début d’une ligne et $ sa fin :

MotifCe qu’il exige
^cUne ligne commençant par « c »
t$Une ligne se terminant par « t »
^c.t$Exactement « c », un caractère, puis « t »
^$Une ligne vide

grep '^c.t$' words.txt affiche seulement « cat » et « cut ». Ancrer les deux extrémités exclut une ligne plus longue telle que « scat ».

Choisir un caractère dans un ensemble

Une expression entre crochets correspond à un caractère. [ao] signifie « a » ou « o » : 'c[ao]t' correspond donc à la partie « cat » de « cat » et de « scat ». [0-9] désigne un chiffre. Un accent circonflexe placé juste après le crochet ouvrant inverse l’ensemble : 'c[^a]t' correspond à « cut », mais pas à « cat ». À cet endroit, l’accent circonflexe exclut un caractère ; il ne marque pas le début d’une ligne.

Les classes nommées décrivent des catégories selon les paramètres régionaux actifs. [[:digit:]] sélectionne un chiffre, [[:alpha:]] une lettre, [[:alnum:]] une lettre ou un chiffre, et [[:upper:]] ou [[:lower:]] une lettre dans la casse indiquée. [[:space:]] comprend les espaces, les tabulations et d’autres caractères d’espacement. Garde les deux paires de crochets : le nom de la classe se trouve à l’intérieur de l’expression d’ensemble extérieure.

Répéter l’élément précédent

* signifie zéro ou plusieurs occurrences de l’élément situé juste avant. 'ca*t' peut correspondre à « ct », « cat » ou « caat ». Il correspond aussi à « act », car cette ligne contient « ct », avec zéro occurrence de « a ». Pour trouver une suite quelconque de caractères, combine le point et l’astérisque sous la forme .*.

'^c.*t$' correspond à « cat », « cart », « coat » et « cut » dans la liste de mots. Un caractère générique de nom de fichier et une expression régulière utilisent des règles différentes pour l’astérisque : le motif du shell *.txt décrit les noms se terminant par « .txt », mais l’expression régulière pour cette fin est '\.txt$'.

Rendre un caractère spécial littéral

Une barre oblique inverse peut supprimer un sens particulier. \. correspond à un véritable point, \* à un astérisque et \[ à un crochet ouvrant. [.] sélectionne aussi un point littéral. grep '\.conf$' file sélectionne les lignes se terminant par « .conf ».

Une recherche dans une configuration peut retirer les commentaires simples et les lignes vides avec grep -v '^#' app.conf | grep -v '^$'. Le premier test ne reconnaît les commentaires que lorsque « # » est le premier caractère. La syntaxe de base utilisée par défaut traite ?, +, les accolades, | et les parenthèses sans échappement comme des caractères ordinaires. GNU grep prend en charge les formes d’opérateurs précédées d’une barre oblique inverse ; grep -E fournit la syntaxe étendue sans ces barres obliques inverses.

Points clés

  • grep cherche une partie correspondante, sauf si des ancres exigent la ligne entière.
  • . correspond à un caractère ; ^ et $ ancrent le début et la fin.
  • Une expression entre crochets sélectionne un caractère ; [^a] exclut « a ».
  • Les classes nommées telles que [[:digit:]] nécessitent les deux paires de crochets.
  • * répète l’élément précédent zéro ou plusieurs fois ; .* correspond à une suite de caractères.
  • Utilise \. ou [.] pour un point littéral.

4.3 Utilise des expressions régulières étendues avec grep -E

Les expressions régulières étendues ajoutent des moyens utiles d’exprimer des parties facultatives, des groupes répétés et des alternatives. Utilise grep -E pour que le motif soit lu selon cette syntaxe. Le point, les ancres, les ensembles et l’astérisque conservent leur sens précédent.

Compter les répétitions

Un opérateur suit l’élément qu’il modifie. Cet élément peut être un caractère, une expression entre crochets ou un groupe :

OpérateurNombre d’occurrences
?Zéro ou une
+Une ou plusieurs
{n}Exactement n
{n,}Au moins n
{n,m}De n à m

'logs?' correspond à « log » et à « logs » : seul le « s » est facultatif. 'ca+t' exige au moins un « a » ; il correspond donc à « cat » et à la partie correspondante de « scat », mais pas à « ct » dans « act ». Omettre -E transforme un point d’interrogation ou un signe plus non échappé en texte littéral dans la syntaxe de base.

Pour un code entier composé de deux lettres majuscules et de quatre chiffres, utilise :

grep -E '^[A-Z]{2}[0-9]{4}$' codes.txt

« AB1234 » et « QZ0042 » correspondent. « A12345 » n’a qu’une lettre initiale, « ab1234 » utilise des minuscules et « XY98765 » a un chiffre de trop. Les deux ancres empêchent qu’une partie d’un code plus long, qui semble valide, soit acceptée. Ajouter -i autoriserait aussi le code en minuscules.

Regrouper des alternatives

| indique une alternative dans un motif étendu. 'cat|cut' recherche l’un ou l’autre mot n’importe où dans une ligne. Les parenthèses définissent les limites d’un groupe : 'c(a|o)t' choisit « a » ou « o » entre « c » et « t ». Un quantificateur placé ensuite s’applique au groupe entier : '(ab)+' correspond donc à une ou plusieurs occurrences de « ab ».

Garde le motif entre guillemets. Dans grep -E cat|cut words.txt, le shell interprète la barre verticale non protégée comme un tube entre des commandes. Dans grep -E 'cat|cut' words.txt, il transmet ce caractère à grep comme partie d’un seul motif.

Afficher les correspondances plutôt que les lignes complètes

-o affiche seulement les parties correspondantes, une par ligne de sortie. La commande ci-dessous extrait d’une ligne plus longue une suite de nombres séparés par des points :

grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' server.log

La partie entre parenthèses représente un à trois chiffres suivis d’un point littéral ; {3} la répète trois fois. La dernière partie ajoute un à trois chiffres. Elle extrait « 10.0.0.7 » d’une ligne qui le contient, mais accepte aussi « 999.999.999.999 ». Une correspondance sur la forme ne vérifie pas si chaque nombre se trouve dans la plage valide d’une adresse.

Supprimer ensemble les lignes vides et les commentaires

grep -Ev '^[[:space:]]*(#|$)' app.conf sélectionne les paramètres actifs. Lis le motif dans l’ordre : commencer au début, autoriser des caractères d’espacement, puis trouver soit « # », soit la fin de la ligne. Il reconnaît donc les commentaires indentés et les lignes composées uniquement d’espaces, ainsi que les lignes vides. -v conserve les lignes qui ne correspondent pas à cette description, telles que « port=8080 ». L’ancien nom de commande egrep est obsolescent dans GNU grep ; utilise grep -E.

Points clés

  • grep -E active comme opérateurs ?, +, les accolades, | et les parenthèses sans échappement.
  • Les quantificateurs s’appliquent au caractère, à l’ensemble ou au groupe qui les précède.
  • Place des ancres autour d’un motif lorsque l’enregistrement entier doit y correspondre.
  • | indique des alternatives et les parenthèses les regroupent ; place le motif entre guillemets.
  • -o affiche chaque partie correspondante, pas la ligne entière.
  • Une expression régulière qui vérifie une forme peut néanmoins accepter des valeurs non valides dans le système réel.
5

Trouve des fichiers selon leur nom, leur type, leur taille et leur ancienneté

Une recherche de fichier demande où se trouve un élément ; une recherche de texte demande ce qu’il contient. Commence une recherche de fichier dans le bon répertoire, puis précise-la selon le nom, le type, la taille ou l’ancienneté. Tu peux transmettre les chemins correspondants à une autre commande sans découper les noms qui contiennent des espaces. Une recherche actuelle dans l’arborescence et une consultation rapide d’une base de données ont des atouts différents. Avant d’appliquer une action à de nombreux éléments correspondants, examine la sélection et comprends à quel moment l’action s’exécute.

5.1 Effectue des recherches dans l’arborescence avec find

find parcourt une arborescence et teste les éléments qu’il rencontre. Choisis d’abord le répertoire de départ : find project affiche project lui-même et les entrées situées en dessous. L’ajout de tests restreint la sélection.

Faire correspondre noms, chemins et types

find project -name '*.txt' sélectionne les noms se terminant par « .txt » partout sous le répertoire de départ. Place le caractère générique entre guillemets pour que le shell le transmette sans modification. -name est sensible à la casse : pour trouver « Guide.TXT » sans tenir compte de la casse, il faut utiliser -iname '*.txt'.

Le motif doit correspondre au nom entier de l’élément, sans ses répertoires parents. -name 'guide' ne correspond pas à « guide.txt » ; -name 'guide*' y correspond. Utilise -path '*/src/*' lorsque la partie du chemin correspondant au répertoire compte. find affiche les chemins dans l’ordre du parcours : ajoute | sort si tu veux les trier.

-type f sélectionne les fichiers ordinaires, -type d les répertoires et -type l les liens symboliques. find project -type f -name '*.txt' exige que les tests sur le type et sur le nom soient tous deux satisfaits. Un répertoire nommé « notes.txt » échoue au test sur le type même si son nom convient.

Comprendre les comparaisons de taille

-size compare une taille après l’avoir arrondie à l’unité supérieure dans l’unité choisie. c signifie octets, k désigne des kibioctets de 1 024 octets, M des mébioctets de 1 048 576 octets et G des gibioctets. Un signe plus initial signifie supérieur à, un signe moins inférieur à, et l’absence de signe égal au nombre d’unités indiqué.

Pour -size +100M, la taille arrondie doit dépasser 100 MiB. Un fichier qui dépasse 100 MiB d’un octet est arrondi à 101 unités et satisfait le test. Un fichier non vide de moins de 1 MiB est arrondi à une unité : -size -1M ne trouve donc que les fichiers vides. Utilise un test en octets pour un seuil exact en octets, ou une unité plus petite pour obtenir une plage utile de petits fichiers.

Tester l’ancienneté et limiter la profondeur

-mtime utilise les périodes complètes de 24 heures écoulées depuis la modification. -mtime -7 sélectionne les éléments modifiés il y a moins de sept jours. -mtime +30 sélectionne les éléments dont l’ancienneté dépasse 30 périodes complètes : au moins 31 jours. -mmin -30 utilise les minutes pour les modifications récentes. -user alice sélectionne un propriétaire et -empty sélectionne les fichiers ou répertoires vides.

Pour examiner le répertoire de départ et ses entrées immédiates sans entrer dans les sous-répertoires, utilise find project -maxdepth 1 -type f. Place -maxdepth avant les tests.

Combiner les tests et protéger les motifs

Des tests écrits côte à côte signifient ET. -o signifie OU, comme dans find project -name '*.txt' -o -name '*.md'. ! -name '*.c' inverse un test sur le nom. Pour une sélection simple, clarifie la relation entre les tests avant d’ajouter des actions.

Un caractère générique non protégé est développé par le shell dans ton répertoire courant. Si seul notes.txt y correspond, find . -name *.txt devient une recherche de ce seul nom et manque les autres fichiers texte. Si plusieurs noms locaux correspondent, la commande peut échouer parce que des noms supplémentaires apparaissent dans l’expression de test.

Une recherche dans des répertoires protégés peut signaler « Permission denied ». 2>/dev/null masque ces erreurs, mais ne permet pas de rechercher dans les répertoires illisibles. find examine l’arborescence pendant son exécution ; un système de fichiers en activité peut encore changer avant qu’une commande ultérieure utilise les chemins renvoyés.

Points clés

  • find parcourt l’arborescence à partir d’un chemin de départ et affiche les éléments qui satisfont ses tests.
  • Place les caractères génériques des noms entre guillemets ; -name teste le nom entier et -path le chemin complet.
  • Utilise -type f, d ou l pour les fichiers ordinaires, les répertoires ou les liens symboliques.
  • Les tests de taille arrondissent à l’unité supérieure avant la comparaison ; -size -1M sélectionne seulement les fichiers vides.
  • -mtime +30 commence à 31 jours complets, tandis que -mmin utilise les minutes.
  • Des tests côte à côte signifient ET, -o signifie OU et ! inverse un test.

5.2 Agis sur les fichiers trouvés et utilise des recherches plus rapides

Après avoir sélectionné des fichiers, tu peux transmettre leurs chemins à une autre commande. Garder la sélection et l’action dans la même expression find évite de traiter les espaces à l’intérieur des noms de fichiers comme des séparateurs entre les noms.

Exécuter une commande sur chaque élément correspondant

L’action -exec command {} \; exécute la commande une fois par élément correspondant. find remplace {} par le chemin de cet élément. Par exemple :

find project -name 'main.c' -exec wc -l {} \;

Si l’élément correspondant est project/src/main.c, cela exécute wc -l project/src/main.c. Le point-virgule échappé termine l’action. La barre oblique inverse empêche le shell d’utiliser d’abord le point-virgule pour terminer toute la commande shell.

Utilise {} + pour transmettre des lots de chemins à un nombre réduit d’exécutions de la commande :

find notes -type f -name '*.txt' -exec grep -l 'TODO' {} +

grep reçoit les chemins des fichiers sélectionnés comme arguments et liste ceux qui contiennent « TODO ». Les deux formes conservent un chemin tel que « notes/team plan.txt » comme un seul argument. La forme avec + réduit le travail de lancement lorsque de nombreux fichiers correspondent.

Combiner sélection de fichiers et sélection de texte

find teste les propriétés des fichiers ; grep examine leur contenu. Ajoute -mtime -7 avant l’action pour rechercher seulement dans les fichiers texte modifiés récemment :

find notes -type f -name '*.txt' -mtime -7 -exec grep -l 'TODO' {} +

Les tests sur le nom, le type et l’ancienneté sélectionnent d’abord les fichiers. Ensuite, grep recherche dans leur texte. grep -r seul peut rechercher dans le contenu d’une arborescence, mais ne remplace pas ces tests sur les propriétés des fichiers.

Ne supprimer qu’après avoir vérifié la sélection

-delete supprime les éléments correspondants sans confirmation ni possibilité d’annulation. Exécute d’abord la sélection sans action de suppression et lis les chemins. Ensuite seulement, ajoute -delete à la fin, comme dans find /tmp/build -type f -name '*.tmp' -delete. Pour obtenir une demande de confirmation par élément, -ok rm {} \; pose la question avant d’exécuter la commande de suppression.

Les actions s’exécutent au fur et à mesure de l’évaluation de l’expression. Placer -delete avant -name '*.tmp' permet à la suppression d’avoir lieu avant que ce test sur le nom puisse la restreindre. Un test ultérieur ne peut pas protéger un élément d’une action déjà effectuée.

Choisir une recherche plus rapide lorsqu’elle convient

locate guide.txt recherche dans un index de chemins enregistrés contenant « guide.txt ». Il peut répondre rapidement sans parcourir le disque. Comme la base est actualisée périodiquement, un nouveau fichier peut être absent ou un chemin supprimé peut subsister. updatedb reconstruit l’index ; une mise à jour à l’échelle du système nécessite généralement des droits d’administration. Certaines distributions nécessitent un paquet facultatif tel que plocate.

which grep cherche un fichier programme exécutable dans les répertoires de PATH et indique souvent /usr/bin/grep. Il ne décrit pas toutes les façons dont Bash résout une commande. type echo, par exemple, peut identifier une commande interne même lorsqu’un programme externe nommé « echo » existe aussi. Utilise type commandname pour connaître l’interprétation de Bash, find pour une recherche à jour dans l’arborescence et locate pour une recherche rapide de nom dans l’index.

Points clés

  • -exec command {} \; s’exécute une fois par chemin ; {} + regroupe les chemins par lots.
  • Utilise find pour les propriétés des fichiers et grep pour leur contenu, en les combinant si nécessaire.
  • Examine les éléments à supprimer, puis place -delete après les tests qui restreignent la sélection.
  • locate recherche dans un index qui peut ne pas être à jour.
  • which trouve les fichiers exécutables dans PATH ; type explique comment Bash résout une commande.
6

Modifie des fichiers texte avec nano et vi

Les éditeurs de terminal te permettent de modifier des notes et des fichiers de configuration pendant une session distante ou sur un système sans bureau graphique. nano te permet de saisir du texte immédiatement et affiche des raccourcis en bas de l’écran. vi attribue des fonctions différentes aux touches selon le mode : changer de mode fait donc partie de la modification. Exerce-toi à ouvrir un fichier, à rechercher du texte, à faire une petite modification, puis à enregistrer ou à quitter volontairement ; ces étapes comptent autant que la connaissance d’une commande de suppression.

6.1 Modifie et enregistre un fichier avec nano

nano notes.txt ouvre du texte dans un éditeur de terminal. Tu peux te déplacer avec les touches fléchées et saisir directement du texte. Si le fichier n’existe pas, nano ouvre un tampon vide, c’est-à-dire le texte de travail conservé en mémoire ; l’enregistrement crée le fichier sur le disque.

Lire les indications de raccourcis

Les lignes du bas affichent des combinaisons de touches. ^ signifie Ctrl : ^X signifie donc Ctrl+X. M- signifie Méta, généralement Alt : M-U signifie donc Alt+U. Ctrl+G ouvre l’aide. Ces indications désignent des touches à presser ensemble, pas des caractères à saisir dans le fichier.

Faire et enregistrer une petite modification

Pour remplacer « port=8080 » par « port=9090 » dans app.conf :

  1. Exécute nano app.conf.
  2. Appuie sur Ctrl+W, saisis « 8080 » et appuie sur Entrée.
  3. À la correspondance, supprime les quatre chiffres et saisis « 9090 ».
  4. Appuie sur Ctrl+O, puis sur Entrée pour confirmer le nom du fichier et enregistrer.
  5. Appuie sur Ctrl+X pour quitter.

De retour dans le shell, grep 'port' app.conf devrait afficher « port=9090 ». Cela vérifie le fichier enregistré, et pas seulement ce qui était visible dans l’éditeur.

Ctrl+O correspond à Write Out, la commande d’enregistrement ; ce n’est pas une commande d’ouverture de fichier. Ctrl+R lit le contenu d’un autre fichier dans le tampon courant à l’emplacement du curseur. Confondre ces actions peut insérer du texte indésirable dans le fichier que tu modifies.

Rechercher, remplacer et se déplacer

Ctrl+W recherche du texte. Alt+G va au numéro de ligne demandé, ce qui est utile lorsqu’un message d’erreur indique une ligne précise. Ctrl+C affiche la ligne et la colonne courantes.

Alt+R, également accessible par Ctrl+, lance le remplacement. Saisis le texte à trouver, puis son remplacement. Pour chaque correspondance, réponds Y pour remplacer ou N pour passer ; A remplace tout. Choisir les remplacements individuellement est utile lorsque les mêmes chiffres apparaissent dans plusieurs paramètres et qu’un seul doit changer.

Déplacer du texte et annuler des modifications
RaccourciAction
Ctrl+KCouper toute la ligne courante
Ctrl+UColler le texte coupé à l’emplacement du curseur
Alt+ACommencer à marquer une sélection
Alt+U / Alt+EAnnuler / rétablir

Appuyer plusieurs fois sur Ctrl+K recueille des lignes consécutives. Avec une sélection marquée, Ctrl+K coupe le texte marqué au lieu de toute la ligne. Ctrl+U insère ensuite ce texte à l’emplacement du curseur. L’annulation est utile juste après une coupe ou un remplacement accidentel.

Quitter volontairement

Ctrl+X quitte. Si le tampon contient des modifications non enregistrées, nano demande s’il faut les enregistrer. Y enregistre, puis Entrée confirme le nom ; N quitte sans enregistrer ces modifications ; Ctrl+C annule la sortie et revient à la modification. Répondre N revient à décider d’abandonner le travail, pas à continuer la modification.

nano -l app.conf affiche les numéros de ligne et nano +12 app.conf commence à la ligne 12. Si l’enregistrement échoue faute de droits, le tampon modifié n’a pas été enregistré à ce chemin. Les fichiers système nécessitent les droits appropriés, par exemple sudo nano /etc/hosts lorsqu’une modification autorisée du système nécessite un accès administrateur. Pour t’exercer, utilise un fichier dans ton propre répertoire.

Points clés

  • nano accepte immédiatement le texte saisi ; un nouveau fichier est créé lors de l’enregistrement.
  • Dans les indications de raccourcis, ^ signifie Ctrl et M- signifie généralement Alt.
  • Ctrl+O puis Entrée enregistrent ; Ctrl+X quitte et pose une question en cas de modifications non enregistrées.
  • Ctrl+W recherche, Alt+R remplace et Alt+G va à une ligne.
  • Ctrl+K coupe, Ctrl+U colle et Alt+U annule.

6.2 Utilise les différents modes de vi

vi notes.txt ouvre un éditeur de terminal en mode normal. Dans ce mode, une touche telle que x est une commande. Pour saisir du texte, passe d’abord en mode insertion. Sur de nombreux systèmes Linux, vi lance Vim ou un autre éditeur compatible avec vi.

Garder à l’esprit le mode actif
ModeFonctionComment y accéder
NormalSe déplacer, supprimer, copier et lancer des commandesÉchap
InsertionSaisir du texte dans le tamponi, a, o ou une autre commande d’insertion
Ligne de commandeSaisir des commandes telles que l’enregistrement: depuis le mode normal

Vim affiche « -- INSERT -- » pendant l’insertion. Échap revient au mode normal. Depuis le mode normal, i insère avant le curseur et a après. I commence avant le premier caractère non blanc de la ligne, en conservant l’indentation ; A ajoute à la fin. o ouvre une ligne en dessous et O une ligne au-dessus.

Se déplacer sans saisir de texte

En mode normal, h, j, k et l déplacent respectivement vers la gauche, le bas, le haut et la droite. Les touches fléchées fonctionnent aussi. w va au mot suivant, 0 au début de la ligne et $ à sa fin. G va à la dernière ligne. 1G va à la première ; Vim propose aussi gg. Un nombre avant G sélectionne une ligne : 12G va donc à la ligne 12. :12 puis Entrée font la même chose. Les nombres répètent aussi les déplacements : 5j descend de cinq lignes.

Modifier depuis le mode normal

x supprime le caractère sous le curseur. dd coupe une ligne ; 3dd coupe trois lignes. yy copie une ligne. Pour du texte composé de lignes entières, p colle sous la ligne courante et P au-dessus. Pour du texte composé de caractères, p colle après le curseur et P avant.

cw remplace le reste du mot courant et passe en mode insertion. r suivi d’un caractère remplace un seul caractère. u annule une modification ; Ctrl+R dans Vim la rétablit. Un point . répète la dernière modification.

Trouver et modifier un paramètre

Pour remplacer « 8080 » par « 9090 » dans app.conf, exécute vi app.conf, puis saisis /8080 et appuie sur Entrée. Au premier « 8 », saisis cw, saisis « 9090 », puis appuie sur Échap. Saisis :wq et appuie sur Entrée pour enregistrer et quitter.

Cherche vers l’arrière avec ?text puis Entrée. n répète la recherche dans le sens actuel et N l’inverse. Les recherches acceptent les expressions régulières. Pour remplacer chaque occurrence dans tout un fichier, :%s/8080/9090/g utilise % pour toutes les lignes et g pour toutes les occurrences sur chaque ligne. :set number affiche les numéros de ligne pendant la modification.

Enregistrer ou quitter volontairement

Depuis le mode normal, :w puis Entrée enregistrent ; :w newname.txt enregistre sous un nouveau nom. :q ne quitte que si aucune modification non enregistrée ne l’en empêche. :wq, :x ou ZZ enregistrent et quittent. :q! abandonne les modifications non enregistrées et quitte.

Si la saisie déplace le curseur ou supprime du texte de façon inattendue, appuie sur Échap pour revenir au mode normal, puis utilise u pour annuler les modifications indésirables avant de continuer. Passe en mode insertion avant de saisir le texte de remplacement. Lorsque tu quittes une tentative de modification, choisis d’enregistrer ou d’abandonner ; le point d’exclamation dans :q! autorise l’abandon du travail non enregistré.

Points clés

  • vi démarre en mode normal ; passe en mode insertion pour saisir du texte et appuie sur Échap pour revenir.
  • i, a, o et leurs formes en majuscules choisissent où commence l’insertion.
  • dd coupe une ligne, yy la copie et p colle les lignes entières en dessous ou les caractères après le curseur.
  • u annule et . répète la dernière modification.
  • /text cherche vers l’avant ; n répète la recherche et N en inverse le sens.
  • :wq enregistre et quitte ; :q! abandonne les modifications non enregistrées et quitte.

Tubes et redirection sous Linux : exemples

6 Leçons Interactives

1

Lis un fichier sans perdre ta place

10 étapes
Choisis une commande de consultation, navigue dans un pageur et sélectionne une partie précise d’un fichier.
  1. 1
    IntroductionChoisis la quantité de texte à afficher

    Un terminal peut afficher un fichier entier, un écran à la fois ou seulement une partie sélectionnée. Ce choix influe sur la facilité avec laquelle tu trouves ce qui compte.

    Utilise une courte note pour apprendre cat, puis passe à less pour un fichier trop long pour tenir à l’écran. Enfin, utilise head et tail lorsque tu connais la partie dont tu as besoin. Ces commandes lisent le texte sans modifier le fichier enregistré.

  2. 2
    ExempleRéunis deux courtes notes

    a.txt contient « a » et « b » sur des lignes séparées. b.txt contient « c d ». Exécute cat -n a.txt b.txt.

    La sortie contient trois lignes numérotées, dans cet ordre. La numérotation se poursuit du premier fichier au second ; les numéros ne sont ajoutés qu’à la sortie. Pour enregistrer le texte d’origine réuni sans numérotation, exécute cat a.txt b.txt > ab.txt.

  3. 3
    ExplicationOuvre une vue de lecture

    Exécute less /etc/services pour lire un fichier long écran par écran. Le programme garde la vue ouverte et attend des touches de navigation.

    Espace avance d’un écran, b recule et les touches fléchées permettent de parcourir les lignes. g va à la première ligne ; G à la dernière. Appuie sur q pour fermer la vue et revenir au shell. L’absence d’invite de commande est normale tant que le pageur est ouvert.

  4. 4
    ExempleRecherche et poursuis la recherche

    Dans less, saisis /ssh et appuie sur Entrée pour rechercher « ssh » vers l’avant. Appuie sur n pour passer à la correspondance suivante dans ce sens ou sur N pour aller dans le sens opposé.

    Une recherche vers l’arrière commence par ?ssh. Après cette recherche, n continue vers l’arrière. Le sens dépend de la recherche que tu as lancée. less -N file ajoute les numéros de ligne si tu dois noter l’emplacement d’une correspondance.

  5. 5
    DéfiTrouve la correspondance précédente

    Tu as recherché « listen » vers l’avant dans un long fichier avec less. Tu veux revenir à la correspondance précédente, puis quitter le pageur. Sur quelles touches appuies-tu ?

    ---reveal---

    Appuie sur N pour te déplacer dans le sens opposé à la recherche vers l’avant, puis sur q pour quitter. n en minuscule continuerait vers l’avant. C’est la fermeture du pageur qui rétablit l’invite de commande ; atteindre une correspondance ou la fin du fichier ne le ferme pas.

  6. 6
    ExplicationChoisis un nombre ou une ligne de départ

    head -n 4 file affiche les quatre premières lignes. tail -n 4 file affiche les quatre dernières. Sans -n, chaque commande affiche dix lignes par défaut.

    Un signe plus change le rôle de tail : tail -n +4 file commence à la ligne 4 et affiche tout ce qui suit. Pour un fichier comportant une ligne d’en-tête, tail -n +2 file retire cet en-tête. La commande conserve tous les enregistrements de données, pas seulement les deux derniers.

  7. 7
    ExempleSélectionne les lignes 11 à 20

    Supposons qu’un fichier contient les nombres de 1 à 100, un par ligne. Commence par head -n 20 numbers.txt, qui conserve de 1 à 20.

    Ajoute | tail -n 10. Les dix dernières lignes de l’entrée sélectionnée vont de 11 à 20. Les deux extrémités comptent : cette plage contient donc dix lignes. Demander onze lignes à tail inclurait aussi la ligne 10 et déplacerait le début vers l’arrière.

  8. 8
    DéfiChoisis une autre plage au milieu

    Un fichier contient au moins 17 lignes. Écris un pipeline avec head et tail qui affiche les lignes 12 à 17, en incluant les deux extrémités.

    ---reveal---

    Utilise head -n 17 file | tail -n 6. Conserve d’abord les lignes 1 à 17, puis les six dernières de cette sélection : 12, 13, 14, 15, 16 et 17. Un nombre de cinq omettrait la ligne 12, car les extrémités sont incluses dans la plage demandée.

  9. 9
    DéfiExamine le texte le plus récent et poursuis la surveillance

    Tu dois voir les dernières entrées d’un long fichier d’application et continuer à les surveiller à mesure que de nouvelles arrivent. Quelle commande convient et comment la quittes-tu ?

    ---reveal---

    Utilise tail -f app.log, puis Ctrl+C lorsque tu as terminé. tail seul afficherait la fin actuelle puis quitterait. tail -F est utile lorsque le programme remplace le fichier lors d’une rotation, car il continue à suivre le nom du fichier malgré son remplacement.

  10. 10
    RécapitulatifUtilise la vue adaptée à la tâche

    Pour un fichier court en entier, utilise cat ; pour naviguer et rechercher, ouvre less. Un pageur reste ouvert jusqu’à ce que tu le quittes.

    Utilise head et tail pour le début, la fin ou une plage au milieu. Dans le nombre de lignes de tail, lis un signe plus comme une position de départ. Pour une vue en direct, suis le texte ajouté avec tail -f et arrête avec Ctrl+C. La sélection fonctionne aussi lorsque le texte arrive par un tube.

2

Suis le parcours des entrées, des résultats et des erreurs

11 étapes
Relie des fichiers aux flux standard et suis l’ordre des redirections du shell.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionTrace trois voies distinctes
  2. 2
    ExplicationNomme les flux standard
  3. 3
    ExempleFournis les mêmes données par une autre voie
  4. 4
    DéfiTermine la saisie au clavier
  5. 5
    ExempleFournis plusieurs lignes sous une commande
  6. 6
    ExplicationChoisis entre remplacer et ajouter
  7. 7
    ExempleRegroupe les résultats et les messages de diagnostic
  8. 8
    DéfiInverse les connexions
  9. 9
    ConseilGarde l’entrée intacte
  10. 10
    DéfiCompte les entrées et sépare un message de diagnostic
  11. 11
    RécapitulatifSuis la mise en place par le shell
3

Construis un rapport textuel utile

14 étapes
Examine un pipeline qui sélectionne une colonne, regroupe les valeurs, les compte et enregistre les résultats.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDonne une tâche à chaque étape
  2. 2
    ExplicationRelie les deux commandes
  3. 3
    DéfiChoisis un tube ou un fichier
  4. 4
    ExplicationSache ce que mesure la commande de comptage
  5. 5
    ExempleDistingue le tri du comptage
  6. 6
    DéfiExplique pourquoi un doublon subsiste
  7. 7
    ExplicationSélectionne la colonne utile
  8. 8
    ExempleRetire l’en-tête et examine les valeurs
  9. 9
    DéfiVérifie une hypothèse sur le séparateur
  10. 10
    ExempleRegroupe les valeurs sélectionnées
  11. 11
    ExempleClasse les décomptes
  12. 12
    LienConserve un résultat avant le comptage final
  13. 13
    DéfiDiagnostique une catégorie supplémentaire
  14. 14
    RécapitulatifVérifie ce qui circule entre les étapes
4

Construis des motifs correspondant au texte recherché

15 étapes
Choisis les options de grep, puis construis des motifs de base et étendus, un opérateur à la fois.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDétermine ce qui constitue une correspondance
  2. 2
    ExplicationChoisis un résultat de recherche
  3. 3
    ExempleDistingue un mot d’une ligne
  4. 4
    DéfiRecherche une notation exacte de version
  5. 5
    ConseilEffectue une recherche dans un répertoire ou sans affichage
  6. 6
    ExplicationSitue une correspondance dans la ligne
  7. 7
    ExempleSélectionne un caractère dans un ensemble
  8. 8
    Point cléAutorise zéro occurrence
  9. 9
    DéfiTrouve une fin littérale de nom de fichier
  10. 10
    ExplicationActive les opérateurs étendus
  11. 11
    ExempleVérifie un code entier
  12. 12
    ExempleRegroupe un choix ou une partie répétée
  13. 13
    DéfiExtrais des parties et examine leurs limites
  14. 14
    DéfiNe garde que les paramètres actifs
  15. 15
    RécapitulatifVérifie séparément le motif et le résultat
5

Sélectionne les fichiers avant d’agir sur eux

12 étapes
Choisis une racine de recherche, applique des tests sur les fichiers et transmets les chemins complets à la commande suivante.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDistingue les noms des contenus
  2. 2
    ExplicationChoisis le répertoire de départ
  3. 3
    ExempleCombine le type et le nom
  4. 4
    DéfiConserve le caractère générique pour find
  5. 5
    ExplicationCompare les tailles arrondies en unités
  6. 6
    DéfiInterprète le seuil en jours
  7. 7
    ExplicationTransmets des chemins comme arguments
  8. 8
    ExempleRecherche seulement dans les contenus sélectionnés
  9. 9
    ConseilPlace une action destructive après ses tests
  10. 10
    ExplicationChoisis un index ou une recherche de commande
  11. 11
    DéfiChoisis une vérification à jour du contenu
  12. 12
    RécapitulatifAdapte la recherche aux informations nécessaires
6

Effectue et enregistre une petite modification dans le terminal

13 étapes
Modifie un paramètre dans nano et vi, puis choisis d’enregistrer ou d’abandonner les modifications en cours.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDistingue le texte de travail du texte enregistré
  2. 2
    ExplicationLis les commandes de nano
  3. 3
    ExempleTrouve et remplace une valeur
  4. 4
    DéfiDéplace une ligne et corrige une erreur
  5. 5
    ConseilRéponds à la question de sortie
  6. 6
    ExplicationPasse en mode insertion dans vi
  7. 7
    ExempleDéplace-toi jusqu’au texte recherché
  8. 8
    ExempleModifie le paramètre dans vi
  9. 9
    DéfiColle selon le type de texte copié
  10. 10
    ConseilEffectue de petites modifications et annule-les
  11. 11
    DéfiChoisis de conserver ou non la modification dans vi
  12. 12
    DéfiCompare deux modifications inachevées
  13. 13
    RécapitulatifTermine en enregistrant ou en abandonnant volontairement

Tubes et redirection sous Linux : QCM

50 Questions Pratiques en 5 séries

Série 1 : Lis du texte et suis son parcours10 Questions Pratiques

Question 1 sur 10

Tu lis un fichier long dans less. Quelle touche suffit pour revenir au shell ?
  1. g
  2. h
  3. q
  4. n
Afficher la réponseMasquer la réponse
Réponse : C
Appuie sur q pour quitter le pageur et revenir à l’invite de commande. g va au début du fichier mais garde le pageur ouvert : cette touche ne peut donc pas rétablir l’invite. L’absence de cette invite pendant la lecture signifie que less traite toujours tes touches.

Question 2 sur 10

Qu’affiche tail -n +3 records.txt ?
  1. Toutes les lignes à partir de la ligne 3.
  2. Seulement les trois dernières lignes.
  3. Seulement la ligne 3 du fichier.
  4. Toutes les lignes avant la ligne 3.
Afficher la réponseMasquer la réponse
Réponse : A
Le signe plus fait de 3 une position de départ : la commande affiche donc la ligne 3 et toutes les lignes suivantes. Sans le signe plus, tail -n 3 sélectionnerait les trois dernières lignes. Retirer deux lignes au début et sélectionner trois lignes à la fin sont des opérations différentes.

Question 3 sur 10

Les résultats normaux d’une commande sont enregistrés avec > report.txt, mais ses messages de diagnostic restent visibles. Quel flux transporte ces messages ?
  1. L’entrée standard, descripteur 0.
  2. La sortie standard, descripteur 1.
  3. La sortie standard, descripteur 2.
  4. La sortie d’erreur standard, descripteur 2.
Afficher la réponseMasquer la réponse
Réponse : D
Les messages de diagnostic passent normalement par stderr, numéro 2, séparément des résultats normaux sur stdout, numéro 1. L’opérateur > ne redirige que stdout, ce qui explique pourquoi les erreurs peuvent rester à l’écran. Le partage du terminal par défaut ne fait pas de ces deux sorties un seul flux.

Question 4 sur 10

Tu veux conserver un rapport existant et ajouter stdout d’une commande à sa fin. Quelle redirection permet de le faire ?
  1. > report.txt
  2. >> report.txt
  3. 2> report.txt
  4. < report.txt
Afficher la réponseMasquer la réponse
Réponse : B
L’opérateur >> ajoute stdout en fin de fichier, en conservant le texte existant et en créant le fichier si nécessaire. Un seul > ouvre le fichier après avoir vidé son ancien contenu. 2> redirige les messages de diagnostic plutôt que les résultats normaux : il sélectionne donc aussi le mauvais flux pour cette tâche.

Question 5 sur 10

Une commande affiche cinq lignes de résultats normaux et deux lignes de diagnostic. Quel nombre de lignes command | wc -l indique-t-il ?
  1. 7
  2. 2
  3. 5
  4. 0
Afficher la réponseMasquer la réponse
Réponse : C
Le tube transmet les cinq lignes de stdout à wc -l, ce qui donne un décompte de 5. Les deux lignes de stderr gardent leur voie distincte et n’entrent pas dans le comptage. Un décompte de 7 exigerait de combiner stderr avec stdout avant le tube, ce que cette ligne de commande ne fait pas.

Question 6 sur 10

Un fichier contient « 18 », « 4 » et « 105 », chacun sur sa propre ligne. Quel ordre sort -n produit-il ?
  1. 105, 18, 4
  2. 18, 105, 4
  3. 4, 105, 18
  4. 4, 18, 105
Afficher la réponseMasquer la réponse
Réponse : D
Le tri numérique compare les valeurs : 4 vient donc avant 18 et 105. Un tri textuel simple commencerait par 105, car son premier caractère est « 1 », puis placerait 18 avant 4. L’option -n change la comparaison ; elle ne se contente pas d’inverser l’ordre textuel par défaut.

Question 7 sur 10

supplies.txt contient « clip », « ring », « clip », « pad », « clip », « ring » et « clip », chacun suivi d’un saut de ligne. Quelles sont les deux premières lignes produites par sort supplies.txt | uniq -c | sort -rn | head -n 2, sans tenir compte des espaces devant les nombres ?
  1. « 4 clip » puis « 2 ring ».
  2. « 4 clip » puis « 1 pad ».
  3. « 4 ring » puis « 2 clip ».
  4. « 1 clip » puis « 1 ring ».
Afficher la réponseMasquer la réponse
Réponse : A
Le premier tri regroupe quatre lignes clip, deux lignes ring et une ligne pad. uniq compte ces groupes, puis le tri numérique inverse classe les décomptes et head garde les deux premiers. L’unique ligne pad n’est pas deuxième, car l’ordre final suit la fréquence, pas l’ordre textuel des noms.

Question 8 sur 10

Un fichier contient les lignes « FAIL », « fail », « failure » et « all clear ». Combien de lignes grep -ic 'fail' file compte-t-il ?
  1. 1
  2. 3
  3. 2
  4. 4
Afficher la réponseMasquer la réponse
Réponse : B
Ignorer la casse permet de trouver à la fois « FAIL » et « fail », et grep trouve aussi la même suite de caractères dans « failure ». Cela fait trois lignes correspondantes. Un décompte de 2 exigerait une restriction aux mots entiers telle que -w, absente de cette commande.

Question 9 sur 10

L’arborescence contient un fichier ordinaire docs/a.txt, un répertoire docs/b.txt et un fichier ordinaire docs/c.TXT. Que sélectionne find docs -type f -name '*.txt' ?
  1. Seulement docs/a.txt.
  2. docs/a.txt et docs/b.txt.
  3. docs/a.txt et docs/c.TXT.
  4. Les trois chemins sous docs.
Afficher la réponseMasquer la réponse
Réponse : A
Les deux tests doivent être satisfaits : l’élément doit être un fichier ordinaire et son nom doit correspondre au suffixe en respectant la casse. Seul a.txt satisfait les deux. b.txt échoue au test sur le type, tandis que c.TXT nécessiterait le test -iname, insensible à la casse, pour correspondre au même motif de suffixe.

Question 10 sur 10

Tu as terminé tes modifications dans nano. Quelle séquence de touches enregistre le tampon courant sous le nom affiché ?
  1. Ctrl+R, puis Entrée.
  2. Ctrl+K, puis Ctrl+U.
  3. Ctrl+O, puis Entrée.
  4. Ctrl+X, puis N.
Afficher la réponseMasquer la réponse
Réponse : C
Ctrl+O lance Write Out et Entrée confirme le nom de fichier affiché, ce qui écrit le tampon courant sur le disque. Ctrl+R lit à la place le texte d’un autre fichier dans le tampon. Ctrl+X suivi de N quitte sans enregistrer les modifications : cela abandonnerait donc le travail que tu veux conserver.
Série 2 : Choisis des commandes et interprète les correspondances10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Après une recherche vers l’arrière avec ?queue dans less, que fait n ?
  1. Trouve la correspondance suivante vers l’avant.
  2. Trouve la correspondance suivante vers l’arrière.
  3. Passe à l’écran suivant vers l’avant.
  4. Passe à la première ligne du fichier.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

labels.txt contient huit lignes terminées par un saut de ligne. En quoi la sortie de wc -l < labels.txt diffère-t-elle de celle de wc -l labels.txt ?
  1. Elle omet le décompte mais garde le nom du fichier.
  2. Elle affiche un décompte différent sans nom.
  3. Elle ajoute une ligne de total après le même décompte.
  4. Elle omet le nom du fichier mais garde le décompte 8.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Dans un terminal nouvellement ouvert, une commande écrit ses résultats sur stdout et ses messages de diagnostic sur stderr. Où va chacun dans command 2>&1 > result.txt ?
  1. Résultats dans le fichier ; diagnostics dans le terminal.
  2. Résultats dans le terminal ; diagnostics dans le fichier.
  3. Les deux flux dans le fichier ; aucun dans le terminal.
  4. Les deux flux dans le terminal ; aucun dans le fichier.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

teams.csv contient « name,team », « Uma,Blue », « Zed,Gold », « Ivo,Blue » et « Moe,Gold », chaque ligne étant terminée par un saut de ligne. Qu’indique cut -d, -f2 teams.csv | sort | uniq | wc -l ?
  1. 2
  2. 4
  3. 3
  4. 5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Quelle commande recherche dans build.txt le texte littéral « v3.8 », avec le véritable point ?
  1. grep -F 'v3.8' build.txt
  2. grep -E 'v3.8' build.txt
  3. grep -i 'v3.8' build.txt
  4. grep -w 'v3.8' build.txt
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Les lignes sont « dog », « dig », « drag » et « undog ». Quelles lignes correspondent à grep '^d.g$' file ?
  1. Toutes sauf « drag ».
  2. « dog » et « dig ».
  3. Toutes sauf « undog ».
  4. Toutes sauf « dig ».
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Quelles lignes correspondent à grep '^ba*t$' file parmi « bt », « bat », « baat » et « boat » ?
  1. « bat » et « baat » seulement.
  2. « bat », « baat » et « boat ».
  3. « bt », « bat » et « boat ».
  4. « bt », « bat » et « baat ».
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Une arborescence notes contient des noms de fichiers avec des espaces. Tu as besoin des noms des fichiers .txt modifiés récemment qui contiennent « REVIEW ». Quelle commande applique les trois restrictions ?
  1. find notes -type f -name '*.txt' -mtime -7 | grep -l 'REVIEW'
  2. find notes -type f -name '*.md' -mtime -7 -exec grep -l 'REVIEW' {} +
  3. find notes -type f -name '*.txt' -mtime -7 -exec grep -l 'REVIEW' {} +
  4. find notes -type f -name '*.txt' -mtime +7 -exec grep -l 'REVIEW' {} +
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

À la question de sortie « Save modified buffer? » de nano, quelle touche permet de revenir à la modification sans quitter l’éditeur ?
  1. N
  2. Ctrl+C
  3. Y
  4. Ctrl+O
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

En mode normal de vi, tu copies une ligne avec yy et appuies sur p. Où la ligne copiée apparaît-elle ?
  1. Au-dessus de la ligne courante.
  2. Après le curseur dans la ligne.
  3. Avant le curseur dans la ligne.
  4. Sous la ligne courante.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Suis les pipelines et corrige les erreurs10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un fichier contient au moins 28 lignes. Quelle commande affiche exactement les lignes 19 à 28 ?
  1. head -n 28 file | tail -n 9
  2. head -n 19 file | tail -n 10
  3. head -n 28 file | tail -n +19 | head -n 9
  4. head -n 28 file | tail -n 10
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Qu’arrive-t-il au contenu existant avant que echo done > state.txt écrive sa sortie ?
  1. Il reste avant la nouvelle ligne ajoutée à la fin.
  2. Il est supprimé lorsque le shell ouvre le fichier.
  3. Il passe sur stderr avant l’écriture de la nouvelle ligne.
  4. Il reste sauf si echo indique que l’écriture a réussi.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

parts.txt contient « pin », « bolt », « pin », « nut » et « bolt », chacun suivi d’un saut de ligne. Que fait sort parts.txt | uniq | tee distinct.txt | wc -l ?
  1. Affiche 5 ; enregistre les cinq lignes d’origine.
  2. Affiche 3 ; enregistre seulement le décompte.
  3. Affiche 3 ; enregistre trois noms distincts.
  4. Affiche 5 ; enregistre trois noms distincts.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

runs.txt contient « b », « a », « b », « a » et « a », chacun sur sa propre ligne. Quelle paire nombre-valeur apparaît en premier avec uniq -c runs.txt | sort -rn ?
  1. 2 a
  2. 3 a
  3. 2 b
  4. 1 b
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Qu’affiche cut -d: -f3,1 à partir de la ligne « Nia:ops:42 » ?
  1. « 42:Nia »
  2. « Nia:42 »
  3. « Nia:ops »
  4. « 42:ops »
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Quelles lignes complètes correspondent à grep -E '^(go)+$' file ?
  1. « go » et « gogo ».
  2. « go » et « goo ».
  3. « g » et « go ».
  4. « go » et « gog ».
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une ligne contient « node=7 node=24 node=301 ». Quelle sortie grep -Eo '[0-9]{1,2}' produit-il à partir de cette ligne ?
  1. « 7 » et « 24 », sur des lignes séparées.
  2. « 7 », « 24 », « 301 », sur des lignes séparées.
  3. « 7 », « 24 », « 30 », « 1 », sur des lignes séparées.
  4. « 7 », « 2 », « 4 », « 3 », « 0 », « 1 », sur des lignes séparées.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Parmi les tailles 0 octet, 1 octet, 800 000 octets et 1 048 576 octets, laquelle satisfait le test -size -1M de GNU find ?
  1. Jusqu’à 1 octet.
  2. Toutes celles sous 1 MiB.
  3. Les quatre tailles.
  4. Seulement 0 octet.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Pourquoi locate plan.txt peut-il afficher un chemin supprimé ce matin ?
  1. Il lit le contenu des fichiers supprimés sur l’entrée standard.
  2. Son test sur le nom ignore l’état actuel de chaque répertoire.
  3. Sa base de chemins ne reflète pas encore la suppression.
  4. Il parcourt PATH avant de vérifier le nom demandé.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Tu es en mode insertion dans vi avec des modifications que tu veux conserver. Quelle séquence enregistre et quitte ?
  1. Échap, :wq, Entrée.
  2. Échap, :q!, Entrée.
  3. Échap, :q, Entrée.
  4. Échap, wq, Entrée.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Diagnostique les traitements de fichiers et de texte10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Tu veux enregistrer first.txt suivi de second.txt dans joined.txt, avec des numéros de sortie qui se poursuivent d’un fichier d’entrée à l’autre. Quelle commande le fait ?
  1. cat -n first.txt second.txt > joined.txt
  2. cat first.txt second.txt > joined.txt
  3. cat -n second.txt first.txt > joined.txt
  4. cat -n first.txt second.txt | wc -l > joined.txt
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

ls -lt produit un en-tête « total » suivi d’entrées de fichiers. Combien d’entrées ls -lt | head -n 6 affiche-t-il lorsqu’il en existe au moins six ?
  1. 6
  2. 4
  3. 5
  4. 7
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Lors de la saisie interactive de lignes dans sort, qu’est-ce qui signale la fin de l’entrée au début d’une ligne vide ?
  1. Ctrl+C
  2. Ctrl+D
  3. Ctrl+O
  4. Ctrl+W
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Une commande produit quatre lignes sur stdout et une ligne sur stderr. Que produit command 2>&1 | tee combined.txt | wc -l ?
  1. Affiche 4 ; enregistre seulement les résultats normaux.
  2. Affiche 5 ; enregistre seulement le décompte final.
  3. Affiche 4 ; enregistre résultats et diagnostics.
  4. Affiche 5 ; enregistre résultats et diagnostics.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

La ligne d’entrée est « A B C », avec deux espaces après A. Qu’affiche cut -d' ' -f2 ?
  1. « B »
  2. « C »
  3. Une ligne vide.
  4. « A »
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Un fichier contient « alert alert », « prealert », « Alert raised » et « all clear ». Qu’indique grep -icw 'alert' file ?
  1. 2
  2. 1
  3. 3
  4. 4
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une liste contient « x.cfg », « xXcfg », « x.cfg.old » et « cfg ». Quel motif sélectionne seulement les lignes se terminant par le suffixe littéral « .cfg » ?
  1. .cfg$
  2. \.cfg
  3. ^\.cfg$
  4. \.cfg$
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Une arborescence contient les fichiers ordinaires « old.cfg » (datant de 30,9 jours), « notes.txt » (31,1 jours) et « runtime.cfg » (31,1 jours), ainsi qu’un répertoire « archive.cfg » (31,1 jours). Que sélectionne find . -type f -name '*.cfg' -mtime +30 ?
  1. Les deux fichiers « .cfg ».
  2. Seulement « runtime.cfg ».
  3. Tous les fichiers de 31,1 jours.
  4. Tous les « .cfg » de 31,1 jours.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Dans nano, tu coupes une ligne par accident et veux la rétablir en annulant cette action. Quel raccourci le permet ?
  1. Alt+U
  2. Ctrl+U
  3. Ctrl+K
  4. Alt+A
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Une ligne dans vi commence par quatre espaces avant « enabled=yes ». Depuis le mode normal, où I commence-t-il l’insertion ?
  1. Avant les quatre espaces, à la première colonne.
  2. Avant « enabled », après les quatre espaces.
  3. Après « enabled=yes », à la fin de la ligne.
  4. Sur une nouvelle ligne vide au-dessus du paramètre.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Combine les règles dans des cas nouveaux10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un fichier de données comporte un en-tête d’une ligne suivi de 30 enregistrements. Quelle commande affiche les lignes 14 à 18 du fichier d’origine après avoir retiré l’en-tête ?
  1. tail -n +2 file | head -n 18 | tail -n 5
  2. tail -n +2 file | head -n 17 | tail -n 4
  3. tail -n +2 file | head -n 17 | tail -n 5
  4. tail -n +2 file | head -n 14 | tail -n 5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une commande écrit deux lignes normales et une ligne de diagnostic. log.txt et err.txt contiennent déjà du texte ancien. Que se passe-t-il avec command >> log.txt 2> err.txt ?
  1. Les lignes normales remplacent log ; le diagnostic s’ajoute à err.
  2. Les lignes normales s’ajoutent à log ; le diagnostic remplace err.
  3. Les deux flux s’ajoutent à log ; err garde son ancien texte.
  4. Les lignes normales s’ajoutent à err ; le diagnostic remplace log.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

sizes.csv contient « name,size », « alpha,8 », « beta,110 » et « gamma,24 ». Quel pipeline affiche d’abord les deux enregistrements de données complets ayant les plus grandes tailles numériques ?
  1. tail -n +2 sizes.csv | sort -t, -k2,2r | head -n 2
  2. tail -n +2 sizes.csv | sort -t, -k2,2n | head -n 2
  3. tail -n +2 sizes.csv | sort -t, -k1,1nr | head -n 2
  4. tail -n +2 sizes.csv | sort -t, -k2,2nr | head -n 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

jobs.csv contient « id,zone », « 1,North », « 2,South », « 3,North », « 4,East » et « 5,North ». Quelle paire nombre-valeur apparaît en premier avec tail -n +2 jobs.csv | cut -d, -f2 | sort | uniq -c | sort -rn ?
  1. 3 North
  2. 1 North
  3. 2 North
  4. 1 zone
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Quelle option courte permet à grep d’afficher les numéros des lignes d’entrée avec les lignes correspondantes ?
  1. -c
  2. -n
  3. -l
  4. -o
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Quelle ligne correspond à grep '^r[^ae]d$' file parmi « rad », « red », « rid » et « road » ?
  1. « rad »
  2. « red »
  3. « rid »
  4. « road »
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Un fichier de configuration contient « # memo », trois espaces, « mode=fast » et « x#y=on », chacun sur une ligne distincte. Que reste-t-il après grep -Ev '^[[:space:]]*(#|$)' file ?
  1. « mode=fast » et « x#y=on ».
  2. « mode=fast » seulement.
  3. « # memo » et « mode=fast ».
  4. Trois espaces et « x#y=on ».
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Tu veux connaître l’interprétation d’une commande par Bash, y compris un éventuel alias ou une commande interne. Quelle commande utiliser pour le nom echo ?
  1. which echo
  2. locate echo
  3. find . -name echo
  4. type echo
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

En mode normal de vi, x supprime un caractère. Tu appuies ensuite sur p. Où ce caractère est-il inséré ?
  1. Avant le curseur.
  2. Sous la ligne courante.
  3. Après le curseur.
  4. Au-dessus de la ligne courante.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Tu as besoin des fichiers ordinaires situés directement dans work, sans aucun fichier des répertoires plus profonds. Quelle recherche le permet ?
  1. find work -maxdepth 1 -type d
  2. find work -maxdepth 1 -type f
  3. find work -maxdepth 2 -type f
  4. find work -maxdepth 0 -type f
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

72 Mots-Clés, chacun avec sa définition

A

ajouter en fin de fichier
Ajouter en fin de fichier consiste à ajouter une sortie à la fin d’un fichier en préservant son contenu existant, avec >> pour la sortie standard d’une commande.
Des commandes répétées utilisant >> report.txt recueillent leurs résultats dans un seul fichier au lieu de le remplacer.
alternative
Une alternative exprime un choix entre des motifs d’expression régulière avec | en syntaxe étendue, souvent avec des parenthèses pour limiter la portée du choix.
Dans ^(east|west)$, les deux possibilités doivent occuper toute la ligne, car elles partagent les ancres.
ancre
Une ancre limite une correspondance d’expression régulière à une position, comme ^ pour le début ou $ pour la fin d’une ligne dans les recherches grep ordinaires.
Ajouter les deux ancres à d.g exclut une ligne plus longue comme « undog », même si elle contient « dog ».

C

cat
cat est une commande qui affiche le contenu d’un ou plusieurs fichiers sur la sortie standard, en suivant l’ordre des fichiers donnés en arguments.
La commande cat -n a.txt b.txt numérote leur sortie combinée sans modifier les fichiers d’entrée.
chaîne en ligne
Une chaîne en ligne est une redirection d’entrée Bash qui fournit à une commande, par l’entrée standard, une seule chaîne suivie d’un saut de ligne.
La commande wc -w <<< "red blue green" reçoit trois mots sans nécessiter de fichier d’entrée distinct.
champ
Un champ est une partie d’un enregistrement séparé, numérotée à partir de 1 par cut et sélectionnée selon le délimiteur utilisé dans cet enregistrement.
Dans « Lena,Oslo,74 », le champ 2 est « Oslo » lorsque la virgule est le séparateur choisi pour la ligne.
champ vide
Un champ vide ne contient aucun caractère entre ses séparateurs ; des délimiteurs consécutifs peuvent donc produire un champ qui ressemble à une valeur manquante.
Avec un espace comme délimiteur, « a b » possède un deuxième champ vide entre ses deux espaces.
classe de caractères
Une classe de caractères est un groupe nommé, comme les chiffres, les lettres ou les caractères d’espacement, utilisé dans une expression entre crochets et lié aux paramètres régionaux.
L’expression complète [[:digit:]] sélectionne un chiffre ; les deux paires de crochets sont nécessaires.
clé de tri
Une clé de tri est le champ ou la partie d’une ligne utilisée pour la comparaison, sélectionné avec sort -k et interprété selon le séparateur choisi.
La clé -k3,3nr compare seulement le champ 3, numériquement et dans l’ordre inverse, dans un classement de scores.
code de retour
Un code de retour est un nombre qu’une commande renvoie au shell, comme les codes habituels de grep : 0 pour une correspondance, 1 pour aucune correspondance ou 2 pour une erreur.
Une recherche silencieuse avec grep -q utilise son code pour indiquer un résultat sans afficher les lignes correspondantes.
comptage des occurrences
Un comptage des occurrences indique combien de fois chaque valeur apparaît ; il se construit couramment en regroupant les lignes identiques avec sort et en comptant les suites avec uniq -c.
Ajoute sort -rn après uniq -c pour placer les plus grands nombres en premier lors de l’examen des entrées fréquentes.
concaténation
La concaténation réunit des séquences de texte dans l’ordre, par exemple en affichant à la suite le contenu de plusieurs fichiers avec cat.
Avec cat first.txt second.txt > combined.txt, le texte du premier fichier précède celui du second.
copier
Copier consiste à dupliquer du texte dans vi pour le coller plus tard, comme le fait yy pour une ligne entière sans la retirer du tampon de travail.
Utilise yy suivi de p pour dupliquer une ligne sous sa position d’origine dans le fichier.
correspondance sur un mot entier
Une correspondance sur un mot entier exige que le texte correspondant occupe un mot entier, même si d’autres mots peuvent apparaître sur la même ligne.
grep -w error file trouve « error found » mais rejette la sous-chaîne dans « terror ».
cut
cut est un filtre qui sélectionne des champs ou des positions de caractères fixes dans chaque ligne d’entrée, en conservant les parties sélectionnées dans leur ordre d’origine.
La commande cut -d: -f1,6 /etc/passwd associe chaque nom de compte au champ de son répertoire personnel.

D

date de modification
La date de modification enregistre le moment de la dernière modification du contenu d’un fichier ; -mtime dans find teste le temps écoulé en périodes complètes de 24 heures.
Un fichier modifié il y a 30,5 jours échoue à -mtime +30, car seules 30 périodes complètes d’une journée se sont écoulées.
délimiteur
Un délimiteur est un séparateur entre les champs, comme un deux-points, une virgule ou une tabulation ; cut -d sélectionne le caractère utilisé pour découper chaque ligne.
Pour l’enregistrement « Mia:ops:41 », un délimiteur deux-points fait de « ops » le champ 2, quelle que soit la longueur du mot.
descripteur de fichier
Un descripteur de fichier est un numéro qui identifie une connexion ouverte en entrée ou en sortie, notamment 0 pour stdin, 1 pour stdout et 2 pour stderr.
Le 2 dans 2> errors.txt sélectionne le flux d’erreur et doit toucher l’opérateur de redirection.
document en ligne
Un document en ligne fournit plusieurs lignes à l’entrée standard, jusqu’à ce que le shell atteigne une ligne contenant seulement le délimiteur choisi.
Avec cat <<EOF, les lignes saisies avant le EOF de fermeture sont des données, tandis que cette dernière ligne est un marqueur.
duplication de descripteur
La duplication de descripteur relie un flux numéroté à la destination actuelle d’un autre flux, comme le fait 2>&1 pour stderr et stdout.
Dans command > all.txt 2>&1, stderr reçoit la connexion au fichier dont dispose déjà stdout.

E

entrée standard
L’entrée standard est le flux de données entrant d’une commande, numéroté 0, que le shell peut relier au clavier, à un fichier ou à un tube.
Dans sort < names.txt, le shell relie le fichier à l’entrée standard de la commande avant son exécution.
expression entre crochets
Une expression entre crochets sélectionne un caractère dans un ensemble ou une plage ; un accent circonflexe placé au début dans l’ensemble inverse les caractères admissibles.
Le motif b[ae]t correspond à « bat » ou à « bet », tandis que b[^a]t exclut « a » de la position centrale.
expression régulière
Une expression régulière est un motif qui décrit le texte correspondant au moyen de caractères littéraux et d’opérateurs de position, de choix ou de répétition.
Le motif ^web[0-9]$ décrit une ligne entière contenant « web » suivi d’un chiffre.
expression régulière étendue
Une expression régulière étendue donne leur sens particulier aux opérateurs tels que ?, +, |, les accolades et les parenthèses sans barre oblique inverse.
Utilise grep -E avant un motif groupé tel que ^(red|blue)$ pour activer l’alternative.
extraction des correspondances
L’extraction des correspondances affiche les fragments de texte correspondants au lieu des lignes d’entrée entières, comme le fait l’option -o de grep pour chaque correspondance non vide.
Si une ligne contient « id=42 id=57 », grep -Eo '[0-9]+' affiche les deux nombres sur des lignes séparées.

É

échappement
L’échappement utilise une barre oblique inverse pour changer la façon dont un caractère spécial est interprété, par exemple pour qu’un point d’expression régulière corresponde à un véritable point plutôt qu’à n’importe quel caractère.
Le motif \.txt$ exige une fin littérale « .txt », tandis que .txt$ autorise un autre caractère avant « txt ».
Écrire
Écrire est l’action d’enregistrement de nano, lancée avec Ctrl+O et achevée en confirmant le nom du fichier de destination, normalement avec Entrée.
Après avoir modifié un paramètre, utilise Écrire avant de quitter si tu veux conserver le nouveau texte sur le disque.
éditeur modal
Un éditeur modal attribue des sens différents aux mêmes touches selon le mode, en séparant la saisie de texte des commandes de déplacement et de modification.
Dans vi, appuyer sur « x » supprime un caractère en mode normal, mais saisit un « x » en mode insertion.

F

filtre
Un filtre lit des données sur l’entrée standard, les sélectionne ou les modifie, puis écrit un résultat sur la sortie standard afin de pouvoir fonctionner dans un pipeline.
sort, cut et grep agissent chacun comme des filtres lorsqu’ils reçoivent du texte d’une commande précédente.
find
find effectue une recherche dans une arborescence à partir des chemins de départ indiqués, teste les propriétés de chaque élément rencontré, puis affiche les chemins sélectionnés ou agit sur eux.
find notes -type f -name '*.txt' sélectionne les fichiers ordinaires dont le nom se termine par l’extension des fichiers texte dans toute cette arborescence.
find -exec
find -exec exécute une autre commande sur les chemins sélectionnés, en remplaçant {} et en utilisant un point-virgule échappé ou un signe plus pour terminer l’action.
L’action -exec wc -l {} + transmet des lots de chemins correspondants à une commande qui compte leurs lignes.

G

grep
grep est une commande de recherche de texte qui affiche normalement chaque ligne d’entrée contenant une correspondance avec un motif, avec des options pour modifier le résultat affiché.
Utilise grep -n WARN app.log pour afficher les lignes correspondantes avec leurs positions dans le fichier.
groupe d’expression régulière
Un groupe d’expression régulière place une séquence entre parenthèses afin qu’un opérateur puisse agir sur elle comme sur un seul élément ou que des alternatives partagent le texte qui les entoure.
L’expression (ab)+ autorise « ab » et « abab », car le signe plus répète le groupe entier de deux caractères.

H

head
head est un filtre qui affiche le début de son entrée : il sélectionne dix lignes par défaut ou un autre nombre de lignes ou d’octets sur demande.
Examine le début d’un fichier avec head -n 4 notes.txt avant de décider si tu as besoin du fichier entier.

L

less
less est un pageur qui permet d’avancer et de reculer, de rechercher du texte et de consulter des fichiers ou une sortie transmise par un tube sans modifier le texte.
Utilise less -N notes.txt pour afficher les numéros de ligne lorsque tu repères un passage particulier dans un fichier.
locate
locate est une recherche rapide de chemins qui interroge une base de données préparée, dont le contenu peut être moins récent que les changements du système de fichiers en activité.
Une note nouvellement créée peut être absente des résultats de locate jusqu’à l’actualisation de la base de chemins.

M

métacaractère
Un métacaractère a un sens particulier dans un motif, comme le point d’expression régulière pour un caractère ou l’astérisque pour la répétition de l’élément précédent.
Les guillemets protègent * du shell, mais grep l’interprète toujours comme un opérateur d’expression régulière lorsqu’il le reçoit.
mode de suivi
Le mode de suivi maintient tail en attente de données ajoutées après sa sortie initiale, afin que le nouveau texte apparaisse pendant qu’un programme écrit dans le fichier.
Exécute tail -f app.log pendant la vérification d’une application, puis appuie sur Ctrl+C lorsque tu as terminé la surveillance.
mode insertion
Le mode insertion fait des caractères saisis du texte dans le tampon de vi ; il commence par des commandes telles que i, a ou o et se termine avec Échap.
Après que cw a supprimé le reste d’un mot, saisis son remplacement en mode insertion, puis appuie sur Échap.
mode ligne de commande
Le mode ligne de commande accepte une commande sur la ligne inférieure de vi après la saisie de : en mode normal et l’exécute lorsque l’on appuie sur Entrée.
La commande :wq enregistre le tampon et quitte après Entrée ; un simple wq en mode normal ne le fait pas.
mode normal
Le mode normal est l’état de commande de vi, dans lequel les touches déplacent le curseur ou modifient le texte ; Échap établit cet état avant une autre commande.
Appuie sur Échap, puis sur dd pour couper la ligne courante sans saisir accidentellement ces deux lettres.

N

nano
nano est un éditeur de texte de terminal qui accepte directement le texte saisi et affiche des raccourcis pour enregistrer, rechercher, couper et quitter.
Ouvre nano +12 app.conf lorsqu’un programme indique qu’un paramètre de la ligne 12 demande ton attention.
noclobber
Noclobber est un réglage de Bash qui bloque la redirection ordinaire > vers des fichiers ordinaires existants, ce qui aide à éviter leur remplacement accidentel.
Après set -o noclobber, utilise >| seulement lorsque tu veux passer outre la protection des fichiers existants.

P

pageur
Un pageur est un programme qui affiche le texte écran par écran et attend des touches de navigation, ce qui permet de lire une sortie longue à son rythme.
Ouvre une longue liste avec less /etc/services, puis appuie sur Espace pour l’écran suivant ou sur q pour quitter.
parcours de l’arborescence
Un parcours de l’arborescence visite les éléments d’une arborescence en passant par les sous-répertoires selon les besoins ; l’ordre de parcours de find n’est pas nécessairement alphabétique.
Ajoute | sort à une simple recherche de chemins lorsque l’ordre des résultats affichés doit être prévisible.
PATH
PATH est la liste des répertoires dans lesquels le shell recherche les commandes exécutables externes ; un outil tel que which l’utilise pour trouver un fichier programme.
which grep recherche dans les répertoires de commandes au lieu de parcourir tous les répertoires de l’ordinateur.
périphérique nul
Le périphérique nul, /dev/null, est un fichier spécial qui élimine les données écrites, ce qui permet de masquer volontairement un flux de sortie choisi.
Ajouter 2>/dev/null masque les messages de diagnostic d’une recherche de fichiers, y compris ceux concernant les répertoires illisibles.
pipeline
Un pipeline est une série de commandes reliées par des tubes, dans laquelle chaque étape reçoit les données produites par l’étape qui la précède immédiatement.
Dans sort values.txt | uniq | wc -l, le décompte final mesure les valeurs distinctes regroupées.
plage de lignes
Une plage de lignes est une sélection consécutive de lignes numérotées ayant un début et une fin, qui inclut normalement les deux extrémités.
Pour afficher les lignes 11 à 20, conserve les 20 premières lignes avec head, puis les dix dernières de cette sélection.
profondeur de recherche
La profondeur de recherche mesure les niveaux sous un chemin de départ ; -maxdepth dans find limite la descente du parcours dans les sous-répertoires.
Utilise -maxdepth 1 pour examiner le répertoire de départ et ses entrées immédiates sans entrer dans les répertoires plus profonds.

Q

quantificateur
Un quantificateur précise combien de fois l’élément précédent d’une expression régulière peut apparaître, comme ? pour du texte facultatif ou {4} pour exactement quatre répétitions.
L’expression [0-9]{4} exige quatre chiffres ; des ancres peuvent imposer que ce soit tout le contenu de la ligne.

R

recherche de chaînes littérales
Une recherche de chaînes littérales traite les caractères du motif comme du texte littéral : les points et les astérisques perdent ainsi leur sens d’expression régulière lorsque grep utilise -F.
Utilise grep -F "v2.4" releases.txt pour exiger le véritable point dans la notation de version.
recherche récursive
Une recherche récursive parcourt un répertoire et ses sous-répertoires ; grep -r recherche du texte dans les fichiers de cette arborescence.
grep -rl TODO notes liste les noms des fichiers correspondants sans afficher tout leur texte correspondant.
redirection
La redirection est une opération du shell qui change la provenance de l’entrée ou la destination de la sortie d’une commande en établissant les connexions avant son exécution.
Dans sort < names.txt > ordered.txt, le shell fournit un fichier en entrée et en ouvre un autre pour la sortie.

S

saut de ligne
Un saut de ligne marque la fin d’une ligne de texte ; wc -l compte ces marqueurs, donc une dernière ligne inachevée ne s’ajoute pas au total indiqué.
Un texte contenant « one », un saut de ligne puis « two » donne un décompte de sauts de ligne de 1 si aucun marqueur final ne suit.
sélection marquée
Une sélection marquée est le texte choisi entre une marque de départ et le curseur, afin que nano puisse couper la partie choisie au lieu d’une ligne entière.
Appuie sur Alt+A pour commencer à marquer, déplace-toi jusqu’à l’autre extrémité, puis utilise Ctrl+K pour couper le texte sélectionné.
sortie d’erreur standard
La sortie d’erreur standard est le flux de diagnostic numéroté 2, séparé des résultats normaux afin que les erreurs et les messages d’état puissent être dirigés indépendamment.
Enregistrer une liste de répertoire avec > peut laisser visible sur la sortie d’erreur standard un message concernant un chemin absent.
sortie standard
La sortie standard est le flux de résultats normaux d’une commande, numéroté 1, qui peut aller vers le terminal, un fichier de sortie ou une autre commande.
Dans wc -l < names.txt > count.txt, le nombre de lignes passe par la sortie standard vers le fichier de rapport.
substitution
Une substitution remplace le texte correspondant par l’intermédiaire de la ligne de commande de vi ; une plage choisit les lignes et des indicateurs contrôlent le remplacement dans celles-ci.
La commande :%s/old/new/g remplace chaque « old » correspondant sur toutes les lignes du fichier.

T

tail
tail est un filtre qui affiche la fin de son entrée ou commence à une ligne numérotée lorsque le nombre de lignes est précédé d’un signe plus.
Utilise tail -n +2 scores.csv pour omettre un en-tête d’une ligne tout en gardant tous les enregistrements de données restants.
tampon
Un tampon est la copie de travail d’un texte conservée en mémoire par un éditeur ; elle peut contenir des modifications qui n’ont pas encore été écrites dans le fichier sur le disque.
Si nano signale une erreur de droits pendant l’enregistrement, le tampon modifié peut différer du fichier enregistré.
tee
tee est un filtre qui copie son entrée à la fois dans un fichier indiqué et sur la sortie standard, enregistrant un résultat tout en laissant le pipeline se poursuivre.
Insère tee selected.txt avant une étape de comptage lorsque tu dois aussi examiner les lignes sélectionnées.
test sur le nom
Un test sur le nom compare le nom de base entier d’un élément à un motif contenant des caractères génériques ; -name dans find distingue les majuscules des minuscules, tandis que -iname les ignore.
Le test -name 'plan*' accepte « plan.txt », tandis que -name 'plan' exige ce nom de base exact.
test sur le type
Un test sur le type limite une recherche de fichiers à un type d’élément, à l’aide de codes tels que f pour un fichier ordinaire, d pour un répertoire ou l pour un lien.
Ajouter -type f empêche qu’un répertoire nommé « old.txt » soit retenu dans une recherche de fichiers texte.
texte à champs de largeur fixe
Un texte à champs de largeur fixe place les informations à des positions de caractères constantes sur chaque ligne, ce qui permet de sélectionner des positions plutôt que de découper selon un délimiteur.
Un code de cinq caractères au début de chaque ligne peut être sélectionné avec cut -c1-5, même si le texte qui suit varie.
tri numérique
Un tri numérique compare les valeurs numériques de champs textuels : des valeurs comme 9 et 100 sont ainsi classées selon leur grandeur plutôt que selon leur premier chiffre.
Utilise sort -n pour placer « 9 » avant « 100 » lorsque les lignes représentent des quantités plutôt que des étiquettes.
troncature
La troncature vide un fichier de sortie existant lorsque le shell l’ouvre pour une redirection ordinaire avec >, avant que la commande ne commence à lire son entrée.
La commande sort names.txt > names.txt perd les données d’origine parce que la troncature se produit en premier.
tube
Un tube relie la sortie standard d’une commande à l’entrée standard d’une autre et transmet les données sans fichier intermédiaire enregistré.
Dans grep -i error app.log | wc -l, les lignes sélectionnées passent à la commande qui les compte.
type
type est une commande interne de Bash qui décrit comment un nom de commande est interprété, notamment comme alias, fonction, commande interne ou chemin d’exécutable.
type echo peut indiquer une commande interne même lorsque which echo pointe vers un fichier exécutable externe.

U

uniq
uniq est un filtre qui détecte les lignes identiques adjacentes, supprime les exemplaires répétés ou indique les suites sélectionnées et leurs nombres selon les options.
Trier les valeurs dispersées avant uniq -c fait apparaître la fréquence complète de chaque valeur en un seul décompte.
updatedb
updatedb reconstruit la base utilisée pour les recherches de chemins indexées, afin que sa vue enregistrée reflète les chemins inclus lors de l’actualisation.
Un administrateur peut exécuter sudo updatedb lorsqu’une actualisation immédiate à l’échelle du système convient.

W

wc
wc est une commande de comptage qui indique par défaut le nombre de sauts de ligne, de mots et d’octets, avec des options pour sélectionner une mesure ou compter les caractères.
Pour du texte UTF-8 tel que « café », compare wc -c à wc -m afin de distinguer les octets des caractères.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer