GNU/Linux >> Tutoriels Linux >  >> Linux

Sortie de tuyauterie à couper

La première ligne :

echo $(ps | grep $PPID) | cut -d" " -f4

dit :

  • Exécuter ps | grep $PPID dans un sous-shell
  • Renvoie la sortie - qui ressemblera à ceci :

    3559 pts/1 00:00:00 bash
    

    puis utilisez cette sortie comme premier paramètre de echo - ce qui, en pratique, signifie simplement faire écho à la sortie

  • Ensuite, exécutez cut -d" " -f4 dessus - ce qui vous donne le nom de la commande dans ce cas

La deuxième commande :

echo ps | grep $PPID | cut -d" " -f4

dit :

  • Chaîne d'écho ps
  • Grep cette chaîne pour $PPID - cela ne retournera jamais rien, comme $PPID contient un nombre, il ne sera donc jamais ps . Ainsi, grep ne renvoie rien
  • Exécuter cut -d" " -f4 avec l'entrée de la commande précédente - qui n'est rien, donc vous n'obtenez rien

La raison en est que

echo ps

imprime simplement la chaîne ps; il n'exécute pas le programme ps . La version corrigée de votre commande serait :

ps | grep $PPID | cut -d" " -f4

Modifié pour ajouter : paxdiablo signale que ps | grep $PPID comprend beaucoup d'espaces blancs qui seront réduits par echo $(ps | grep $PPID) (puisque le résultat de $(...) , lorsqu'il n'est pas entre guillemets doubles, est divisé par des espaces blancs en arguments séparés, puis echo affiche tous ses arguments séparés par des espaces). Pour résoudre ce problème, vous pouvez utiliser tr pour "compresser" les espaces répétés :

ps | grep $PPID | tr -s ' ' | cut -d' ' -f5

ou vous pouvez simplement vous en tenir à ce que vous aviez au départ. :-)


Linux
  1. Comment trier la sortie par taille ?

  2. Linux - La sortie de Ps Lstart a changé?

  3. La tuyauterie pour la sortie de boucle empêche la modification de la variable locale ?

  4. Couper / Grep Et Df -h ?

  5. Trier la sortie par colonne ?

Bash :Écrire dans un fichier

Couper la commande sous Linux

Ccat - Coloriser la sortie de la commande Cat

Explication de la redirection d'entrée-sortie sur Linux

signification de la sortie ps aux

Compresser la sortie de la commande en redirigeant vers bzip2