A grep
kézikönyv a következőképpen írja le a -I
zászlót :
-I Ignore binary files. This option is equivalent to --binary-file=without-match option.
Ezt a bináris fájlokról is mondja:
--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.
Nem tudok gondolkodni egy olyan forgatókönyv, ahol érdekelne a bináris fájlokban lévő egyezések. Ha létezik ilyen forgatókönyv, bizonyára inkább kivételnek, mint normának kell lennie. Miért nem “t grep
alapértelmezés szerint figyelmen kívül hagyja a bináris fájlokat, ahelyett, hogy ehhez ezt a zászlót kellene beállítani?
Megjegyzések
- Beállíthatja a
GREP_OPTIONS
változót az előnyben részesített beállításokra, majd nem kell ' használni annyi parancssori kapcsolót. . - Megjegyzés más parancsokhoz, amelyek nem támogatják az ilyen változót: Alapértelmezett beállításokat állíthat be, ha definiál egy álnevet a
.(ba|z|foo)shrc':
álnevében a grep = " grep -I " `. - Ez valójában nagyon hasznos lehet. Például az unity verziót kerestem egy projektet, és nem tudtam ' emlékezni arra, hogy melyik fájlban volt tárolva. Megkerestem a verzió formátumát, és előállt néhány bináris fájl, amely megfelel. Kiderült mivel az 5. verzió előtti volt, a verzió csak bináris fájlban volt, így a bináris egyezés nélkül talán hiányzott.
- FYI Ther e ' sa eszköz ack , amely " jobb, mint grep ". Az Ack nem keres
bináris fájlokat. A Debianban " ack-grep " néven szerepel.
Válasz
Nem minden, amit a grep bináris fájlnak gondol, valójában bináris fájl. például. a báb naplóiban van színkódolás, ami arra készteti a grepet, hogy bináris legyen. Még mindig szeretnék rájuk keresni, ha mégis átfutok a / var / log oldalon.
Megjegyzések
- Ugyanez vonatkozik a PDF fájlokra is, mint jól.
- + a grep történelmileg NEM tudta ezt megtenni, ezért csak a kompatibilitás érdekében az alapértelmezésnek mindent átfogónak kell lennie.
- @OlivierDulac van értelme, különben a bináris fájlok figyelmen kívül hagyása kell, hogy legyen alapértelmezett.
Válasz
grep
keresési képesség A bináris fájlok akkor is hasznosak, amikor programot állítok össze, és a linker (ld
) panaszkodik, hogy néhány funkció nem található. Használhatok egy olyan parancsot, mint a
grep function_name /lib/lib*
az azt tartalmazó könyvtár megkeresésére. (A könyvtárak bináris fájlok.)
Megjegyzések
- Ebben az esetben inkább ' használja
grep -l function_name /lib/lib*
vagynm -Do /lib/lib* | grep function_name
vagyldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name
. - Nos,
grep some_function /lib/*
rövidebb, és általában helyes választ ad – a keresett könyvtár neve. De igen, néha szükség van az Önéhez hasonló kifinomultabb megközelítésre is.