Vous pouvez man greplire la page de manuel de référence pour la commande, ou pour plus d'informations sur certaines commandes (inc. Grep), vous pouvez info grep.... ie. votre système possède une documentation qui est souvent très pratique.
guiverc
12
grep -v "grep"est souvent utilisé pour filtrer grep lui-même tout en listant les processus et cela implique généralement 3 pipelines, bien qu'il existe bien sûr de meilleures méthodes comme celles pgrepqui permettent beaucoup moins de "plomberie". Voir unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy
13
Ça le fait. J'appelle mon rootkit grep.
Joshua
Normalement utilisé dans un contexte non lié à la sécurité, comme ps aux | grep fubar | grep -v grepoù fubarest quelque chose que je suis en train de développer, qui a cessé de répondre, et dont l'ID je veux trouver afin que je puisse le tuer. Supposons qu'il y en ait deux, ce qui killallest inapproprié.
nigel222
Réponses:
69
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.grepman 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?Ssl0: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?Ssl0: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?Ssl0: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 contiennentgrep . 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:
Il peut également être utile de mentionner pgrepune autre alternative àps | grep
Fund Monica's Lawsuit
8
grep --helpnous dit ce que fait le -vdrapeau:
-v,--invert-match select non-matching lines
Vous pouvez utiliser le -vdrapeau pour imprimer inverse la correspondance; c'est-à-dire qu'il ne correspond qu'aux lignes qui ne contiennent pas le mot donné. Par exemple, imprimez toutes les lignes qui ne contiennent pas la barre de mots:
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.grep -v "grep"
est souvent utilisé pour filtrer grep lui-même tout en listant les processus et cela implique généralement 3 pipelines, bien qu'il existe bien sûr de meilleures méthodes comme cellespgrep
qui permettent beaucoup moins de "plomberie". Voir unix.stackexchange.com/q/74185/85039grep
.ps aux | grep fubar | grep -v grep
oùfubar
est quelque chose que je suis en train de développer, qui a cessé de répondre, et dont l'ID je veux trouver afin que je puisse le tuer. Supposons qu'il y en ait deux, ce quikillall
est inapproprié.Réponses:
grep -v "grep"
prend entrée ligne par ligne et ne produit que les lignes dans lesquellesgrep
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 estgrep
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
(ougrep -v 'grep'
ougrep -v "grep"
) apparaît souvent sur le côté droit d'un tuyau dont le côté gauche est uneps
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: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
: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 exactementxfce
mais qui est écrite différemment. Par exemple: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 lagrep
commande que vous venez d' exécuter vous-même. Ce ne sont peut-être même pas desgrep
commandes - juste des commandes dont les noms, les chemins ou les arguments de ligne de commande contiennentgrep
. Ainsi, comme l' a souligné Sergiy Kolodyazhnyy , souvent aucune de ces méthodes (ni aucune autre approche impliquant la canalisation de la sortie deps
) n'est vraiment idéale et, comme Nic Hartley l'a mentionné , d' autres méthodes sont souvent utiliséespgrep
. Par exemple:-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.la source
pgrep
une autre alternative àps | grep
grep --help
nous dit ce que fait le-v
drapeau:Vous pouvez utiliser le
-v
drapeau pour imprimer inverse la correspondance; c'est-à-dire qu'il ne correspond qu'aux lignes qui ne contiennent pas le mot donné. Par exemple, imprimez toutes les lignes qui ne contiennent pas la barre de mots:(en savoir plus ... )
la source