CLI referencia
A Greph négy végrehajtható fájlt tartalmaz. Mind a négy ugyanazt a motort használja; a különbség az általuk elérhető felületben van.
| Bináris fájl | Rendeltetés |
|---|---|
greph |
Natív szövegkeresés, AST-keresés és AST-átírás |
greph-index |
Bemelegített szövegindex, AST-tényindex és gyorsítótárazott AST-keresés |
rg |
ripgrep-stílusú kompatibilitási burkoló |
sg |
ast-grep-stílusú kompatibilitási burkoló |
A példákban szereplő összes útvonal a ./vendor/bin/<binary> fájlt használja, amely a függőségként telepített Greph 0.2.3 verzióval vagy újabbal működik. Ha a tároló klónjából dolgozik, cserélje le erre: ./bin/<binary>.
greph
Natív szövegkeresés, AST-keresés és AST-átírás.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Ha nincs megadva útvonal, a keresés az aktuális könyvtárban történik.
Szöveges mód
Alapértelmezett mód. A minták PCRE2 reguláris kifejezések, kivéve ha be van állítva a -F.
# Regex search
./vendor/bin/greph "function\s+\w+" src
# Fixed-string search
./vendor/bin/greph -F "function" src
# Case-insensitive whole-word with two lines of context
./vendor/bin/greph -F -i -w -C 2 "function" src
A kimeneti formátum megegyezik a grep -rn formátumával:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST-mód
A -p aktiválja. A minták közönséges PHP formában íródnak, $VAR és $$$VARIADIC met változókkal. A teljes mintanyelvtant lásd a Módok / AST-keresés oldalon.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Átírási mód
A -p és -r együttes használata aktiválja. A helyettesítési sablon ugyanazokat a met változókat használja, mint a keresési minta; a rögzített csomópontok név alapján kerülnek beillesztésre.
# Preview only
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src
# Apply
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' src
# Confirm each file before writing
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src
Beállítások
| Jelző | Jelentés |
|---|---|
-F |
Rögzített karakterlánc keresése (reguláris kifejezés nélkül) |
-i |
Kis- és nagybetűket figyelmen kívül hagyó egyezés |
-w |
Teljes szavas egyezés |
-v |
Egyezés megfordítása |
-c |
Egyezések száma fájlonként |
-l |
Csak az egyező fájlok útvonalának listázása |
-L |
Csak a nem egyező fájlok útvonalának listázása |
-h |
Fájlnév-előtagok elrejtése szöveges módban |
-H |
Fájlnév-előtagok mindig jelenjenek meg szöveges módban |
-n |
Sorszámok megjelenítése (alapértelmezés: be) |
-A N |
N sor megjelenítése az egyes egyezések után |
-B N |
N sor megjelenítése az egyes egyezések előtt |
-C N |
N sornyi környezet megjelenítése az egyes egyezések előtt és után |
-m N |
Leállás fájlonként N egyezés után |
-j N |
N párhuzamos munkás használata |
-p PATTERN |
AST-keresési minta |
-r TEMPLATE |
AST-átírási sablon (-p szükséges hozzá) |
--glob GLOB |
Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
--type NAME |
Fájltípus-alias bevonása (php, js, md, ...) |
--type-not NAME |
Fájltípus-alias kizárása |
--lang NAME |
AST-nyelv. Alapértelmezés: php |
--json |
JSON kimenet kibocsátása |
--no-ignore |
A .gitignore és .grephignore szabályok figyelmen kívül hagyása |
--hidden |
Rejtett fájlok bevonása |
--dry-run |
Átírások megjelenítése fájlírás nélkül |
--interactive |
Minden átírt fájl megerősítése |
--help |
Beágyazott súgó megjelenítése |
greph-index
Bemelegített szövegindex, AST-tényindex és gyorsítótárazott AST-keresés.
greph-index build [path] [--index-dir DIR]
greph-index refresh [path] [--index-dir DIR]
greph-index search [options] pattern [path...]
greph-index set build [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set refresh [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set stats [manifest] [--manifest FILE] [--mode MODE] [--index NAME...] [--dry-refresh]
greph-index set search [options] pattern [path...]
greph-index ast-index build [path] [--index-dir DIR]
greph-index ast-index refresh [path] [--index-dir DIR]
greph-index ast-index search [options] pattern [path...]
greph-index ast-cache build [path] [--index-dir DIR]
greph-index ast-cache refresh [path] [--index-dir DIR]
greph-index ast-cache search [options] pattern [path...]
Szövegindex
# Build (full)
./vendor/bin/greph-index build .
# Build with lifecycle policy
./vendor/bin/greph-index build . \
--lifecycle opportunistic-refresh \
--auto-refresh-max-files 32 \
--auto-refresh-max-bytes 1048576
# Refresh (incremental: added, updated, deleted, unchanged)
./vendor/bin/greph-index refresh .
# Query
./vendor/bin/greph-index search -F "function" .
./vendor/bin/greph-index search -i -w "function" .
./vendor/bin/greph-index search -c "function" .
./vendor/bin/greph-index search --trace-plan -F "function" .
./vendor/bin/greph-index search -F "function" . \
--index-dir core/.greph-index \
--index-dir plugins/demo/.greph-index \
--show-index-origin
A szövegindex egy bemelegített trigram- és azonosító-előfordulásokat tároló adatbázis. Alapértelmezés szerint az indexelt gyökérben, itt található: .greph-index/.
Indexkészletek
Az indexkészletek névvel ellátott jegyzékbe foglalják az ismétlődő, több indexet érintő munkafolyamatokat:
./vendor/bin/greph-index set build
./vendor/bin/greph-index set stats --dry-refresh
./vendor/bin/greph-index set search --show-index-origin -F "function" .
./vendor/bin/greph-index set search --mode ast-index 'new $CLASS()' .
./vendor/bin/greph-index set search --mode ast-cache 'array($$$ITEMS)' .
Az alapértelmezett jegyzékfájl: .greph-index-set.json. Minden bejegyzés egy gyökérre, egy módra és egy életciklus-profilra mutat. A set build és a set refresh a bekapcsolt bejegyzéseken működik; a set search végigkeresi a kiválasztott bejegyzéseket, és eltávolítja az átfedő egyezéseket.
AST-tényindex
./vendor/bin/greph-index ast-index build .
./vendor/bin/greph-index ast-index refresh .
./vendor/bin/greph-index ast-index search 'new $CLASS()' src
./vendor/bin/greph-index ast-index search --trace-plan 'new $CLASS()' src
./vendor/bin/greph-index ast-index search 'new $CLASS()' . \
--index-dir core/.greph-ast-index \
--index-dir plugins/demo/.greph-ast-index \
--show-index-origin
Az AST-tényindex csomópontszintű tényeket (hívásokat, példányosításokat, osztályokat és metódusokat) emel ki, és lekérdezhető adatbázisba rendezi. A keresés a tény kulcsa alapján O(log n), majd a forrás ellenőrzésével folytatódik. Alapértelmezés szerint itt tárolódik: .greph-ast-index/.
AST-gyorsítótár
./vendor/bin/greph-index ast-cache build .
./vendor/bin/greph-index ast-cache refresh .
./vendor/bin/greph-index ast-cache search 'array($$$ITEMS)' src
./vendor/bin/greph-index ast-cache search --trace-plan 'array($$$ITEMS)' src
Az AST-gyorsítótár lemezen tárolja az elemzett fákat, így kereséskor nincs szükség a parser futtatására. Alapértelmezés szerint itt tárolódik: .greph-ast-cache/.
Beállítások
A szövegkeresési beállítások megegyeznek a greph jelzőkészlettel (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
További jelzők:
| Jelző | Jelentés |
|---|---|
--index-dir DIR |
Nem alapértelmezett bemelegített indexkönyvtár használata. Több indexet érintő keresésnél és statisztikáknál ismételhető. |
--lifecycle PROFILE |
Építési szabályzat: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Alkalmi frissítés fájlküszöbe |
--auto-refresh-max-bytes N |
Alkalmi frissítés bájtküszöbe |
--manifest FILE |
Indexkészlet-jegyzék betöltése. Alapértelmezés: .greph-index-set.json |
--mode MODE |
A készletműveletek korlátozása erre: text, ast-index vagy ast-cache |
--index NAME |
A készletműveletek korlátozása egy megnevezett jegyzékbejegyzésre. Ismételhető. |
--show-index-origin |
A bemelegített, több indexet érintő vagy készletkimenet elé az egyező indexbejegyzés nevének írása |
--trace-plan |
A bemelegített tervező diagnosztikájának kibocsátása ide: stderr |
--dry-refresh |
A stats esetén annak jelzése, hogy mit tenne egy bemelegített keresés, bármilyen módosítás nélkül |
--lang NAME |
AST-nyelv ast-index / ast-cache kereséshez. Alapértelmezés: php |
-j N, --jobs N |
Munkások AST-vizsgálathoz |
-l, --files-with-matches |
Csak az egyező fájlok útvonalának listázása (AST-mód) |
--strict-parse |
Kihagyás helyett leállás elemzési hibánál |
--fallback MODE |
Hiányzó index kezelése: fail (alapértelmezett) vagy scan |
--help |
Beágyazott súgó megjelenítése |
rg
ripgrep-stílusú kompatibilitási burkoló. A leggyakrabban használt ripgrep jelzőket támogatja. Az ellenőrzött felület az funkciómátrix oldalon található.
rg [options] pattern [path...]
rg --files [options] [path...]
Példák
./vendor/bin/rg -F "function" src
./vendor/bin/rg --json -F "function" src
./vendor/bin/rg --files src
./vendor/bin/rg --files --type php .
./vendor/bin/rg --type-not js -F "function" .
Támogatott beállítások
| Jelző | Jelentés |
|---|---|
-F, --fixed-strings |
Rögzített karakterlánc keresése |
-i, --ignore-case |
Kis- és nagybetűket figyelmen kívül hagyó keresés |
-w, --word-regexp |
Teljes szavas keresés |
-v, --invert-match |
Egyezések megfordítása |
-c, --count |
Egyező sorok számlálása |
-l, --files-with-matches |
Egyező fájlok listázása |
--files-without-match |
Nem egyező fájlok listázása |
-I, --no-filename |
Fájlnév-előtagok elrejtése |
-H, --with-filename |
Fájlnév-előtagok mindig jelenjenek meg |
-n, --line-number |
Sorszámok megjelenítése |
-A N, --after-context N |
N sor megjelenítése az egyes egyezések után |
-B N, --before-context N |
N sor megjelenítése az egyes egyezések előtt |
-C N, --context N |
N sor megjelenítése az egyes egyezések előtt és után |
-m N, --max-count N |
Leállás fájlonként N egyezés után |
-j N, --threads N |
N párhuzamos munkás használata |
-e P, --regexp P |
Keresési minta |
-L, --follow |
Szimbolikus hivatkozások követése |
--glob GLOB |
Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
--type NAME |
Fájltípus bevonása |
--type-not NAME |
Fájltípus kizárása |
--json |
ripgrep-stílusú JSON események kibocsátása |
--no-ignore |
A .gitignore és .grephignore szabályok figyelmen kívül hagyása |
--hidden |
Rejtett fájlok bevonása |
--files |
Keresés helyett a lehetséges fájlok listázása |
--help |
Beágyazott súgó megjelenítése |
sg
ast-grep-stílusú kompatibilitási burkoló. A leggyakrabban használt ast-grep jelzőket támogatja. Az ellenőrzött felület az funkciómátrix oldalon található.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
A run a kanonikus ast-grep ige. A scan és a rewrite csak a burkolóban elérhető aliasok, amelyek a szokásos használatot követik. Az argumentum nélküli meghívás (sg --pattern ... .) egyszeri keresésként is működik.
Példák
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src/App.php
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src/App.php
./vendor/bin/sg scan -p 'array($$$ITEMS)' src/App.php
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src/App.php
Támogatott beállítások
| Jelző | Jelentés |
|---|---|
-p, --pattern PATTERN |
AST-minta |
-r, --rewrite TEMPLATE |
Átírási sablon |
-l, --lang NAME |
AST-nyelv. Alapértelmezés: php |
-j, --threads N |
N párhuzamos munkás használata |
-i, --interactive |
Minden átírás megerősítése |
-U, --update-all |
Átírások alkalmazása megerősítés nélkül |
--files-with-matches |
Csak az egyező fájlok útvonalának kiírása |
--json[=STYLE] |
JSON kimenet kibocsátása. A STYLE értéke pretty, stream vagy compact |
--no-ignore [MODE] |
A tároló figyelmen kívül hagyási szabályainak mellőzése |
--hidden |
Rejtett fájlok bevonása |
--glob GLOB, --globs GLOB |
Csak a GLOB-nak megfelelő útvonalú fájlok bevonása |
--type NAME |
Fájltípus bevonása |
--type-not NAME |
Fájltípus kizárása |
--dry-run |
Átírások előnézete fájlírás nélkül |
--help |
Beágyazott súgó megjelenítése |
Kilépési kódok
A Greph a grep / ripgrep konvencióit követi:
| Kód | Jelentés |
|---|---|
0 |
Legalább egy egyezés található (átírásnál legalább egy fájl módosult) |
1 |
Nem található egyezés |
2 |
Használati hiba vagy futásidejű hiba (hibás argumentumok, hiányzó index, elemzési hiba --strict-parse módban) |