Forum Linux.débutant pbs " grammaticaux " de bash

Posté par  .
Étiquettes : aucune
0
30
mai
2005
Salut

Remarques préalables:
- Je n'ai pas réussi à taper dans ce message le signe "inférieur à", et donc il faut remplacer dans ce message < par "inférieur à "
- Le pb qui suit concerne la commande qui ne marche pas, et pas le pb en lui même.

Pb:
J'essaye d'afficher un processus dont je me souvient vaguement du nom, mais dans le nom, il y a les 3 lettres slm. J'effectue donc pour le trouver les commandes suivantes:

ps aux | grep *mdm*
ps aux | grep 0<find / -name *mdm*`-print
ps aux | grep 0<(find / -name *mdm*`-print)
ps aux | grep 0<find \( / -name *mdm*`-print \)
ps aux | grep 0<`find / -name *mdm*`-print`
ps aux | grep >`find \( / -name *mdm*`-print \)`
....


Aucune ne marche donc ( Ah bon ? ), comment fait-on pour envoyer le résultat de find dans grep ?

Merci
  • # Expressions rationnelles

    Posté par  (site web personnel) . Évalué à 2.

    ps aux | grep mdm

    conserve toutes les lignes qui contiennent le motif "mdm"
    ou si tu tiens absolument à utiliser des opérateurs :

    ps aux | grep .*mdm.*

    Le point représente n'importe quel caractère et avec l'étoile il peut être répété 0 fois ou plus.
  • # Pour bien comprendre

    Posté par  . Évalué à 2.

    l'utiliitaire find permet de trouver un fichier ( répertoire / socket / fichier / ... )

    grep est un utilitaire qui recherche des chaines de caractères qui correspondent a une expression réguliere.

    Ta premiere devrait permettre de retrouver un programme qui tourne dans la liste du ps aux.

    Malheureusement quand tu fais ps aux | grep *mdm*
    1 - le *mdm* est évalué par le shell
    2 - l'utilisation des * dans le grep tel quel n'a pas de sens puisque tu cherches une chaine de caractères qui contient mdm

    ps aux |grep mdm # est plus cohérent


    Maintenant pour "rechercher l'executable sur le disque" tu peux faire ceci :

    for i in $(ps aux |grep mdm |awk ' $11 ~ /mdm/ { print $11 } ' ) ; do type $i ; done


    ou remplacer le type $i par un find, mais c'est beaucoup plus long

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.