grep -sivun kuva sivu kuvaa -I -lippua seuraavasti :

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

Se kertoo tämän myös binaaritiedostoista:

 --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. 

En voi ajatella skenaariosta, jossa välittäisin binääritiedostojen vastaavuuksista. Jos sellainen skenaario on olemassa, sen on varmasti oltava pikemminkin poikkeus kuin normi. Miksi ”t grep ei ohita binääritiedostoja oletusarvoisesti sen sijaan, että vaaditaan tämän lipun asettamista?

Kommentit

  • Voit asettaa muuttujan GREP_OPTIONS haluamillesi asetuksille, jolloin sinun ei ' tarvitse käyttää niin monta komentorivin kytkintä .
  • Huomautus muille komennoille, jotka eivät tue tällaista muuttujaa: Voit asettaa oletusasetukset määrittelemällä aliaksen .(ba|z|foo)shrc': aliakselle grep = " grep -I " `.
  • Tämä voi olla todella hyödyllistä. Etsin esimerkiksi yhtenäisyyden versiota projektista, enkä voinut ' muistaa, missä tiedostossa sitä pidettiin. Etsin version muotoa, ja se keksi joitain vastaavia binaaritiedostoja. Se osoittautui koska se oli versiota 5 edeltävä versio, versio oli läsnä vain binaaritiedostossa, joten ilman binääristä vastaavuutta olen ehkä kadonnut sen.
  • FYI Ther e ' sa -työkalu ack , joka on eräänlainen " parempi kuin grep ". Ack ei hae binääritiedostoja '. Debianissa se kuuluu nimellä " ack-grep ".

Vastaus

Kaikki, mitä grep ajattelee olevan binääritiedosto, eivät ole oikeastaan binääritiedostoja. esimerkiksi. nuken lokeissa on ansiokoodaus, mikä saa grepin ajattelemaan, että ne ovat binaarisia. Haluaisin silti etsiä niitä, jos kuitenkin käyn läpi / var / log.

Kommentit

  • Sama pätee PDF-tiedostoihin kuin hyvin.
  • + historiallisesti grep ei voinut tehdä niin, joten vain yhteensopivuuden vuoksi oletusarvojen on oltava kaikki kattavia.
  • @OlivierDulac on järkevää, muuten binaaritiedostojen ohittamisen pitäisi olla oletusarvo.

Vastaa

grep kyky etsiä binaaritiedostoista on hyötyä myös koottaessa ohjelmaa ja linkkijä (ld) valittaa, että jotakin toimintoa ei löydy. Voin käyttää komentoa kuten

grep function_name /lib/lib*

löytääksesi sen sisältävän kirjaston. (Kirjastot ovat binaaritiedostoja.)

Kommentit

  • Tällöin ' käytät mieluummin grep -l function_name /lib/lib* tai nm -Do /lib/lib* | grep function_name tai ldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name.
  • No, grep some_function /lib/* on lyhyempi ja antaa yleensä oikean vastauksen – etsimäni kirjaston nimi. Mutta kyllä, joskus vaaditaan myös kehittyneempää lähestymistapaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *