La page de manuel pour grep décrit lindicateur -I comme suit :

-I Ignore binary files. This option is equivalent to --binary-file=without-match option. 

Cela dit aussi ceci à propos des fichiers binaires:

 --binary-files=value Controls searching and printing of binary files. Options are binary, the default: search binary files but do not print them; without-match: do not search binary files; and text: treat all files as text. 

Je ne peux pas penser dun scénario où je me soucierais des correspondances dans des fichiers binaires. Si un tel scénario existe, il doit sûrement être lexception plutôt que la norme. Pourquoi « t grep ignore-t-il les fichiers binaires par défaut plutôt que de demander la définition de cet indicateur pour le faire?

Commentaires

  • Vous pouvez définir la variable GREP_OPTIONS sur vos paramètres préférés, puis vous n ' pas besoin d’utiliser autant de commutateurs de ligne de commande .
  • Remarque pour les autres commandes qui ne prennent pas en charge une telle variable: vous pouvez définir les options par défaut en définissant un alias dans votre .(ba|z|foo)shrc': alias grep = " grep -I " `.
  • Cela peut en fait être très utile. Par exemple, je cherchais la version unitaire dun projet, et ' ne pouvait pas me souvenir dans quel fichier il était conservé. Jai recherché le format de la version, et il est venu avec quelques fichiers binaires qui correspondent. Il sest avéré comme cétait la pré-version 5, la version nétait présente que dans un fichier binaire, donc sans la correspondance binaire, je laurais peut-être manquée.
  • Pour info e ' un outil ack qui est en quelque sorte " mieux que grep ". Ack ne ' t recherche les fichiers binaires. Dans Debian, il vient sous le nom " ack-grep ".

Réponse

Tout ce que grep pense être un fichier binaire nest pas en fait un fichier binaire. par exemple. Les journaux de puppet ont un code couleur ansi, ce qui fait penser à grep quils sont binaires. Je voudrais quand même les rechercher si je passe par / var / log.

Commentaires

  • Il en va de même pour les fichiers PDF comme
  • + historiquement, grep ne pouvait PAS faire cela, donc pour la compatibilité uniquement, la valeur par défaut doit être tout compris.
  • @OlivierDulac cela a du sens, sinon ignorer les fichiers binaires devrait être le par défaut.

Réponse

grep capacité de recherche Les fichiers binaires sont également utiles lorsque je compile un programme et que léditeur de liens (ld) se plaint dune fonction introuvable. Je peux utiliser une commande comme

grep function_name /lib/lib*

pour trouver la bibliothèque qui le contient. (Les bibliothèques sont des fichiers binaires.)

Commentaires

  • Dans ce cas, vous ' utiliser plutôt grep -l function_name /lib/lib* ou nm -Do /lib/lib* | grep function_name ou ldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name cependant.
  • Eh bien, grep some_function /lib/* est plus court et donne généralement la bonne réponse – nom de la bibliothèque que je recherche. Mais oui, parfois une approche plus sophistiquée comme la vôtre est également nécessaire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *