grep -v "grep"prend entrée ligne par ligne et ne produit que les lignes dans lesquelles grepn'apparaît pas. Sans -v, il sortie que les lignes qui n'apparaissent. Voir pour plus de détails.grep man grep
En ce qui concerne l' greputilitaire lui-même, il est sans importance que le modèle qui lui est greppassé en argument soit le même que son nom. Mais dans la plupart des cas où grep -v grepapparaît réellement, ce n'est pas un hasard.
grep -v grep(ou grep -v 'grep'ou grep -v "grep") apparaît souvent sur le côté droit d'un tuyau dont le côté gauche est une pscommande. C'est probablement là que vous l'avez vu. Par exemple, je recherche peut-être des programmes en cours d'exécution dont les noms, les chemins ou les arguments de ligne de commande suggèrent qu'ils sont liés à Xfce:
ek@Io:~$ ps x | grep xfce
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+ 0:00 grep --color=auto xfce
ma grep commande a été affichée dans la sortie, mais ce n'est pas ce que je recherche. Je recherche des informations sur les processus qui étaient déjà en cours d'exécution lorsque j'ai examiné ce qui était en cours d'exécution, pas le processus qui s'exécute uniquement en raison de mes efforts pour examiner ce qui est en cours d'exécution.
Une façon courante de supprimer cette distraction consiste à ajouter un autre tuyau à grep -v grep:
ek@Io:~$ ps x | grep xfce | grep -v grep
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
grepsans -Ftraite son modèle comme une expression régulière plutôt que comme une chaîne fixe . Une autre approche consiste donc à écrire une expression régulière qui correspond exactement xfcemais qui est écrite différemment. Par exemple:
ek@Io:~$ ps x | grep '[x]fce'
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
Cela fonctionne parce que [x]c'est une classe de caractères qui correspond exactement à la lettrex .
Un inconvénient de ces méthodes populaires est qu'elles filtreront les lignes qui contiennent grepmême lorsqu'elles ne sont pas la grepcommande que vous venez d' exécuter vous-même. Ce ne sont peut-être même pas des grepcommandes - juste des commandes dont les noms, les chemins ou les arguments de ligne de commande contiennent grep . Ainsi, comme l' a souligné Sergiy Kolodyazhnyy , souvent aucune de ces méthodes (ni aucune autre approche impliquant la canalisation de la sortie de ps) n'est vraiment idéale et, comme Nic Hartley l'a mentionné , d' autres méthodes sont souvent utilisées pgrep. Par exemple:
ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
-a spectacles la ligne de commande complète. Omettez-le pour afficher uniquement le numéro d'identification du processus.
-f recherche en ligne de commande complète. Omettez-le pour rechercher uniquement les noms.
man greplire la page de manuel de référence pour la commande, ou pour plus d'informations sur certaines commandes (inc. Grep), vous pouvezinfo grep.... ie. votre système possède une documentation qui est souvent très pratique.