rg Uyumluluğu
vendor/bin/rg, ripgrep tarzı bir uyumluluk sarmalayıcısıdır. En sık kullanılan ripgrep bayraklarını kabul eder, dosya ağacında ripgrep ile aynı şekilde gezinir ve eşleşen çıktıyı üretir. Doğrulanmış kapsam, üst kaynak rg ikili dosyasına karşı yürütülen denemelerden elde edilmiştir ve Gelişmiş / Özellik Matrisi bölümünde yer alır.
Sarmalayıcı, ince bir CLI çeviricisidir; gerçek arama işini vendor/bin/greph tarafından kullanılanla aynı Greph\Text\TextSearcher motoru yapar.
Ne zaman kullanılır?
Sarmalayıcıyı şu durumlarda kullanın:
rgçağıran mevcut bir aracınız, ajanınız veya betiğiniz varsa.- ripgrep'i yükleyemediğiniz ortamlarda (paylaşımlı barındırma, güvenliği sıkılaştırılmış konteynerler, kısıtlı PaaS) çalışan, doğrudan kullanılabilir bir alternatif istiyorsanız.
- Yalnızca PHP altyapısında ripgrep kullanım kolaylığı istiyorsanız.
Şu durumlarda yerel vendor/bin/greph kullanın:
- Yeni kod yazıyor ve ripgrep CLI biçimine ihtiyaç duymuyorsanız.
- Sarmalayıcının sunmadığı yerel bayraklara (örneğin AST kipi) erişmek istiyorsanız.
Kullanım
rg [options] pattern [path...]
rg --files [options] [path...]
Parametresiz çağrı, . içinde yinelemeli arama yapar:
./vendor/bin/rg -F "function"
--files arama yapmak yerine aday dosyaları listeler:
./vendor/bin/rg --files
./vendor/bin/rg --files --type php
./vendor/bin/rg --files --hidden
JSON çıktısı
--json, ripgrep tarafından üretilenle aynı olay biçimli veriyi üretir:
./vendor/bin/rg --json -F "function walk" src/Greph.php
{"type":"begin","data":{"path":{"text":"src/Greph.php"}}}
{"type":"match","data":{"path":{"text":"src/Greph.php"},"lines":{"text":" public static function walk(string|array $paths, ?WalkOptions $options = null): FileList\n"},"line_number":41,"absolute_offset":1034,"submatches":[{"match":{"text":"function walk"},"start":18,"end":31}]}}
{"type":"end","data":{"path":{"text":"src/Greph.php"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":0,"human":"0.000000s"},"searches":1,"searches_with_match":1,"bytes_searched":13383,"bytes_printed":282,"matched_lines":1,"matches":1}}}
{"type":"summary","data":{"elapsed_total":{"human":"0.000000s","nanos":0,"secs":0},"stats":{"bytes_printed":282,"bytes_searched":13383,"matched_lines":1,"matches":1,"searches":1,"searches_with_match":1,"elapsed":{"human":"0.000000s","nanos":0,"secs":0}}}}
stats nesnelerindeki süreler her zaman sıfır olarak bildirilir.
Bu, ripgrep'ın yapılandırılmış çıktısını etkinleştirdiklerinde alt araçların beklediği şemadır. Daha basit bir biçim istiyorsanız bunun yerine vendor/bin/greph --json kullanın.
Doğrulanmış kapsam
Aşağıdaki bayraklar, rg ikili dosyasına karşı özellik matrisinde doğrulanmıştır. Her denemede üst kaynak ikili dosyası ile sarmalayıcı eşdeğer çıktı üretir. Bir bayrağın kısa ve uzun yazımı varsa denemede bunlardan biri kullanılır; sarmalayıcı ikisini de aynı seçenek olarak ayrıştırır.
Arama bayrakları
-F,--fixed-strings-i,--ignore-case-w,--word-regexp-v,--invert-match-c,--count-l,--files-with-matches--files-without-match-I,--no-filename-H,--with-filename-n,--line-number-A N,--after-context N-B N,--before-context N-C N,--context N-m N,--max-count N-e P,--regexp P
Gezgin bayrakları
-L,--follow--glob GLOB--type NAME--type-not NAME--no-ignore--hidden--files--files --hidden--files --type NAME
Çıktı bayrakları
--json
Deneme yapılmadan kabul edilenler
Sarmalayıcı bu bayrakları da kabul eder, ancak özellik matrisi denemeleri henüz bunları kapsamaz:
-j N,--threads N(işçi sayısı için bkz. Paralel İşçiler)-q,--quiet--no-follow
Sınırlamalar
Greph'ın rg sarmalayıcısı, çoğu aracın ve ajanın kullandığı arama ve gezgin kapsamını karşılar. Şu ripgrep özelliklerini şu anda sunmaz:
- Çok satırlı regex (
-U,--multiline) - Metin kipinde değiştirme (
-r,--replace); bunun yerinevendor/bin/grephAST yeniden yazmayı kullanın - Özel tür tanımları (
--type-add,--type-clear) - Kodlama bayrakları (
-E,--encoding) --prefiltre betikleri--sort,--sortr
Eksik bir bayrakla karşılaşırsanız, üst kaynak rg ile çalıştırdığınız denemeyi ve beklenen çıktıyı içeren bir sorun bildirin. Yeni özellikler, doğrulanmış kapsamın yalnızca genişlemesini sağlayan doğrulama denemeleriyle birlikte eklenir.
Davranış eşdeğerliği
Sarmalayıcı, bayt düzeyinde değil davranış düzeyinde eşdeğerliği hedefler. Çıktı satır düzeyinde eşdeğerdir, ancak görsel ayrıntılarda (renk kodları, terminal genişliğine göre kısaltma) farklılık gösterebilir. özellik matrisi için kullanılan denemeler, bayt düzeyinde birebir farkları değil anlamsal eşdeğerliği denetler.
Çıktıyı ayrıştıran ajan ve araçlar için, ayrıştırmayla ilgili alanlar (dosya yolu, satır numarası, içerik, eşleşme konumu) doğrulanmış her denemede üst kaynak rg ile bayt düzeyinde aynıdır.