grep -v "grep"
prend entrée ligne par ligne et ne produit que les lignes dans lesquelles grep
n'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' grep
utilitaire lui-même, il est sans importance que le modèle qui lui est grep
passé en argument soit le même que son nom. Mais dans la plupart des cas où grep -v grep
apparaî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 ps
commande. 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
grep
sans -F
traite 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 xfce
mais 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 grep
même lorsqu'elles ne sont pas la grep
commande que vous venez d' exécuter vous-même. Ce ne sont peut-être même pas des grep
commandes - 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 grep
lire 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.