GNU/Linux >> Tutoriels Linux >  >> Linux

Les utilitaires Linux sont-ils intelligents lors de l'exécution de commandes canalisées ?

J'exécutais juste quelques commandes dans un terminal et j'ai commencé à me demander si Unix/Linux prend-il des raccourcis lors de l'exécution de commandes canalisées ?

Par exemple, disons que j'ai un fichier avec un million de lignes, dont les 10 premières contiennent hello world . Si vous exécutez la commande grep "hello world" file | head la première commande s'arrête-t-elle dès qu'elle trouve 10 lignes ou continue-t-elle d'abord à rechercher dans tout le fichier ?

Réponse acceptée :

Sorte de. Le shell n'a aucune idée de ce que feront les commandes que vous exécutez, il connecte simplement la sortie de l'une à l'entrée de l'autre.

Si grep trouve plus de 10 lignes qui disent "hello world" puis head aura les 10 lignes qu'il veut et fermera le tuyau. Cela causera grep être tué avec un SIGPIPE, il n'a donc pas besoin de continuer à analyser un très gros fichier.


Linux
  1. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  2. Impossible de supprimer le fichier, même lors de l'exécution en tant que root ?

  3. Toutes les commandes de compression/décompression Linux

  4. Les descripteurs de fichiers sont-ils partagés lors du fork() ?

  5. surveillance des modifications de fichiers c++ linux

Commande de fichier Linux :que fait-elle et comment l'utiliser

Quelques commandes Linux aléatoires à une ligne [Partie 3]

5 commandes pour afficher le contenu d'un fichier en ligne de commande Linux

Exécution de commandes Linux en arrière-plan et au premier plan

Commandes Linux fréquemment utilisées par les administrateurs système Linux - Partie 5

Que sont les inodes sous Linux ?