RG(1) User Commands RG(1)

rg - جستجوی بازگشتی در دایرکتوری جاری برای خطوط منطبق با یک الگو

rg [OPTIONS] PATTERN [PATH...]

rg [OPTIONS] -e PATTERN... [PATH...]

rg [OPTIONS] -f PATTERNFILE... [PATH...]

rg [OPTIONS] --files [PATH...]

rg [OPTIONS] --type-list

command | rg [OPTIONS] PATTERN

rg [OPTIONS] --help

rg [OPTIONS] --version

ابزار ripgrep (rg) دایرکتوری جاری را به صورت بازگشتی برای یافتن یک الگوی عبارت باقاعده (regex) جستجو می‌کند. به طور پیش‌فرض، ripgrep به .gitignore شما احترام می‌گذارد و فایل‌ها و دایرکتوری‌های پنهان و همچنین فایل‌های دودویی (binary) را به طور خودکار نادیده می‌گیرد.

موتور عبارت باقاعده پیش‌فرض ripgrep از خودکاره متناهی (finite automata) استفاده می‌کند و زمان جستجوی خطی را تضمین می‌نماید. به همین دلیل، ویژگی‌هایی مانند ارجاع به عقب (backreferences) و بررسی پیرامونی دلخواه (look-around) پشتیبانی نمی‌شوند. با این حال، اگر ripgrep به همراه PCRE2 ساخته شده باشد، پرچم -P/--pcre2 می‌تواند برای فعال‌سازی ارجاع به عقب و بررسی پیرامونی استفاده شود.

ابزار ripgrep از فایل‌های پیکربندی پشتیبانی می‌کند. متغیر محیطی RIPGREP_CONFIG_PATH را روی مسیر یک فایل پیکربندی تنظیم کنید. این فایل می‌تواند در هر خط یک آرگومان شل را مشخص کند. خطوطی که با # شروع می‌شوند نادیده گرفته خواهند شد. برای جزئیات بیشتر، بخش CONFIGURATION FILES را در ادامه ببینید.

ابزار ripgrep به طور خودکار قابل خواندن بودن stdin را تشخیص داده و stdin را برای یافتن الگوی regex جستجو می‌کند؛ مانند ls | rg foo. در برخی محیط‌ها، ممکن است stdin وجود داشته باشد در حالی که نباید باشد. برای خاموش کردن تشخیص خودکار stdin، می‌توان دایرکتوری مورد نظر برای جستجو را صراحتاً مشخص کرد؛ مانند rg foo ./.

همانند ابزارهای دیگری نظیر ls، ابزار ripgrep نیز خروجی خود را بر اساس اینکه آیا stdout به یک tty متصل است یا خیر تغییر می‌دهد. به طور پیش‌فرض، هنگام چاپ روی یک tty، ابزار ripgrep رنگ‌ها، شماره خطوط و قالب سربرگی را فعال می‌کند که مسیر هر فایل منطبق را تنها یک‌بار فهرست می‌کند، نه یک‌بار به ازای هر خط منطبق.

نکته: برای غیرفعال کردن تمام فیلترهای هوشمند و شبیه‌تر کردن رفتار ripgrep به grep سنتی، از rg -uuu استفاده کنید.

ابزار ripgrep به طور پیش‌فرض از موتور عبارت باقاعده زبان Rust استفاده می‌کند که نحو آن در اینجا مستند شده است: https://docs.rs/regex/1.*/regex/#syntax

ابزار ripgrep از عبارات باقاعده بایت‌محور استفاده می‌کند که دارای مستندات تکمیلی است: https://docs.rs/regex/1.*/regex/bytes/index.html#syntax

به عنوان یک تقریب کلی، ripgrep از عبارات باقاعده شبیه به Perl بدون بررسی پیرامونی (look-around) یا ارجاع به عقب (backreferences) استفاده می‌کند. این امر آن‌ها را بسیار شبیه به عبارات باقاعده گسترش‌یافته (ERE) پشتیبانی‌شده توسط *egrep* می‌کند، اما با چند ویژگی اضافی مانند رده‌های نویسه‌ای یونیکد.

اگر از ripgrep به همراه پرچم -P/--pcre2 استفاده می‌کنید، لطفاً برای مستندات مربوط به نحو پشتیبانی‌شده به https://www.pcre.org یا صفحات راهنمای (man) بسته PCRE2 مراجعه کنید.

یک عبارت باقاعده که برای جستجو استفاده می‌شود. برای تطبیق با الگویی که با خط تیره شروع می‌شود، از گزینه -e/--regexp استفاده کنید.
یک فایل یا دایرکتوری برای جستجو. دایرکتوری‌ها به صورت بازگشتی جستجو می‌شوند. مسیرهای فایلی که صراحتاً در خط فرمان مشخص شده‌اند، بر قواعد تطبیق الگو (glob) و نادیده‌گیری (ignore) اولویت دارند.

این بخش تمامی پرچم‌هایی را که ripgrep می‌پذیرد مستند می‌کند. پرچم‌ها بر اساس عملکردشان در دسته‌بندی‌های زیر گروه‌بندی شده‌اند.

توجه داشته باشید که بسیاری از گزینه‌ها می‌توانند فعال یا غیرفعال شوند. در برخی موارد، آن پرچم‌ها صراحتاً در ادامه فهرست نشده‌اند. برای مثال، پرچم --column (فهرست‌شده در زیر) شماره ستون‌ها را در خروجی ripgrep فعال می‌کند، اما پرچم --no-column (که در زیر نیامده است) آن‌ها را غیرفعال می‌سازد. حالت معکوس نیز وجود دارد. به عنوان مثال، پرچم --no-ignore (فهرست‌شده در زیر) منطق gitignore در ripgrep را غیرفعال می‌کند، اما پرچم --ignore (که در زیر نیامده است) آن را فعال می‌سازد. این پرچم‌ها برای لغو تنظیمات یک فایل پیکربندی ripgrep (یا نام مستعار) در خط فرمان مفید هستند. مستندات هر پرچم مشخص می‌کند که آیا یک پرچم معکوس وجود دارد یا خیر. در همه موارد، آخرین پرچم مشخص‌شده اولویت خواهد داشت.

-e PATTERN, --regexp=PATTERN

الگویی برای جستجو. این گزینه می‌تواند چندین بار مشخص شود، که در این صورت تمامی الگوهای داده شده، علاوه بر هر الگویی که از طریق -f/--file ارائه شده باشد، جستجو می‌شوند. خطوطی که حداقل با یکی از الگوهای ارائه‌شده مطابقت داشته باشند چاپ می‌شوند. این پرچم همچنین می‌تواند هنگام جستجوی الگوهایی که با خط تیره شروع می‌شوند استفاده شود.

برای مثال، جهت جستجوی عبارت متنی مستقیم -foo:

rg -e -foo

همچنین می‌توانید از جداکننده ویژه -- استفاده کنید تا نشان دهید پرچم دیگری ارائه نخواهد شد. به طور مشخص، دستور زیر معادل دستور بالا است:

rg -- -foo

هنگامی که -f/--file یا -e/--regexp استفاده شود، ripgrep تمامی آرگومان‌های موضعی را به عنوان فایل‌ها یا دایرکتوری‌هایی برای جستجو در نظر می‌گیرد.

-f PATTERNFILE, --file=PATTERNFILE

جستجوی الگوها از فایل داده‌شده، با یک الگو در هر خط. هنگامی که از این پرچم چندین بار یا در ترکیب با پرچم -e/--regexp استفاده شود، تمامی الگوهای ارائه‌شده جستجو می‌شوند. خطوط الگوی خالی با تمام خطوط ورودی مطابقت خواهند داشت، و نویسه خط جدید (newline) جزئی از الگو محسوب نمی‌شود.

یک خط تنها در صورتی چاپ می‌شود که حداقل با یکی از الگوها تطبیق یابد.

هنگامی که PATTERNFILE برابر با - باشد، الگوها از stdin خوانده خواهند شد.

هنگامی که -f/--file یا -e/--regexp استفاده شود، ripgrep تمامی آرگومان‌های موضعی را به عنوان فایل‌ها یا دایرکتوری‌هایی برای جستجو در نظر می‌گیرد.

--pre=COMMAND

به ازای هر PATH ورودی، این پرچم موجب می‌شود ripgrep به جای محتوای PATH، خروجی استاندارد COMMAND PATH را جستجو کند. این گزینه انتظار دارد برنامه COMMAND یا یک مسیر کامل باشد یا در متغیر محیطی PATH شما در دسترس باشد. ارسال یک رشته خالی برای COMMAND یا استفاده از پرچم --no-pre این رفتار را غیرفعال می‌کند.
هشدار (WARNING)
هنگامی که این پرچم تنظیم شود، ripgrep بدون قید و شرط برای هر فایلی که جستجو می‌شود یک فرآیند (process) ایجاد می‌کند. بنابراین اگر به انعطاف‌پذیری ارائه‌شده توسط این پرچم نیازی نداشته باشید، این امر می‌تواند افت کارایی بسیار زیادی را تحمیل کند. یک راهکار ممکن برای کاهش این مشکل، استفاده از پرچم --pre-glob برای محدود کردن فایل‌هایی است که پیش‌پردازنده روی آن‌ها اجرا می‌شود.

هنگامی که ripgrep در حال جستجوی stdin است، پیش‌پردازنده اجرا نمی‌شود.

هنگام جستجو در میان مجموعه‌ای از فایل‌ها که ممکن است به یکی از چندین پیش‌پردازنده نیاز داشته باشند، COMMAND باید یک برنامه پوششی (wrapper) باشد که ابتدا PATH را بر اساس شماره‌های جادویی (magic numbers)/محتوا یا بر اساس نام PATH دسته‌بندی کرده و سپس آن را به پیش‌پردازنده مناسب ارسال کند. همچنین ورودی استاندارد هر COMMAND برای سهولت به PATH متصل است.

برای مثال، یک اسکریپت شل برای COMMAND ممکن است به این شکل باشد:

case "$1" in
*.pdf)
    exec pdftotext "$1" -
    ;;
*)
    case $(file "$1") in
    *Zstandard*)
        exec pzstd -cdq
        ;;
    *)
        exec cat
        ;;
    esac
    ;;
esac

اسکریپت بالا از pdftotext برای تبدیل یک فایل PDF به متن ساده استفاده می‌کند. برای سایر فایل‌ها، اسکریپت از ابزار file برای تشخیص نوع فایل بر اساس محتوای آن بهره می‌برد. اگر فایلی فشرده‌شده در قالب Zstandard باشد، آنگاه از pzstd برای خارج کردن محتوا از حالت فشرده به سمت stdout استفاده می‌شود.

این گزینه بر پرچم -z/--search-zip اولویت دارد.

--pre-glob=GLOB

این پرچم در ارتباط با پرچم --pre کار می‌کند. به طور مشخص، هنگامی که یک یا چند پرچم --pre-glob مشخص شوند، تنها فایل‌هایی که با مجموعه الگوهای تطبیق (globs) داده‌شده مطابقت داشته باشند به دستوری که توسط پرچم --pre تعیین شده سپرده می‌شوند. هر فایلی که مطابقت نداشته باشد بدون استفاده از دستور پیش‌پردازنده جستجو خواهد شد.

این پرچم هنگام جستجوی فایل‌های متعدد به همراه پرچم --pre مفید است؛ بدین صورت که امکان جلوگیری از ایجاد سربار فرآیند را برای فایل‌هایی که نیازی به پیش‌پردازش ندارند فراهم می‌سازد. برای مثال، با در نظر گرفتن اسکریپت شل زیر با نام pre-pdftotext:

#!/bin/sh
pdftotext "$1" -

می‌توان از --pre pre-pdftotext --pre-glob '*.pdf' استفاده کرد تا ripgrep دستور pre-pdftotext را فقط روی فایل‌های دارای پسوند .pdf اجرا کند.

می‌توان از چندین پرچم --pre-glob استفاده کرد. قوانین تطبیق الگو (globbing) با الگوهای gitignore یکسان است. برای مستثنی کردن یک الگو، یک نویسه ! قبل از آن قرار دهید.

اگر از پرچم --pre استفاده نشود، این پرچم هیچ اثری نخواهد داشت.

-z, --search-zip

این پرچم به ripgrep دستور می‌دهد که در فایل‌های فشرده جستجو کند. در حال حاضر فایل‌های gzip، bzip2، xz، LZ4، LZMA، Brotli و Zstd پشتیبانی می‌شوند. این گزینه انتظار دارد باینری‌های استخراج از حالت فشرده (مانند gzip) در متغیر محیطی PATH شما در دسترس باشند. اگر باینری‌های لازم یافت نشوند، ripgrep به طور پیش‌فرض پیام خطایی صادر نمی‌کند. برای مشاهده اطلاعات بیشتر از پرچم --debug استفاده کنید.

توجه داشته باشید که این پرچم باعث نمی‌شود ripgrep قالب‌های آرشیو را مانند ساختار درختی دایرکتوری‌ها جستجو کند. این پرچم تنها سبب می‌شود ripgrep فایل‌های فشرده را تشخیص داده و قبل از جستجوی محتوای آن‌ها همانند هر فایل دیگری، آن‌ها را از حالت فشرده خارج سازد.

این گزینه بر پرچم --pre اولویت دارد.

این پرچم را می‌توان با --no-search-zip غیرفعال کرد.

-s, --case-sensitive
جستجو را حساس به حروف کوچک و بزرگ انجام می‌دهد. این حالت پیش‌فرض است.

این یک گزینه سراسری است که برای تمام الگوهای داده‌شده به ripgrep اعمال می‌شود. الگوهای منفرد همچنان می‌توانند با استفاده از نشانگرهای درون‌خطی regex، به صورت غیرحساس به حروف مطابقت داده شوند. برای مثال، (?i)abc حتی در صورت استفاده از این پرچم، با abc به صورت غیرحساس به حروف مطابقت خواهد داشت.

این پرچم، پرچم‌های -i/--ignore-case و -S/--smart-case را لغو می‌کند.

--crlf

هنگامی که فعال باشد، ripgrep به‌جای تنها \n، با CRLF (\r\n) به عنوان پایان‌دهنده خط رفتار می‌کند.

در اصل، این به لنگرهای خط ^ و $ در الگوهای regex اجازه می‌دهد تا CRLF،‏ CR یا LF را به‌جای صرفاً LF به عنوان پایان‌دهنده خط در نظر بگیرند. توجه داشته باشید که آن‌ها هرگز بین یک CR و یک LF تطبیق داده نمی‌شوند. با CRLF به عنوان یک پایان‌دهنده خط واحد رفتار می‌شود.

هنگام استفاده از موتور regex پیش‌فرض، پشتیبانی از CRLF را می‌توان در داخل الگو با پرچم R نیز فعال کرد. برای مثال، (?R:$) دقیقاً پیش از CR یا LF تطبیق می‌یابد، اما هرگز بین CR و LF قرار نمی‌گیرد.

این پرچم، --null-data را لغو می‌کند.

این پرچم را می‌توان با --no-crlf غیرفعال کرد.

--dfa-size-limit=NUM+SUFFIX?

حد بالای اندازه DFA در موتور regex. حد پیش‌فرض مقداری سخاوتمندانه برای هر الگوی منفرد یا برای الگوهای متعدد و نسبتاً کوچک است. این مقدار تنها باید برای ورودی‌های بسیار بزرگ regex تغییر کند، جایی که در صورت رسیدن به این حد، ممکن است در غیر این صورت از موتور پشتیبان regex (که کندتر است) استفاده شود.

قالب ورودی پسوندهای K،‏ M یا G را می‌پذیرد که به ترتیب نشان‌دهنده کیلوبایت، مگابایت و گیگابایت هستند. اگر پسوندی ارائه نشود، ورودی به عنوان بایت در نظر گرفته می‌شود.

-E ENCODING, --encoding=ENCODING

کدگذاری متنی (encoding) را که ripgrep در تمام فایل‌های جستجوشده استفاده خواهد کرد مشخص می‌کند. مقدار پیش‌فرض auto است که باعث می‌شود ripgrep بیشترین تلاش خود را برای تشخیص خودکار کدگذاری بر مبنای هر فایل انجام دهد. تشخیص خودکار در این حالت تنها برای فایل‌هایی اعمال می‌شود که با نشانگر ترتیب بایت (BOM) مربوط به UTF-8 یا UTF-16 آغاز می‌شوند. هیچ تشخیص خودکار دیگری انجام نمی‌شود. همچنین می‌توان none را تعیین کرد که شناسایی خودکار BOM را کاملاً غیرفعال کرده و همیشه منجر به جستجوی بایت‌های خام می‌شود، از جمله خود BOM در صورت وجود، بدون توجه به کدگذاری آن.

سایر مقادیر پشتیبانی‌شده را می‌توان در فهرست برچسب‌ها در اینجا یافت: https://encoding.spec.whatwg.org/#concept-encoding-get.

برای جزئیات بیشتر درباره کدگذاری و نحوه برخورد ripgrep با آن، GUIDE.md را ببینید.

تشخیص کدگذاری که ripgrep استفاده می‌کند را می‌توان با پرچم --no-encoding به حالت خودکار آن بازگرداند.

--engine=ENGINE

مشخص می‌کند که از کدام موتور عبارت باقاعده (regex) استفاده شود. هنگامی که یک موتور regex را انتخاب می‌کنید، این انتخاب برای تمام عبارت‌های باقاعده ارائه‌شده به ripgrep اعمال می‌شود (برای مثال، از طریق چند پرچم -e/--regexp یا -f/--file).

مقادیر پذیرفته‌شده عبارتند از default،‏ pcre2، یا auto.

مقدار پیش‌فرض default است که معمولاً سریع‌ترین گزینه است و باید برای بیشتر موارد استفاده مناسب باشد. موتور pcre2 عموماً زمانی مفید است که بخواهید از قابلیت‌هایی مانند look-around یا پس‌ارجاع‌ها (backreferences) استفاده کنید. مقدار auto بسته به ویژگی‌های استفاده‌شده در الگو، با نهایت تلاش به صورت پویا میان موتورهای regex پشتیبانی‌شده انتخاب می‌کند.

توجه داشته باشید که موتور pcre2 یک قابلیت اختیاری در ripgrep است. اگر PCRE2 در ساخت ripgrep شما گنجانده نشده باشد، استفاده از این پرچم منجر به چاپ پیام خطا توسط ripgrep و خروج از برنامه می‌شود.

این پرچم کاربردهای قبلی پرچم‌های -P/--pcre2 و --auto-hybrid-regex را لغو می‌کند.

-F, --fixed-strings

با تمام الگوها به عنوان رشته‌های متنی صریح (لفظی) به‌جای عبارات باقاعده رفتار می‌کند. هنگامی که از این پرچم استفاده می‌شود، نیازی به گریز دادن فرانوسه‌های ویژه عبارت باقاعده مانند .(){}*+ نخواهد بود.

این پرچم را می‌توان با --no-fixed-strings غیرفعال کرد.

-i, --ignore-case

هنگامی که این پرچم داده شود، تمام الگوها بدون حساسیت به حروف کوچک و بزرگ جستجو خواهند شد. قوانین عدم حساسیت به حروف در موتور regex پیش‌فرض ripgrep با قوانین ساده تبدیل وضعیت حروف («simple» case folding) در یونیکد مطابقت دارد.

این یک گزینه سراسری است که برای تمامی الگوهای داده‌شده به ripgrep اعمال می‌شود. الگوهای منفرد همچنان می‌توانند با استفاده از پرچم‌های درون‌خطی regex به صورت حساس به حروف تطبیق داده شوند. برای مثال، (?-i)abc حتی در صورت استفاده از این پرچم، با abc به صورت حساس به حروف تطبیق می‌یابد.

این پرچم، -s/--case-sensitive و -S/--smart-case را لغو می‌کند.

-v, --invert-match

این پرچم تطبیق را معکوس می‌کند؛ به این معنی که ripgrep به‌جای چاپ خطوط منطبق، خطوطی را که تطابق ندارند چاپ می‌کند.

توجه داشته باشید که این گزینه تنها تطبیق خط‌به‌خط را معکوس می‌کند. برای مثال، ترکیب این پرچم با -l/--files-with-matches فایل‌هایی را نشان می‌دهد که دارای هر خطی باشند که با الگوهای ارائه‌شده مطابقت ندارد. این با گزینه‌ای مانند --files-without-match یکسان نیست، که فایل‌هایی را خروجی می‌دهد که هیچ خط منطبقی در آن‌ها وجود ندارد.

این پرچم را می‌توان با --no-invert-match غیرفعال کرد.

-x, --line-regexp

هنگامی که فعال باشد، ripgrep تنها تطابق‌هایی را نشان می‌دهد که با مرزهای خط احاطه شده باشند. این معادل قرار دادن هر الگو بین ^ و $ است. به عبارت دیگر، این گزینه تنها خطوطی را چاپ می‌کند که در آن کل خط در تطابق شرکت داشته باشد.

این پرچم، پرچم -w/--word-regexp را لغو می‌کند.

-m NUM, --max-count=NUM

تعداد خطوط منطبق در هر فایل جستجوشده را به NUM محدود می‌کند.

هنگامی که از -U/--multiline استفاده می‌شود، یک تطابق واحد که چندین خط را در بر می‌گیرد، برای این محدودیت تنها یک بار شمرده می‌شود. تطابق‌های متعدد در یک خط منفرد تنها یک بار شمرده می‌شوند، درست همان‌طور که در حالت غیرچندخطی رفتار می‌شود.

در صورت ترکیب با -A/--after-context یا -C/--context، اگر خطوط زمینه (context) دارای تطابق باشند، ممکن است تطابق‌های بیشتری نسبت به حد حداکثر چاپ شوند.

توجه داشته باشید که 0 یک مقدار مجاز است اما بعید است مفید باشد. در صورت استفاده از آن، ripgrep هیچ چیزی را جستجو نخواهد کرد.

--mmap

هنگامی که فعال باشد، ripgrep در صورت امکان با استفاده از نگاشت حافظه (memory maps) جستجو خواهد کرد. این ویژگی به طور پیش‌فرض زمانی که ripgrep تشخیص دهد سریع‌تر خواهد بود، فعال است.

جستجوی نگاشت حافظه در تمامی شرایط قابل استفاده نیست. برای مثال، هنگام جستجوی فایل‌های مجازی یا جریان‌هایی مانند stdin. در چنین مواردی، حتی در صورت فعال بودن این پرچم، از نگاشت حافظه استفاده نخواهد شد.

توجه داشته باشید که در صورت استفاده از نگاشت حافظه، اگر ripgrep فایلی را جستجو کند که هم‌زمان کوتاه (truncate) می‌شود، ممکن است به طور غیرمنتظره متوقف شود. کاربران می‌توانند با غیرفعال کردن نگاشت حافظه، از وقوع این احتمال جلوگیری کنند.

این پرچم را می‌توان با --no-mmap غیرفعال کرد.

-U, --multiline

این پرچم جستجو در چندین خط را فعال می‌کند.

هنگامی که حالت چندخطی فعال است، ripgrep این محدودیت را که تطابق نمی‌تواند شامل نویسه پایان‌دهنده خط باشد، برمی‌دارد. برای مثال، وقتی حالت چندخطی فعال نیست (پیش‌فرض)، عبارت باقاعده \p{any} با هر نقطه کد (codepoint) یونیکد به جز \n تطبیق می‌یابد. به طور مشابه، استفاده از عبارت باقاعده \n صریحاً ممنوع است و اگر سعی کنید از آن استفاده کنید، ripgrep خطایی برمی‌گرداند. با این حال، وقتی حالت چندخطی فعال باشد، \p{any} با هر نقطه کد یونیکد، از جمله \n تطبیق پیدا می‌کند و عبارات باقاعده‌ای مانند \n مجاز هستند.

یک نکته مهم این است که حالت چندخطی معناشناسی تطابق . را تغییر نمی‌دهد؛ به این معنی که در اکثر موتورهای تطبیق regex، یک . به طور پیش‌فرض با هر نویسه‌ای غیر از \n مطابقت دارد و این موضوع در ripgrep نیز صادق است. برای اینکه . با \n تطبیق داده شود، باید پرچم «dot all» را در داخل عبارت باقاعده فعال کنید. برای مثال، هر دو عبارت (?s). و (?s:.) معناشناسی یکسانی دارند که در آن . با هر نویسه‌ای از جمله \n مطابقت می‌یابد. در غیر این صورت، پرچم --multiline-dotall می‌تواند برای تبدیل رفتار «dot all» به پیش‌فرض ارسال شود. این پرچم تنها زمانی اعمال می‌شود که جستجوی چندخطی فعال باشد.

هیچ محدودیتی در تعداد خطوطی که یک تطابق منفرد می‌تواند در بر گیرد وجود ندارد.

هشدار: به دلیل نحوه عملکرد موتور regex زیرین، جستجوهای چندخطی ممکن است کندتر از جستجوهای عادی خط‌محور باشند و همچنین ممکن است حافظه بیشتری مصرف کنند. به‌ویژه، هنگامی که حالت چندخطی فعال است، ripgrep نیاز دارد که هر فایلی که جستجو می‌کند به طور پیوسته در حافظه قرار گیرد (خواه با خواندن آن روی heap یا با نگاشت حافظه آن). مواردی که نمی‌توان آن‌ها را نگاشت حافظه کرد (مانند stdin) پیش از شروع جستجو تا رسیدن به EOF به طور کامل خوانده خواهند شد. به طور کلی، ripgrep این اقدامات را تنها در صورت لزوم انجام می‌دهد. به طور مشخص، اگر پرچم -U/--multiline داده شود اما regex شامل الگوهایی نباشد که با نویسه‌های \n تطبیق یابند، ripgrep به طور خودکار از خواندن کل فایل در حافظه قبل از جستجو در آن خودداری می‌کند. با این وجود، اگر فقط به تطابق‌هایی اهمیت می‌دهید که حداکثر یک خط را در بر می‌گیرند، همیشه بهتر است حالت چندخطی را غیرفعال کنید.

این پرچم، پرچم --stop-on-nonmatch را لغو می‌کند.

این پرچم را می‌توان با --no-multiline غیرفعال کرد.

--multiline-dotall

این پرچم حالت «dot all» را در تمام الگوهای regex فعال می‌کند. این امر باعث می‌شود که . هنگام فعال بودن جستجوی چندخطی، با نویسه‌های پایان‌دهنده خط تطبیق یابد. این پرچم در صورتی که جستجوی چندخطی با پرچم -U/--multiline فعال نشده باشد، هیچ اثری ندارد.

به طور معمول، . با هر نویسه‌ای به جز پایان‌دهنده‌های خط مطابقت پیدا می‌کند. در حالی که این رفتار معمولاً برای تطبیق خط‌محور مرتبط نیست (زیرا تطابق‌ها حداکثر می‌توانند یک خط را در بر گیرند)، هنگام جستجو با پرچم -U/--multiline می‌تواند مفید باشد. به طور پیش‌فرض، حالت چندخطی بدون فعال بودن حالت «dot all» اجرا می‌شود.

این پرچم به طور کلی برای استفاده در یک نام مستعار (alias) یا فایل پیکربندی ripgrep شما در نظر گرفته شده است اگر معناشناسی «dot all» را به طور پیش‌فرض ترجیح می‌دهید. توجه داشته باشید که صرف‌نظر از استفاده شدن یا نشدن این پرچم، معناشناسی «dot all» همچنان از طریق پرچم‌های درون‌خطی در خود الگوی regex قابل کنترل است، برای مثال (?s:.) همیشه «dot all» را فعال می‌کند، در حالی که (?-s:.) همیشه «dot all» را غیرفعال می‌سازد. علاوه بر این، می‌توانید از رده‌های نویسه مانند \p{any} برای تطبیق با هر نقطه کد یونیکد بدون توجه به فعال بودن یا نبودن حالت «dot all» استفاده کنید.

این پرچم را می‌توان با --no-multiline-dotall غیرفعال کرد.

--no-unicode

این پرچم حالت یونیکد را برای تمام الگوهای داده‌شده به ripgrep غیرفعال می‌کند.

به طور پیش‌فرض، ripgrep «حالت یونیکد» را در تمام عبارات باقاعده خود فعال می‌کند. این امر پیامدهای متعددی دارد: نویسه . تنها با مقادیر اسکالر معتبر یونیکد کدگذاری‌شده با UTF-8 مطابقت پیدا می‌کند.

  • کلاس‌هایی مانند \w، \s و \d همگی سازگار با یونیکد هستند و دامنه بسیار گسترده‌تری نسبت به نسخه‌های صرفاً ASCII خود دارند.
  • تطبیق غیرحساس به حروف کوچک و بزرگ از فولدینگ حروف یونیکد (Unicode case folding) استفاده خواهد کرد.
  • طیف گسترده‌ای از کلاس‌ها مانند \p{Emoji} در دسترس هستند. (اگرچه مجموعه کلاس‌های در دسترس بسته به موتور regex متغیر است. به‌طور کلی، موتور regex پیش‌فرض کلاس‌های بیشتری را پشتیبانی می‌کند.)
  • مرزهای کلمه (\b و \B) از تعریف یونیکد برای نویسه‌های کلمه استفاده می‌کنند.

در برخی موارد ممکن است غیرفعال کردن این ویژگی‌ها مطلوب باشد. این پرچم دقیقاً همین کار را انجام می‌دهد. برای مثال، حالت یونیکد گاهی می‌تواند تأثیر منفی بر کارایی داشته باشد، به‌ویژه هنگامی که مواردی مانند \w مکرراً استفاده می‌شوند (از جمله با تکرارهای مقید مانند \w{100}) در حالی که تنها تفسیر ASCII آن‌ها مورد نیاز است.

این پرچم را می‌توان با --unicode غیرفعال کرد.

--null-data

فعال‌سازی این پرچم باعث می‌شود که ripgrep به جای مقدار پیش‌فرض \n، از بایت NUL به عنوان پایان‌دهندهٔ خط استفاده کند.

این قابلیت هنگام جستجو در فایل‌های باینری بزرگ مفید است؛ فایل‌هایی که اگر از \n به عنوان پایان‌دهندهٔ خط در آن‌ها استفاده می‌شد، خطوط بسیار طویلی می‌داشتند. به‌ویژه اینکه ripgrep نیاز دارد هر خط دست‌کم در حافظه جا شود. استفاده از NUL می‌تواند یک راهکار موقتِ سودمند برای پایین نگه داشتن حافظه مورد نیاز و جلوگیری از شرایط OOM (کمبود حافظه / out of memory) باشد.

این گزینه همچنین برای پردازش داده‌های جداشده با NUL، مانند خروجی تولیدشده هنگام استفاده از پرچم -0/--null در ripgrep یا پرچم --print0 در find، مفید است.

استفاده از این پرچم به معنای اعمال خودکار -a/--text است. این پرچم همچنین اولویت بالاتری نسبت به --crlf دارد و آن را نادیده می‌گیرد.

-P, --pcre2

هنگامی که این پرچم مشخص شود، ripgrep به جای موتور regex پیش‌فرض خود از موتور regex پ‌سی‌آر‌ای۲ (PCRE2) استفاده خواهد کرد.

این گزینه به‌طور کلی زمانی سودمند است که می‌خواهید از امکاناتی مانند look-around یا ارجاع به گذشته (backreferences) استفاده کنید.

استفاده از این پرچم معادل ارسال --engine=pcre2 است. کاربران می‌توانند به جای آن از --engine=auto استفاده کنند تا ripgrep به‌طور خودکار موتور regex مناسب را بر اساس الگوهای داده‌شده انتخاب کند. این پرچم و پرچم --engine یکدیگر را لغو می‌کنند.

توجه داشته باشید که PCRE2 یک قابلیت اختیاری در ripgrep است. اگر PCRE2 در بیلد ripgrep شما گنجانده نشده باشد، استفاده از این پرچم باعث چاپ یک پیام خطا توسط ripgrep و خروج از برنامه خواهد شد. همچنین PCRE2 در برخی موارد ممکن است تجربه کاربری ضعیف‌تری ارائه دهد، زیرا APIهای درون‌نگری (introspection APIs) کمتری نسبت به موتور regex پیش‌فرض ripgrep دارد. به عنوان مثال، اگر از یک \n در regex مربوط به PCRE2 بدون پرچم -U/--multiline استفاده کنید، ripgrep بدون اعلام خطا هیچ تطابقی پیدا نخواهد کرد (silently fail)، در حالی که در موتور regex پیش‌فرض بلافاصله خطایی گزارش می‌شود.

این پرچم را می‌توان با --no-pcre2 غیرفعال کرد.

--regex-size-limit=NUM+SUFFIX?

حد مجاز اندازه regex کامپایل‌شده؛ جایی که regex کامپایل‌شده عموماً متناظر با یک شیء منفرد در حافظه است که می‌تواند با تمام الگوهای ارائه‌شده به ripgrep تطابق یابد. حد پیش‌فرض به اندازه کافی سخاوتمندانه در نظر گرفته شده است تا اکثر الگوهای معقول (یا حتی تعداد کمی از آن‌ها) در آن جای گیرند.

تغییر این مقدار زمانی مفید است که صراحتاً بخواهید به ripgrep اجازه دهید تا در صورت نیاز زمان و/یا حافظه بسیار بیشتری را برای ساخت تطبیق‌دهندهٔ regex صرف کند.

قالب ورودی پسوندهای K، M یا G را می‌پذیرد که به ترتیب متناظر با کیلوبایت، مگابایت و گیگابایت هستند. اگر پسوندی ارائه نشود، ورودی به عنوان بایت در نظر گرفته می‌شود.

-S, --smart-case

این پرچم به ripgrep دستور می‌دهد در صورتی که الگو تماماً از حروف کوچک تشکیل شده باشد، جستجو را بدون حساسیت به حروف کوچک و بزرگ انجام دهد. در غیر این صورت، جستجو با حساسیت به بزرگی و کوچکی حروف انجام خواهد شد.

یک الگو در صورتی تماماً با حروف کوچک در نظر گرفته می‌شود که هر دو شرط زیر برقرار باشند:

  • نخست، الگو شامل حداقل یک نویسه عینی (literal) باشد. برای مثال، a\w حاوی یک نویسه عینی (a) است، اما \w به‌تنهایی چنین نیست.
  • دوم، از میان نویسه‌های عینی موجود در الگو، هیچ‌کدام طبق یونیکد حرف بزرگ به شمار نیایند. برای مثال، foo\pL هیچ نویسه بزرگی ندارد اما Foo\pL دارای نویسه بزرگ است.

این گزینه بر پرچم‌های -s/--case-sensitive و -i/--ignore-case اولویت دارد و آن‌ها را لغو می‌کند.

--stop-on-nonmatch

فعال کردن این گزینه باعث می‌شود ripgrep به محض برخورد با خطی که مطابقت ندارد—پس از آنکه قبلاً خطی منطبق را پیدا کرده باشد—خواندن فایل را متوقف کند. این قابلیت زمانی مفید است که انتظار می‌رود تمام تطابق‌ها در یک فایل در خطوط متوالی قرار داشته باشند، برای مثال به دلیل مرتب بودن (sort بودن) خطوط.

این گزینه پرچم -U/--multiline را نادیده می‌گیرد و بر آن اولویت دارد.

-a, --text

این پرچم به ripgrep دستور می‌دهد تا فایل‌های باینری را طوری جستجو کند که گویی فایل متنی هستند. هنگامی که این پرچم فعال باشد، تشخیص فایل باینری در ripgrep غیرفعال می‌شود. این بدان معناست که در صورت وجود تطابق حین جستجوی یک فایل باینری، محتویات آن ممکن است در خروجی چاپ شود. این امر ممکن است باعث چاپ کدهای گریز (escape codes) شده و رفتار ترمینال شما را دگرگون کند.

تشخیص فایل باینری، در زمان فعال بودن نیز عملکردی کاملاً بی‌نقص ندارد. به‌طور کلی، این سازوکار از یک روش مکاشفه‌ای (heuristic) ساده استفاده می‌کند. اگر در حین جستجو یک بایت NUL دیده شود، فایل باینری در نظر گرفته شده و جستجو متوقف می‌شود (مگر اینکه این پرچم داده شده باشد). در مقابل، اگر از پرچم --binary استفاده شود، ripgrep تنها زمانی متوقف می‌شود که پس از یافتن یک تطابق، بایت NUL را مشاهده کند (یا تمام فایل را جستجو نماید).

این پرچم اولویت بالاتری نسبت به --binary دارد و آن را لغو می‌کند.

این پرچم را می‌توان با --no-text غیرفعال کرد.

-j NUM, --threads=NUM

این پرچم تعداد تقریبی رشته‌ها (threads) را برای اجرا تنظیم می‌کند. مقدار 0 (که پیش‌فرض است) باعث می‌شود ripgrep تعداد رشته‌ها را با استفاده از روش‌های مکاشفه‌ای تعیین کند.

-w, --word-regexp

در صورت فعال بودن، ripgrep تنها تطابق‌هایی را نمایش می‌دهد که در مرزهای کلمه (word boundaries) محصور شده باشند. این کار معادل احاطه کردن هر الگو با \b{start-half} و \b{end-half} است. این نگارش سفارشی از موتور regex پیش‌فرض ripgrep، بر خلاف \b، نیازی به تطبیق نویسهٔ کلمه‌ای در یک طرف ندارد؛ بدین معنا که \b{start-half} متناظر با تطبیق \W|\A در سمت چپ و \b{end-half} متناظر با تطبیق \W|\z در سمت راست است.

این گزینه پرچم -x/--line-regexp را نادیده می‌گیرد.

--auto-hybrid-regex

منسوخ شده است (DEPRECATED). به جای آن از --engine استفاده کنید.

هنگام استفاده از این پرچم، ripgrep بسته به قابلیت‌های استفاده‌شده در الگو، به‌طور پویا میان موتورهای regex پشتیبانی‌شده یکی را انتخاب می‌کند. هنگامی که ripgrep موتور regex را انتخاب کرد، این انتخاب را برای تمام عبارات باقاعده ارائه‌شده به ripgrep (مثلاً از طریق چندین پرچم -e/--regexp یا -f/--file) اعمال می‌کند.

به عنوان نمونه‌ای از رفتار این پرچم، ripgrep هر زمان که الگو بتواند با موفقیت توسط موتور regex پیش‌فرض مبتنی بر اتوماتای متناهی کامپایل شود، تلاش می‌کند از آن استفاده کند. اگر PCRE2 فعال باشد و الگوی داده‌شده نتواند با موتور regex پیش‌فرض کامپایل شود، PCRE2 به‌طور خودکار برای جستجو به کار گرفته خواهد شد. اگر PCRE2 در دسترس نباشد، این پرچم اثری ندارد زیرا تنها یک موتور regex برای انتخاب وجود خواهد داشت.

در آینده ممکن است ripgrep قواعد مکاشفه‌ای خود را برای نحوه تصمیم‌گیری درباره موتور regex مورد استفاده تغییر دهد. به‌طور کلی، این مکاشفه‌ها محدود به تحلیل ایستای الگوها خواهند بود و نه رفتارهای مشخص زمان اجرا حین جستجوی فایل‌ها.

نقطه ضعف اصلی استفاده از این پرچم این است که ممکن است همیشه مشخص نباشد ripgrep از کدام موتور regex استفاده می‌کند، و بنابراین ممکن است معناشناسی تطابق یا مشخصات کارایی ripgrep به‌طور نامحسوس و غیرمنتظره‌ای دستخوش تغییر شود. با این حال، در بسیاری از موارد همه موتورهای regex درباره نتیجه تطابق توافق دارند و پشتیبانی شفاف از ویژگی‌های پیشرفته‌تر regex مانند look-around و مراجع بازگشتی بدون نیاز صریح به فعال کردن آن‌ها می‌تواند مناسب باشد.

این پرچم را می‌توان با --no-auto-hybrid-regex غیرفعال کرد.

--no-pcre2-unicode

منسوخ شده است (DEPRECATED). به جای آن از --no-unicode استفاده کنید.

توجه داشته باشید که حالت یونیکد به‌طور پیش‌فرض فعال است.

این پرچم را می‌توان با --pcre2-unicode غیرفعال کرد.

--binary

فعال‌سازی این پرچم موجب می‌شود ripgrep در فایل‌های دودویی (binary) نیز جستجو کند. به‌طور پیش‌فرض، ripgrep به‌منظور بهبود ارتباط نتایج و افزایش سرعت جستجو، به‌طور خودکار از فایل‌های دودویی صرف‌نظر می‌کند.

فایل‌های دودویی بر اساس وجود یا عدم وجود بایت NUL به‌صورت اکتشافی شناسایی می‌شوند. به‌طور پیش‌فرض (بدون تنظیم این پرچم)، به محض مشاهده یک بایت NUL، جستجوی فایل توسط ripgrep متوقف می‌شود. معمولاً بایت‌های NUL در ابتدای بیشتر فایل‌های دودویی قرار دارند. اگر بایت NUL پس از یک تطابق رخ دهد، ripgrep آن تطابق را چاپ نخواهد کرد، جستجوی آن فایل را متوقف می‌کند و هشداری مبنی بر نادیده گرفته شدن برخی از تطابق‌ها صادر می‌نماید.

در مقابل، هنگام استفاده از این پرچم، ripgrep حتی در صورت یافتن بایت NUL به جستجوی فایل ادامه خواهد داد. به‌ویژه، در صورت مشاهده بایت NUL، جستجو تا زمان یافتن یک تطابق یا رسیدن به انتهای فایل (هرکدام زودتر رخ دهد) ادامه می‌یابد. اگر تطابقی یافت شود، ripgrep متوقف شده و هشداری مبنی بر توقف زودهنگام جستجو چاپ می‌کند.

اگر می‌خواهید ripgrep فایلی را بدون هیچ‌گونه رسیدگی ویژه به بایت‌های NUL جستجو کند (و احتمالاً داده‌های دودویی را در خروجی استاندارد stdout چاپ نماید)، باید از پرچم -a/--text استفاده کنید.

پرچم --binary پرچمی برای کنترل سازوکار پالایش خودکار ripgrep است. از این رو، هنگام جستجوی صریح یک فایل مشخص یا هنگام جستجو در ورودی استاندارد stdin نیازی به استفاده از آن نیست؛ یعنی تنها هنگام جستجوی بازگشتی در یک دایرکتوری کاربرد دارد.

هنگامی که پرچم -u/--unrestricted سه بار تکرار شود، این پرچم به‌طور خودکار فعال می‌گردد.

این پرچم بر پرچم -a/--text اولویت دارد.

این پرچم را می‌توان با --no-binary غیرفعال کرد.

-L, --follow

این پرچم به ripgrep دستور می‌دهد هنگام پیمایش دایرکتوری‌ها، پیوندهای نمادین (symbolic links) را دنبال کند. این رفتار به‌طور پیش‌فرض غیرفعال است. توجه داشته باشید که ripgrep حلقه‌های پیوند نمادین را بررسی کرده و در صورت یافتن آن‌ها خطا گزارش می‌دهد. ripgrep همچنین برای پیوندهای شکسته نیز خطا گزارش می‌کند. برای جلوگیری از نمایش پیام‌های خطا، از پرچم --no-messages استفاده کنید.

این پرچم را می‌توان با --no-follow غیرفعال کرد.

-g GLOB, --glob=GLOB

شامل کردن یا مستثنی کردن فایل‌ها و دایرکتوری‌های مطابق با الگوی glob ارائه‌شده برای جستجو. این گزینه همواره بر هر منطق چشم‌پوشی دیگری اولویت دارد. می‌توان از چندین پرچم glob استفاده کرد. قواعد الگوها با الگوهای .gitignore مطابقت دارند. با افزودن یک ! در ابتدای الگو آن را مستثنی کنید. اگر چندین الگو با یک فایل یا دایرکتوری مطابقت داشته باشند، الگویی که دیرتر در خط فرمان آمده باشد تقدم دارد.

به‌عنوان یک قابلیت الحاقی، الگوهای glob از تعیین گزینه‌های جانشین پشتیبانی می‌کنند: -g 'ab{c,d}*' معادل است با -g abc -g abd. گزینه‌های جانشین خالی مانند -g 'ab{,c}' در حال حاضر پشتیبانی نمی‌شوند. توجه داشته باشید که این افزونهٔ نحوی در حال حاضر در فایل‌های gitignore نیز فعال است، حتی با وجود اینکه این نحو توسط خود git پشتیبانی نمی‌شود. ممکن است ripgrep این افزونهٔ نحوی را در فایل‌های gitignore غیرفعال کند، اما همواره از طریق پرچم -g/--glob در دسترس خواهد بود.

هنگامی که این پرچم تنظیم شود، هر فایل و دایرکتوری برای بررسی تطابق با آن ارزیابی می‌شود. برای نمونه، اگر تنها می‌خواهید در یک دایرکتوری خاص با نام foo جستجو کنید، استفاده از -g foo نادرست است زیرا foo/bar با الگوی foo مطابقت ندارد. در عوض، باید از -g 'foo/**'. استفاده کنید.

--glob-case-insensitive

پردازش تمامی الگوهای glob مشخص‌شده با پرچم -g/--glob بدون حساسیت به حروف بزرگ و کوچک. این کار در عمل موجب می‌شود با -g/--glob همانند --iglob برخورد شود.

این پرچم را می‌توان با --no-glob-case-insensitive غیرفعال کرد.

-., --hidden

جستجوی فایل‌ها و دایرکتوری‌های مخفی. به‌طور پیش‌فرض، فایل‌ها و دایرکتوری‌های مخفی نادیده گرفته می‌شوند. توجه داشته باشید که اگر یک فایل یا دایرکتوری مخفی در یک فایل چشم‌پوشی در فهرست مجاز (whitelist) قرار گرفته باشد، حتی بدون ارائه این پرچم نیز جستجو خواهد شد؛ همچنین در صورتی که یک فایل یا دایرکتوری مخفی به‌طور صریح به‌عنوان آرگومان به ripgrep داده شود.

یک فایل یا دایرکتوری در صورتی مخفی در نظر گرفته می‌شود که نام پایهٔ آن با یک نویسه نقطه (.) شروع شود. در سیستم‌عامل‌هایی که از صفت فایل «مخفی» پشتیبانی می‌کنند، مانند Windows، فایل‌های دارای این صفت نیز مخفی تلقی می‌شوند.

توجه داشته باشید که -./--hidden فایل‌ها و پوشه‌هایی مانند .git را صرف‌نظر از پرچم --no-ignore-vcs شامل خواهد کرد. برای مستثنی کردن چنین مسیرهایی هنگام استفاده از -./--hidden، باید صریحاً آن‌ها را با استفاده از پرچمی دیگر یا یک فایل چشم‌پوشی نادیده بگیرید.

این پرچم را می‌توان با --no-hidden غیرفعال کرد.

--iglob=GLOB

شامل کردن یا مستثنی کردن فایل‌ها و دایرکتوری‌های مطابق با الگوی glob ارائه‌شده برای جستجو. این گزینه همواره بر هر منطق چشم‌پوشی دیگری اولویت دارد. می‌توان از چندین پرچم glob استفاده کرد. قواعد الگوها با الگوهای .gitignore مطابقت دارند. با افزودن یک ! به ابتدای الگو آن را مستثنی کنید. اگر چندین الگو با یک فایل یا دایرکتوری مطابقت داشته باشند، الگویی که دیرتر در خط فرمان آمده باشد تقدم دارد. الگوهای استفاده‌شده از طریق این پرچم بدون حساسیت به حروف بزرگ و کوچک تطبیق داده می‌شوند.

--ignore-file=PATH

مسیری به یک یا چند فایل قواعد با قالب gitignore را تعیین می‌کند. این الگوها پس از الگوهای موجود در فایل‌های .gitignore، .rgignore و .ignore اعمال شده و نسبت به دایرکتوری کاری جاری مطابقت داده می‌شوند. یعنی فایل‌های مشخص‌شده از طریق این پرچم نسبت به فایل‌هایی که به‌طور خودکار در درخت دایرکتوری یافته می‌شوند، اولویت کمتری دارند. با استفاده مکرر از این پرچم می‌توان فایل‌های چشم‌پوشی بیشتری را تعیین کرد. هنگام تعیین چندین فایل چشم‌پوشی، فایل‌های پیشین اولویت کمتری نسبت به فایل‌های بعدی دارند.

اگر به دنبال روشی برای گنجاندن یا استثنا کردن مستقیم فایل‌ها و دایرکتوری‌ها در خط فرمان هستید، در عوض از -g/--glob استفاده کنید.

--ignore-file-case-insensitive

پردازش فایل‌های چشم‌پوشی (.gitignore، .ignore و غیره) بدون حساسیت به حروف بزرگ و کوچک. توجه داشته باشید که این کار با افت کارایی همراه است و بیشترین کاربرد را در سیستم‌های فایل فاقد حساسیت به حروف کوچک و بزرگ (مانند Windows) دارد.

این پرچم را می‌توان با --no-ignore-file-case-insensitive غیرفعال کرد.

-d NUM, --max-depth=NUM

این پرچم عمق پیمایش دایرکتوری را به میزان NUM سطح فراتر از مسیرهای ارائه‌شده محدود می‌کند. مقدار 0 تنها خود مسیرهای مشخص‌شده به صراحت را جستجو می‌کند.

برای نمونه، rg --max-depth 0 dir/ هیچ اثری ندارد زیرا به داخل dir/ ورود نمی‌کند. دستور rg --max-depth 1 dir/ تنها فرزندان مستقیم dir را جستجو می‌کند.

نگارش جایگزین برای این پرچم --maxdepth است.

--max-filesize=NUM+SUFFIX?

نادیده گرفتن فایل‌هایی با اندازهٔ بزرگ‌تر از NUM. این گزینه در مورد دایرکتوری‌ها صدق نمی‌کند.

قالب ورودی پسوندهای K، M یا G را می‌پذیرد که به‌ترتیب متناظر با کیلوبایت، مگابایت و گیگابایت هستند. در صورت عدم درج پسوند، مقدار بر حسب بایت در نظر گرفته می‌شود.

مثال‌ها: --max-filesize 50K یا --max-filesize 80M.

--no-ignore

هنگام تنظیم، فایل‌های چشم‌پوشی مانند .gitignore، .ignore و .rgignore نادیده گرفته می‌شوند. این گزینه شامل --no-ignore-dot، --no-ignore-exclude، --no-ignore-global، --no-ignore-parent و --no-ignore-vcs نیز می‌شود.

این گزینه شامل --no-ignore-files نمی‌شود، چرا که --ignore-file صریحاً به‌عنوان یک آرگومان خط فرمان تعیین می‌گردد.

هنگامی که پرچم -u/--unrestricted تنها یک بار داده شود، رفتاری کاملاً مشابه با این پرچم خواهد داشت و می‌توان آن را یک نام مستعار در نظر گرفت. با این حال، تکرار بیشتر پرچم -u/--unrestricted تأثیرات مضاعفی به دنبال دارد.

این پرچم را می‌توان با --ignore غیرفعال کرد.

--no-ignore-dot

عدم رعایت قواعد پالایش موجود در فایل‌های .ignore یا .rgignore.

این گزینه تأثیری بر نادیده گرفتن فایل‌ها و دایرکتوری‌هایی که نامشان با نقطه آغاز می‌شود توسط ripgrep ندارد. برای آن منظور، پرچم -./--hidden را ببینید. این پرچم همچنین تأثیری بر رعایت قواعد پالایش در فایل‌های .gitignore ندارد.

این پرچم را می‌توان با --ignore-dot غیرفعال کرد.

--no-ignore-exclude

عدم رعایت قواعد پالایش فایل‌هایی که به‌صورت دستی برای مخزن پیکربندی شده‌اند. برای مثال، این شامل فایل .git/info/exclude در git است.

این پرچم را می‌توان با --ignore-exclude غیرفعال کرد.

--no-ignore-files

در صورت فعال بودن، هر پرچم --ignore-file، حتی مواردی که پس از این پرچم در دستور بیایند، نادیده گرفته می‌شوند.

این پرچم را می‌توان با --ignore-files غیرفعال کرد.

--no-ignore-global

عدم رعایت قواعد پالایش فایل‌های چشم‌پوشی حاصل از منابع «سراسری» (global) مانند گزینهٔ پیکربندی core.excludesFile در git (که مقدار پیش‌فرض آن $HOME/.config/git/ignore است).

این پرچم را می‌توان با --ignore-global غیرفعال کرد.

--no-ignore-parent

هنگام تنظیم این پرچم، قواعد پالایش فایل‌های چشم‌پوشی موجود در دایرکتوری‌های والد نادیده گرفته می‌شوند. به‌طور پیش‌فرض، ripgrep دایرکتوری‌های والدِ دایرکتوری کاری جاری را به سمت بالا پیمایش می‌کند تا فایل‌های چشم‌پوشی مرتبطی را که باید اعمال شوند بیابد. در برخی شرایط ممکن است این رفتار مطلوبی نباشد.

این پرچم را می‌توان با --ignore-parent غیرفعال کرد.

--no-ignore-vcs

در صورت تعیین، قواعد پالایش فایل‌های چشم‌پوشی سامانه کنترل نسخه (مانند .gitignore) نادیده گرفته می‌شوند. به‌طور پیش‌فرض، ripgrep برای پالایش خودکار از قواعد چشم‌پوشی git پیروی می‌کند. در برخی موارد، ممکن است پیروی از قواعد کنترل نسخه مطلوب نبوده و در عوض تمایل به پیروی اختصاصی از قواعد .ignore یا .rgignore وجود داشته باشد.

توجه داشته باشید که این پرچم مستقیماً بر پالایش فایل‌ها یا پوشه‌های کنترل نسخه‌ای که با نقطه (.) آغاز می‌شوند (مانند .git) اثر نمی‌گذارد. این موارد در عوض تحت تأثیر -./--hidden و پرچم‌های مربوط به آن هستند.

این پرچم برای فایل‌های چشم‌پوشی سامانه کنترل نسخه به منزلهٔ اعمال --no-ignore-parent نیز هست.

این پرچم را می‌توان با --ignore-vcs غیرفعال کرد.

--no-require-git

با ارائه این پرچم، فایل‌های چشم‌پوشی سامانه کنترل نسخه مانند .gitignore حتی در صورتی که هیچ مخزن gitای موجود نباشد نیز رعایت می‌شوند.

به‌طور پیش‌فرض، ripgrep تنها زمانی قواعد پالایش فایل‌های چشم‌پوشی سامانه کنترل نسخه را رعایت می‌کند که تشخیص دهد جستجو در داخل یک مخزن کنترل نسخه در حال اجراست؛ برای نمونه، هنگامی که یک دایرکتوری .git مشاهده شود.

این پرچم محدودیت پیش‌فرض فوق را برمی‌دارد. برای مثال، این پرچم زمانی می‌تواند سودمند باشد که محتویات یک مخزن git در محلی ذخیره یا کپی شده باشد، اما وضعیت اصلی مخزن وجود نداشته باشد.

این پرچم را می‌توان با --require-git غیرفعال کرد.

--one-file-system

هنگام فعال بودن، ripgrep از مرزهای سیستم فایلی که جستجو از آن آغاز شده است عبور نخواهد کرد.

توجه داشته باشید که این حالت به ازای هر آرگومان مسیر داده‌شده به ripgrep اعمال می‌شود. برای نمونه، در دستور

rg --one-file-system /foo/bar /quux/baz

ابزار ripgrep هر دو مسیر /foo/bar و /quux/baz را حتی در صورت قرار داشتن روی سیستم‌های فایل متفاوت جستجو می‌کند، اما هنگام پیمایش درخت دایرکتوریِ هر مسیر، از مرز سیستم فایل مربوط به آن عبور نخواهد کرد.

این رفتار مشابه پرچم -xdev یا -mount در دستور find است.

این پرچم را می‌توان با --no-one-file-system غیرفعال کرد.

-t TYPE, --type=TYPE

این پرچم جستجوی ripgrep را به فایل‌های مطابق با TYPE محدود می‌کند. می‌توان چندین پرچم -t/--type ارائه داد.

این پرچم از مقدار ویژهٔ all پشتیبانی می‌کند؛ در این حالت دستور به‌گونه‌ای عمل خواهد کرد که گویی -t/--type برای تک‌تک انواع فایل‌های پشتیبانی‌شده توسط ripgrep (از جمله انواع فایل‌های سفارشی) داده شده است. نتیجه این است که --type=all موجب می‌شود ripgrep در حالت «فهرست سفید» جستجو کند، به این معنا که تنها فایل‌هایی را جستجو می‌کند که از طریق تعاریف نوع خود می‌شناسد.

توجه داشته باشید که اولویت این پرچم نسبت به پرچم -g/--glob و هرگونه قواعد موجود در فایل‌های چشم‌پوشی کمتر است.

برای مشاهدهٔ فهرست انواع فایل‌های موجود، از پرچم --type-list استفاده کنید.

-T TYPE, --type-not=TYPE

فایل‌های مطابق با TYPE را جستجو نمی‌کند. می‌توان چندین پرچم -T/--type-not تعیین کرد. برای مشاهده تمامی انواع موجود، پرچم --type-list را به کار ببرید.

این پرچم از مقدار ویژهٔ all پشتیبانی می‌کند؛ در این صورت عملکرد آن همانند ارائه‌شدن -T/--type-not برای تمام انواع فایل‌های پشتیبانی‌شده توسط ripgrep (شامل انواع فایل‌های سفارشی) خواهد بود. نتیجه آن است که --type-not=all موجب کارکرد ripgrep در حالت «فهرست سیاه» می‌شود؛ یعنی فقط فایل‌هایی که توسط تعاریف نوع آن ناشناخته هستند جستجو خواهند شد.

جهت مشاهده فهرست انواع فایل‌های دردسترس، از پرچم --type-list استفاده کنید.

--type-add=TYPESPEC

این پرچم یک الگوی glob جدید برای یک نوع فایل مشخص اضافه می‌کند. در هر بار تنها یک الگو می‌تواند افزوده شود. می‌توان چندین پرچم --type-add را مشخص کرد. الگوها به الگوهای موجود از پیش تعریف‌شده درون ripgrep اضافه می‌شوند، مگر اینکه از --type-clear استفاده شود.

توجه داشته باشید که این پرچم باید در هر بار اجرای ripgrep به آن منتقل شود؛ زیرا تنظیمات نوع پایدار نمی‌مانند. برای یک راه‌حل دائمی، بخش CONFIGURATION FILES را بررسی کنید.

مثال:

rg --type-add 'foo:*.foo' -tfoo PATTERN

همچنین می‌توان از این پرچم برای وارد کردن قواعد از انواع دیگر با استفاده از دستور ویژه include بهره گرفت. این دستور ویژه اجازه می‌دهد یک یا چند نام نوع دیگر (جداشده با ویرگول) که تعریف شده‌اند تعیین گردند و قواعد آن‌ها به‌طور خودکار به نوع مشخص‌شده وارد شوند. برای نمونه، به‌منظور ایجاد یک نوع به نام src که با فایل‌های C++، Python و Markdown مطابقت داشته باشد، می‌توان دستور زیر را به کار برد:

--type-add 'src:include:cpp,py,md'

با تکرار استفاده از این پرچم، همچنان می‌توان قواعد glob بیشتری را به نوع src اضافه نمود:

--type-add 'src:include:cpp,py,md' --type-add 'src:*.foo'

توجه داشته باشید که نام انواع فایل فقط باید شامل حروف یا ارقام یونیکد باشد. استفاده از نویسه‌های نشانه‌گذاری مجاز نیست.

--type-clear=TYPE

پاک کردن الگوهای نوع فایلی که پیش‌تر برای TYPE تعریف شده‌اند. این پرچم تمامی الگوهای قبلاً تعریف‌شده برای TYPE را پاک می‌کند، ولی می‌توان بعد از این پرچم الگوهای جدیدی اضافه کرد.

توجه داشته باشید که این گزینه باید در هر بار فراخوانی ripgrep داده شود؛ تنظیمات نوع فایل ماندگار نیستند. برای یک راه‌حل پایدار، بخش CONFIGURATION FILES را ببینید.

-u, --unrestricted

این پرچم سطح پالایش «هوشمند» را کاهش می‌دهد. استفادهٔ چندباره (تا ۳ بار) پالایش را از این هم کمتر می‌کند. در صورت تکرار به تعداد سه بار، ripgrep تک‌تک فایل‌های موجود در ساختار درختی دایرکتوری را جستجو خواهد کرد.

یک بار استفاده از پرچم -u/--unrestricted معادل --no-ignore است. دو بار استفاده از -u/--unrestricted معادل --no-ignore -./--hidden خواهد بود. سه بار استفاده از آن معادل --no-ignore -./--hidden --binary است.

تنها پالایشی که ripgrep حتی در هنگام استفاده از -uuu همچنان انجام می‌دهد، نادیده گرفتن پیوندهای نمادین و جلوگیری از چاپ تطابق‌های مربوط به فایل‌های دودویی است. پیوندهای نمادین را می‌توان با پرچم -L/--follow دنبال کرد و با فایل‌های دودویی نیز می‌توان از طریق پرچم -a/--text مانند فایل‌های متنی رفتار نمود. -A NUM, --after-context=NUM

نمایش NUM خط پس از هر تطابق.

این گزینه پرچم --passthru را لغو کرده و بخشی از پرچم -C/--context را نادیده می‌گیرد.

-B NUM, --before-context=NUM

نمایش NUM خط پیش از هر تطابق.

این گزینه پرچم --passthru را لغو کرده و بخشی از پرچم -C/--context را نادیده می‌گیرد.

--block-buffered

در صورت فعال بودن، ripgrep از بافرینگ بلوکی استفاده خواهد کرد؛ بدین معنی که به محض یافتن یک خط منطبق، آن را در یک بافر در حافظه می‌نویسد و تا زمانی که بافر به اندازه مشخصی نرسد، آن را در stdout نخواهد نوشت. هنگامی که خروجی استاندارد ripgrep به یک لوله یا یک فایل هدایت شود، این حالت پیش‌فرض است. زمانی که stdout به یک tty متصل باشد، بافرینگ خطی به صورت پیش‌فرض استفاده می‌شود. اجبار بافرینگ بلوکی می‌تواند هنگام ارسال حجم بالایی از محتوا به یک tty مفید باشد.

این گزینه پرچم --line-buffered را لغو می‌کند.

این پرچم را می‌توان با --no-block-buffered غیرفعال کرد.

-b, --byte-offset

چاپ آفست بایتی (مبتنی بر صفر) در فایل ورودی پیش از هر خط خروجی. اگر -o/--only-matching مشخص شده باشد، آفستِ خود متن منطبق‌شده چاپ می‌شود.

اگر ripgrep تبدیل کدبندی (transcoding) انجام دهد، آفست بایتی بر اساس نتیجه تبدیل کدبندی محاسبه می‌شود و نه داده‌های اصلی. این موضوع به همین شکل برای سایر دگرگونی‌های اعمال‌شده روی داده‌ها، مانند فشرده‌زدایی یا فیلتر --pre نیز صدق می‌کند.

این پرچم را می‌توان با --no-byte-offset غیرفعال کرد.

--color=WHEN

این پرچم زمان استفاده از رنگ‌ها را کنترل می‌کند. مقدار پیش‌فرض auto است، بدین معنی که ripgrep تلاش می‌کند زمان استفاده از رنگ را تشخیص دهد. برای مثال، اگر ripgrep در یک tty خروجی دهد، از رنگ‌ها استفاده می‌کند، اما اگر خروجی به یک فایل یا لوله هدایت شود، خروجی رنگی غیرفعال خواهد شد.

همچنین ripgrep در برخی شرایط دیگر نیز به‌طور پیش‌فرض خروجی رنگی را غیرفعال می‌کند؛ از جمله موارد زیر، ولی نه محدود به آن‌ها:

  • زمانی که متغیر محیطی TERM تنظیم نشده باشد یا برابر با dumb باشد.
  • زمانی که متغیر محیطی NO_COLOR تنظیم شده باشد (صرف‌نظر از مقدار آن).
  • زمانی که پرچم‌هایی داده شوند که حاکی از عدم استفاده از رنگ هستند؛ به عنوان مثال --vimgrep و --json.

مقادیر ممکن برای این پرچم عبارتند از:

رنگ‌ها هرگز استفاده نخواهند شد.
حالت پیش‌فرض. ripgrep تلاش می‌کند هوشمندانه عمل کند.
رنگ‌ها همیشه استفاده خواهند شد، صرف‌نظر از این‌که خروجی به کجا ارسال می‌شود.
مشابه 'always'، اما کدهای گریز ANSI را تولید می‌کند (حتی در کنسول ویندوز).

این پرچم همچنین تولید ابرپیوندها (hyperlinks) را کنترل می‌کند. به عنوان مثال، اگر یک قالب ابرپیوند مشخص شده باشد، در صورت غیرفعال بودن رنگ، ابرپیوندها استفاده نخواهند شد. اگر می‌خواهید ابرپیوندها تولید شوند اما رنگی نباشند، باید از پرچم --colors برای تنظیم دستی تمام سبک‌های رنگ روی none استفاده کنید:

--colors 'path:none' \
--colors 'line:none' \
--colors 'column:none' \
--colors 'match:none' \
--colors 'highlight:none'

--colors=COLOR_SPEC

این پرچم تنظیمات رنگ را برای استفاده در خروجی مشخص می‌کند. این پرچم می‌تواند چندین بار داده شود. تنظیمات به صورت تکرارشونده اعمال می‌شوند. برچسب‌های رنگی از پیش موجود به یکی از هشت گزینه محدود هستند: red، blue، green، cyan، magenta، yellow، white و black. سبک‌ها محدود به nobold، bold، nointense، intense، nounderline، underline، noitalic یا italic هستند.

قالب این پرچم به صورت {type}:{attribute}:{value} است. مقدار type باید یکی از path، line، column، highlight یا match باشد. مقدار attribute می‌تواند fg، bg یا style باشد. مقدار value یا یک رنگ (برای fg و bg) یا یک سبک متن است. قالب ویژه {type}:none تمام تنظیمات رنگی مربوط به type را پاک می‌کند.

به عنوان مثال، دستور زیر رنگ تطابق را به سرخابی و رنگ پس‌زمینه شماره خطوط را به زرد تغییر می‌دهد:

rg --colors 'match:fg:magenta' --colors 'line:bg:yellow'

مثالی دیگر، دستور زیر متن غیرمنطبق در خطوط منطبق را «برجسته» (highlight) می‌کند:

rg --colors 'highlight:bg:yellow' --colors 'highlight:fg:black'

نوع رنگی "highlight" به‌ویژه برای ایجاد تمایز بین خطوط منطبق و سیاق پیرامونی چاپ‌شده توسط پرچم‌های -B/--before-context، -A/--after-context، -C/--context یا --passthru مفید است.

هنگامی که tty از توالی‌های رنگی ANSI پشتیبانی کند، می‌توان از رنگ‌های گسترش‌یافته برای value استفاده کرد. این مقادیر یا به صورت x (256 رنگ) یا x,x,x (رنگ حقیقی ۲۴ بیتی / truecolor) مشخص می‌شوند که در آن x عددی بین 0 تا 255 (شامل هر دو) است. x می‌تواند به عنوان یک عدد ده‌دهی عادی یا یک عدد هگزادسیمال با پیشوند 0x مشخص شود.

به عنوان مثال، دستور زیر رنگ پس‌زمینه تطابق را به مقدار rgb یعنی (0,128,255) تغییر می‌دهد:

rg --colors 'match:bg:0,128,255'

یا به‌طور معادل:

rg --colors 'match:bg:0x0,0x80,0xFF'

توجه داشته باشید که سبک‌های intense و nointense هنگام استفاده در کنار این کدهای رنگی گسترش‌یافته هیچ اثری نخواهند داشت.

--column

نمایش شماره ستون‌ها (مبتنی بر ۱). این گزینه تنها شماره ستون را برای نخستین تطابق در هر خط نمایش می‌دهد. این پرچم کاراکترهای یونیکد را در نظر نمی‌گیرد؛ یک بایت معادل با یک ستون است. این گزینه مستلزم -n/--line-number است.

هنگامی که -o/--only-matching استفاده شود، شماره ستون‌های درج‌شده منطبق بر شروع هر تطابق خواهند بود.

این پرچم را می‌توان با --no-column غیرفعال کرد.

-C NUM, --context=NUM

نمایش NUM خط پیش و پس از هر تطابق. این معادل با ارائه هم‌زمان هر دو پرچم -B/--before-context و -A/--after-context با مقداری یکسان است.

این گزینه پرچم --passthru را لغو می‌کند. هر دو پرچم -A/--after-context و -B/--before-context، صرف‌نظر از ترتیب، بخشی از این پرچم را لغو می‌کنند. برای مثال، -A2 -C1 معادل با -A2 -B1 است.

--context-separator=SEPARATOR

رشته مورد استفاده برای جداسازی خطوط سیاق غیرپیوسته در خروجی. این فقط زمانی استفاده می‌شود که یکی از پرچم‌های سیاق استفاده شده باشد (یعنی -A/--after-context، -B/--before-context یا -C/--context). توالی‌های گریز مانند \x7F یا \t قابل استفاده هستند. مقدار پیش‌فرض -- است.

زمانی که جداکننده سیاق روی یک رشته خالی تنظیم شود، همچنان یک خط جدید درج می‌شود. برای غیرفعال کردن کامل جداکننده‌های سیاق، از پرچم --no-context-separator استفاده کنید.

--field-context-separator=SEPARATOR

تنظیم جداکننده فیلدهای سیاق. این جداکننده فقط هنگام چاپ خطوط سیاق استفاده می‌شود. از آن برای تفکیک مسیر فایل‌ها، شماره خطوط، ستون‌ها و خود خط سیاق استفاده می‌شود. جداکننده می‌تواند شامل هر تعداد بایت، از جمله صفر باشد. توالی‌های گریز مانند \x7F یا \t قابل استفاده هستند.

نویسه - مقدار پیش‌فرض است.

--field-match-separator=SEPARATOR

تنظیم جداکننده فیلدهای تطابق. این جداکننده فقط هنگام چاپ خطوط منطبق استفاده می‌شود. از آن برای تفکیک مسیر فایل‌ها، شماره خطوط، ستون‌ها و خود خط منطبق استفاده می‌شود. جداکننده می‌تواند شامل هر تعداد بایت، از جمله صفر باشد. توالی‌های گریز مانند \x7F یا \t قابل استفاده هستند.

نویسه : مقدار پیش‌فرض است.

--heading

این پرچم به جای چاپ مسیر فایل به عنوان پیشوند برای هر خط منطبق، مسیر فایل را بالای دسته‌های تطابق هر فایل چاپ می‌کند.

این حالت، حالت پیش‌فرض هنگام چاپ روی یک tty است.

هنگامی که stdout یک tty نباشد، ripgrep به‌طور پیش‌فرض به قالب استاندارد شبه-grep بازمی‌گردد. در محیط‌های شبه‌یونیکس می‌توان با ارسال خروجی ripgrep از طریق لوله به cat این قالب را اجبار کرد. برای مثال، rg foo | cat.

این پرچم را می‌توان با --no-heading غیرفعال کرد.

-h, --help

این پرچم خروجی راهنما را برای ripgrep چاپ می‌کند.

برخلاف اغلب پرچم‌های دیگر، رفتار پرچم کوتاه، -h، و پرچم بلند، --help، متفاوت است. پرچم کوتاه خروجی راهنمای فشرده و خلاصه‌ای را نشان می‌دهد، در حالی که پرچم بلند خروجی راهنمای جامع و کامل را نمایش خواهد داد. خروجی راهنمای جامع شامل مستندات کامل است، در حالی که خروجی راهنمای فشرده برای هر پرچم تنها یک خط نمایش می‌دهد.

--hostname-bin=COMMAND

این پرچم نحوه تعیین نام میزبان این سیستم توسط ripgrep را کنترل می‌کند. مقدار پرچم باید مربوط به یک فایل اجرایی باشد (خواه یک مسیر کامل یا دستوری که از طریق متغیر محیطی PATH سیستم قابل یافتن باشد). هنگام تنظیم، ripgrep این فایل اجرایی را بدون هیچ آرگومانی اجرا کرده و خروجی آن را (پس از حذف فاصله‌های خالی ابتدا و انتها) به عنوان نام میزبان سیستم شما در نظر می‌گیرد.

در صورت عدم تنظیم (حالت پیش‌فرض، یا یک رشته خالی)، ripgrep تلاش می‌کند تا نام میزبان سیستم را به‌طور خودکار تشخیص دهد. در یونیکس، این معادل فراخوانی gethostname است. در ویندوز، این معادل فراخوانی GetComputerNameExW برای دریافت "physical DNS hostname" سیستم است.

ابزار ripgrep از نام میزبان سیستم برای تولید ابرپیوندها استفاده می‌کند.

--hyperlink-format=FORMAT

تنظیم قالب ابرپیوندهای مورد استفاده هنگام چاپ نتایج. ابرپیوندها عناصر خاصی از خروجی ripgrep، مانند مسیر فایل‌ها را قابل کلیک می‌کنند. این قابلیت عموماً تنها در شبیه‌سازهای ترمینالی که از ابرپیوندهای OSC-8 پشتیبانی می‌کنند کار می‌کند. برای مثال، قالب file://{host}{path} یک ابرپیوند منطبق بر RFC 8089 تولید می‌کند. برای دیدن قالبی که ripgrep استفاده می‌کند، پرچم --debug را بدهید.

همچنین، یک رشته قالب می‌تواند متناظر با یکی از نام‌های مستعار زیر باشد: default، none، cursor، file، grep+، kitty، macvim، textmate، vscode، vscode-insiders، vscodium. این نام مستعار با رشته قالبی جایگزین خواهد شد که برای کار با برنامه مربوطه در نظر گرفته شده است.

متغیرهای زیر در رشته قالب در دسترس هستند: {path} اجباری. با مسیر پروندهٔ منطبق جایگزین می‌شود. تضمین می‌شود که مسیر مطلق و کُدگذاری‌شده به‌صورت درصدی (percent encoded) باشد، به‌گونه‌ای که برای قرار گرفتن در یک URI معتبر باشد. توجه داشته باشید که تضمین می‌شود مسیر با یک / آغاز شود.

{host}
اختیاری. با نام میزبان (hostname) سامانهٔ شما جایگزین می‌شود. در Unix، این با فراخوانی gethostname مطابقت دارد. در Windows، این متناظر با فراخوانی GetComputerNameExW برای واکشی «نام میزبان فیزیکی DNS» سامانه است. همچنین اگر --hostname-bin ارائه شده باشد، نام میزبان بازگردانده‌شده از خروجی آن برنامه استفاده خواهد شد. اگر هیچ نام میزبانی یافت نشود، این متغیر با یک رشتهٔ خالی جایگزین می‌شود.
{line}
اختیاری. در صورت تناسب، با شماره خط تطابق جایگزین می‌شود. اگر هیچ شماره خطی در دسترس نباشد (برای نمونه، اگر --no-line-number داده شده باشد)، به‌طور خودکار با مقدار 1 جایگزین می‌شود.
{column}
اختیاری، اما نیازمند حضور {line} است. در صورت تناسب، با شماره ستون تطابق جایگزین می‌شود. اگر هیچ شماره ستونی در دسترس نباشد (برای نمونه، اگر --no-column داده شده باشد)، به‌طور خودکار با مقدار 1 جایگزین می‌شود.
{wslprefix}
اختیاری. این یک مقدار ویژه است که بر روی wsl$/WSL_DISTRO_NAME تنظیم می‌شود، جایی که WSL_DISTRO_NAME با مقدار متغیر محیطی معادل مطابقت دارد. اگر سامانه Unix نباشد یا متغیر محیطی WSL_DISTRO_NAME تنظیم نشده باشد، این متغیر با یک رشتهٔ خالی جایگزین می‌شود.

رشته قالب (format string) می‌تواند خالی باشد. یک رشته قالب خالی معادل نام مستعار none است. در این حالت، پیوندها (hyperlinks) غیرفعال خواهند شد.

در حال حاضر، ripgrep به‌طور پیش‌فرض پیوندها را فعال نمی‌کند. کاربران باید خودشان آن‌ها را فعال کنند. اگر مطمئن نیستید از چه قالبی استفاده کنید، default را امتحان کنید.

همانند رنگ‌ها، هنگامی که ripgrep تشخیص دهد خروجی استاندارد (stdout) به یک tty متصل نیست، پیوندها بدون توجه به مقدار این پرچم به‌طور خودکار غیرفعال می‌شوند. کاربران می‌توانند --color=always را ارسال کنند تا درج پیوندها اجباری شود.

توجه داشته باشید که پیوندها تنها زمانی نوشته می‌شوند که یک مسیر نیز در خروجی وجود داشته باشد و رنگ‌ها فعال باشند. برای نوشتن پیوندها بدون رنگ، باید ripgrep را طوری پیکربندی کنید که هیچ‌چیز را رنگ‌آمیزی نکند بدون اینکه تمام کدهای گریز ANSI را کلاً غیرفعال کند:

--colors 'path:none' \
--colors 'line:none' \
--colors 'column:none' \
--colors 'match:none'

دلیل این سازوکار ripgrep این است که پرچم --color را به‌عنوان معیاری برای مجاز بودن یا نبودن استفاده از کدهای گریز ANSI در نظر می‌گیرد. این بدان معناست که متغیرهای محیطی مانند NO_COLOR=1 و TERM=dumb نه‌تنها رنگ‌ها، بلکه پیوندها را نیز غیرفعال می‌کنند. به‌طور مشابه، زمانی که ripgrep در یک tty نمی‌نویسد، رنگ‌ها و پیوندها غیرفعال می‌شوند (مگر اینکه با تنظیم --color=always این رفتار اجباری شود).

اگر مستقیماً در یک پرونده جستجو می‌کنید، برای نمونه:

rg foo path/to/file

در این صورت پیوندها درج نخواهند شد، زیرا مسیر داده‌شده در خروجی ظاهر نمی‌شود. برای نمایان شدن مسیر و در نتیجه پیوند، از پرچم -H/--with-filename استفاده کنید.

برای اطلاعات بیشتر در مورد پیوندها در شبیه‌سازهای پایانه، ببینید: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

--include-zero

هنگامی که همراه با -c/--count یا --count-matches استفاده شود، باعث می‌شود ripgrep تعداد تطابق‌ها را برای هر پرونده چاپ کند، حتی اگر هیچ تطابقی (صفر مورد) وجود نداشته باشد. این گزینه به‌طور پیش‌فرض غیرفعال است اما می‌تواند فعال شود تا رفتار ripgrep بیشتر شبیه به grep شود.

این پرچم را می‌توان با --no-include-zero غیرفعال کرد.

--line-buffered

هنگام فعال بودن، ripgrep همواره از میان‌گیر خطی (line buffering) استفاده خواهد کرد؛ بدین معنی که هر زمان خط منطبقی یافت شود، بلافاصله به stdout ارسال (flush) می‌شود. این حالت پیش‌فرضِ ripgrep هنگام اتصال stdout به tty است، اما در غیر این صورت، ripgrep از میان‌گیر بلوکی (block buffering) استفاده می‌کند که معمولاً سریع‌تر است. این پرچم ripgrep را مجبور به استفاده از میان‌گیر خطی می‌کند حتی در شرایطی که در حالت عادی از میان‌گیر بلوکی استفاده می‌کرد. این گزینه معمولاً در خط‌لوله‌های (pipelines) پوسته مفید است، برای نمونه:
tail -f something.log | rg foo --line-buffered | rg bar

این گزینه بر پرچم --block-buffered ارجحیت دارد.

این پرچم را می‌توان با --no-line-buffered غیرفعال کرد.

-n, --line-number

نمایش شمارهٔ خطوط (بر پایهٔ ۱).

این گزینه هنگامی که stdout به یک tty متصل باشد به‌طور پیش‌فرض فعال است.

این پرچم را می‌توان با -N/--no-line-number غیرفعال کرد.

-N, --no-line-number

عدم نمایش شمارهٔ خطوط.

هنگامی که stdout به tty متصل نباشد، شمارهٔ خطوط به‌طور پیش‌فرض خاموش هستند.

شمارهٔ خطوط را می‌توان با -n/--line-number به‌طور اجباری فعال کرد.

-M NUM, --max-columns=NUM

در صورت تعیین، ripgrep خطوط طولانی‌تر از این حد (برحسب بایت) را نادیده می‌گیرد. به جای چاپ خطوط طولانی، تنها تعداد تطابق‌های موجود در آن خط چاپ می‌شود.

هنگامی که این پرچم تعیین نشود یا روی 0 تنظیم شود، هیچ اثری نخواهد داشت.

--max-columns-preview

پیش‌نمایشی از خطوطی که از حد مجاز ستون‌ها فراتر می‌روند چاپ می‌کند.

هنگام استفاده از پرچم -M/--max-columns، ripgrep به‌طور پیش‌فرض هر خط بیش از حد طولانی را کاملاً با پیامی مبنی بر حذف یک خط منطبق جایگزین می‌کند. هنگامی که این پرچم با -M/--max-columns ترکیب شود، به جای آن پیش‌نمایشی از خط (متناظر با اندازهٔ حد تعیین‌شده) نمایش داده می‌شود، که در آن بخش فراتر از حد مجازِ خط نشان داده نمی‌شود.

اگر پرچم -M/--max-columns تنظیم نشده باشد، این گزینه هیچ اثری ندارد.

این پرچم را می‌توان با --no-max-columns-preview غیرفعال کرد.

-0, --null

هر زمان که یک مسیر پرونده چاپ می‌شود، یک بایت NUL به دنبال آن قرار می‌گیرد. این شامل چاپ مسیر پرونده‌ها پیش از تطابق‌ها و هنگام چاپ فهرستی از پرونده‌های منطبق مانند -c/--count، -l/--files-with-matches و --files می‌شود. این گزینه برای استفاده به‌همراه xargs بسیار کاربردی است.

-o, --only-matching

تنها بخش‌های منطبق‌شده (غیرخالی) از یک خط منطبق را چاپ می‌کند، به‌طوری که هر بخش در یک خط خروجی جداگانه قرار می‌گیرد.

--path-separator=SEPARATOR

جداکنندهٔ مسیر را برای استفاده هنگام چاپ مسیر پرونده‌ها مشخص می‌کند. مقدار پیش‌فرض آن بر اساس بستر اجرایی شما تعیین می‌شود، که در Unix برابر / و در Windows برابر \ است. این پرچم برای لغو حالت پیش‌فرض در شرایطی که محیط نیاز دارد (برای نمونه cygwin) در نظر گرفته شده است. جداکنندهٔ مسیر محدود به یک بایت منفرد است.

تنظیم این پرچم روی یک رشتهٔ خالی، رفتار آن را به حالت پیش‌فرض بازمی‌گرداند؛ یعنی جداکنندهٔ مسیر به‌طور خودکار بر اساس محیط انتخاب می‌شود.

--passthru

هر دو نوع خطوط منطبق و غیرمنطبق را چاپ می‌کند.

روش دیگر برای دستیابی به اثری مشابه، تغییر الگوی جستجو برای تطابق با رشتهٔ خالی است. برای نمونه، اگر با rg foo جستجو می‌کنید، استفاده از rg '^|foo' به جای آن باعث چاپ تمام خطوط در تمامی پرونده‌های مورد جستجو می‌شود، اما فقط نمونه‌های foo برجسته خواهند شد. این پرچم بدون نیاز به تغییر الگو، همین رفتار را فراهم می‌کند.

نگارش دیگر این پرچم --passthrough است.

این گزینه بر پرچم‌های -C/--context، -A/--after-context و -B/--before-context ارجحیت دارد.

-p, --pretty

این یک نام مستعار برای دسترسی راحت‌تر به --color=always --heading --line-number است. این پرچم زمانی مفید است که حتی در صورت هدایت خروجی ripgrep به برنامه‌ای دیگر یا یک پرونده، خروجی آراسته و خوانا می‌خواهید. برای نمونه: rg -p foo | less -R.

-q, --quiet

هیچ چیزی در stdout چاپ نمی‌کند. اگر تطابقی در یک پرونده پیدا شود، ripgrep جستجو را متوقف می‌کند. این پرچم زمانی کاربرد دارد که ripgrep تنها به خاطر کد خروجش استفاده می‌شود (که در صورت عدم یافتن تطابق، یک کد خطا خواهد بود).

هنگام استفاده از --files، پس از یافتن نخستین پرونده‌ای که با هیچ قاعدهٔ نادیده‌گیری (ignore rules) مطابقت ندارد، ripgrep جستجوی پرونده‌ها را متوقف می‌کند.

-r REPLACEMENT, --replace=REPLACEMENT

هنگام چاپ نتایج، هر تطابق را با متن ارائه‌شده جایگزین می‌کند. نه این پرچم و نه هیچ پرچم دیگری در ripgrep پرونده‌های شما را تغییر نخواهند داد.

اندیس‌های گروه‌های گیرش (برای نمونه $5) و نام‌ها (برای نمونه $foo) در رشتهٔ جایگزینی پشتیبانی می‌شوند. شماره‌گذاری اندیس‌های گروه‌های گیرش بر پایهٔ موقعیت پرانتز بازکنندهٔ گروه انجام می‌شود، به این صورت که چپ‌ترین گروه $1 است. گروه ویژهٔ $0 با کل تطابق متناظر است.

نام یک گروه از طولانی‌ترین رشته‌ای از حروف، ارقام و زیرخط‌ها (یعنی [_0-9A-Za-z]) پس از $ تشکیل می‌شود. برای نمونه، $1a با گروهی به نام 1a جایگزین خواهد شد، نه با گروه دارای اندیس 1. اگر نام گروه شامل نویسه‌هایی غیر از حروف، اعداد یا زیرخط باشد، یا بخواهید بلافاصله پس از گروه یک رشتهٔ دیگر قرار دهید، باید نام داخل آکولاد قرار گیرد. برای نمونه، ${1}a محتوای گروه در اندیس 1 را گرفته و a را به انتهای آن اضافه می‌کند.

اگر یک اندیس یا نام به یک گروه گیرش معتبر اشاره نکند، با یک رشتهٔ خالی جایگزین می‌شود.

در پوسته‌هایی مانند Bash و zsh، باید الگو را به جای نقل‌قول دوتایی (double quotes) درون نقل‌قول تکی (single quotes) قرار دهید. در غیر این صورت، اندیس‌های گروه‌های گیرش با متغیرهای گسترش‌یافتهٔ پوسته که احتمالاً خالی هستند جایگزین خواهند شد.

برای نوشتن نویسهٔ واقعی $، از $$ استفاده کنید.

توجه داشته باشید که جایگزینی به‌طور پیش‌فرض هر تطابق را جایگزین می‌کند، نه کل خط را. برای جایگزینی کل خط، باید کل خط را تطبیق دهید.

این پرچم می‌تواند همراه با پرچم -o/--only-matching استفاده شود.

--sort=SORTBY

این پرچم مرتب‌سازی صعودی نتایج را فعال می‌کند. مقادیر ممکن برای این پرچم عبارت‌اند از: none (پیش‌فرض) نتایج را مرتب نمی‌کند. سریع‌ترین حالت است و می‌تواند به‌صورت چندنخی اجرا شود.
بر اساس مسیر فایل مرتب می‌کند. همیشه تک‌نخی است. ترتیب با مرتب‌سازی فایل‌ها در هر مدخل دایرکتوری در هنگام پیمایش تعیین می‌شود. این بدان معناست که در صورت وجود فایل‌های a/b و a+، دومی پس از اولی مرتب خواهد شد، حتی اگر معمولاً + پیش از / مرتب شود.
بر اساس آخرین زمان تغییر فایل مرتب می‌کند. همیشه تک‌نخی است.
بر اساس آخرین زمان دسترسی به فایل مرتب می‌کند. همیشه تک‌نخی است.
بر اساس زمان ایجاد فایل مرتب می‌کند. همیشه تک‌نخی است.

اگر معیار مرتب‌سازی انتخاب‌شده (به‌صورت دستی یا پیش‌فرض) در سیستم شما در دسترس نباشد (برای مثال، زمان ایجاد در سیستم‌های فایل ext4 در دسترس نیست)، آنگاه ripgrep تلاش می‌کند تا این موضوع را تشخیص دهد، خطایی چاپ کند و بدون جستجو خارج شود.

برای مرتب‌سازی معکوس یا نزولی نتایج، از پرچم --sortr استفاده کنید. همچنین این پرچم --sortr را لغو می‌کند.

توجه داشته باشید که مرتب‌سازی نتایج در حال حاضر همواره ripgrep را مجبور می‌کند پردازش موازی را کنار بگذارد و در قالب یک تک‌نخ اجرا شود.

--sortr=SORTBY

این پرچم مرتب‌سازی نتایج را به ترتیب نزولی فعال می‌کند. مقادیر ممکن برای این پرچم عبارتند از:
(پیش‌فرض) نتایج را مرتب نمی‌کند. سریع‌ترین حالت است و می‌تواند به‌صورت چندنخی اجرا شود.
بر اساس مسیر فایل مرتب می‌کند. همیشه تک‌نخی است. ترتیب با مرتب‌سازی فایل‌ها در هر مدخل دایرکتوری در هنگام پیمایش تعیین می‌شود. این بدان معناست که در صورت وجود فایل‌های a/b و a+، دومی پیش از اولی مرتب خواهد شد، حتی اگر معمولاً در هنگام مرتب‌سازی لغت‌نگاشتی معکوس، + پس از / قرار گیرد.
بر اساس آخرین زمان تغییر فایل مرتب می‌کند. همیشه تک‌نخی است.
بر اساس آخرین زمان دسترسی به فایل مرتب می‌کند. همیشه تک‌نخی است.
بر اساس زمان ایجاد فایل مرتب می‌کند. همیشه تک‌نخی است.

اگر معیار مرتب‌سازی انتخاب‌شده (به‌صورت دستی یا پیش‌فرض) در سیستم شما در دسترس نباشد (برای مثال، زمان ایجاد در سیستم‌های فایل ext4 در دسترس نیست)، آنگاه ripgrep تلاش می‌کند تا این موضوع را تشخیص دهد، خطایی چاپ کند و بدون جستجو خارج شود.

برای مرتب‌سازی نتایج به ترتیب صعودی، از پرچم --sort استفاده کنید. همچنین این پرچم --sort را لغو می‌کند.

توجه داشته باشید که مرتب‌سازی نتایج در حال حاضر همواره ripgrep را مجبور می‌کند پردازش موازی را کنار بگذارد و در قالب یک تک‌نخ اجرا شود.

--trim

در صورت فعال بودن، تمام فاصله‌های خالی (whitespace) اسکی (ASCII) در ابتدای هر خط چاپ‌شده حذف خواهند شد.

این پرچم را می‌توان با --no-trim غیرفعال کرد.

--vimgrep

این پرچم به ripgrep دستور می‌دهد نتایج را به گونه‌ای چاپ کند که هر تطابق در خط اختصاصی خود به همراه شماره خط و شماره ستون قرار گیرد.

با این گزینه، خطی که بیش از یک تطابق داشته باشد به طور کامل بیش از یک بار چاپ خواهد شد. به همین دلیل، حجم کل خروجی حاصل از این پرچم می‌تواند نسبت به اندازه ورودی به صورت درجه دو (quadratic) باشد. برای مثال، اگر الگو با تک‌تک بایت‌های یک فایل ورودی تطابق داشته باشد، آنگاه هر خط به ازای هر بایت منطبق تکرار خواهد شد. از این رو، کاربران تنها زمانی باید از این پرچم استفاده کنند که چاره دیگری وجود نداشته باشد. ادغام‌های ویرایشگر باید روش‌های دیگری را برای خواندن نتایج از ripgrep ترجیح دهند، مانند استفاده از پرچم --json. یک راهکار جایگزین برای جلوگیری از مصرف بیش از حد حافظه این است که ripgrep را با پرچم -j/--threads مجبور به کار در حالت تک‌نخی کنید. البته توجه داشته باشید که این کار بر حجم کل خروجی تأثیری ندارد و فقط بر حافظه هیپ (heap memory) مورد استفاده ripgrep اثر می‌گذارد.

-H, --with-filename

این پرچم به ripgrep دستور می‌دهد مسیر فایل را برای هر خط منطبق چاپ کند. این حالت زمانی که بیش از یک فایل جستجو شود، رفتار پیش‌فرض است. اگر --heading فعال باشد (پیش‌فرض هنگام چاپ در یک tty)، مسیر فایل بالای دسته‌های تطابق مربوط به هر فایل نشان داده می‌شود؛ در غیر این صورت، نام فایل به عنوان پیشوند برای هر خط منطبق نمایش داده خواهد شد.

این پرچم -I/--no-filename را لغو می‌کند.

-I, --no-filename

این پرچم به ripgrep دستور می‌دهد هرگز مسیر فایل را همراه با خط منطبق چاپ نکند. این حالت زمانی که صراحتاً به ripgrep دستور جستجوی یک فایل یا stdin داده شود، رفتار پیش‌فرض است.

این پرچم -H/--with-filename را لغو می‌کند.

--sort-files

منسوخ شده است (DEPRECATED). به جای آن از --sort=path استفاده کنید.

این پرچم به ripgrep دستور می‌دهد نتایج جستجو را بر اساس مسیر فایل به صورت لغت‌نگاشتی و با ترتیب صعودی مرتب کند. توجه داشته باشید که این کار در حال حاضر تمام پردازش موازی را غیرفعال کرده و جستجو را در یک نخ اجرا می‌کند.

این پرچم --sort و --sortr را لغو می‌کند.

این پرچم را می‌توان با --no-sort-files غیرفعال کرد.

-c, --count

این پرچم خروجی عادی را غیرفعال کرده و تعداد خطوطی را که با الگوهای داده‌شده برای هر فایل جست‌وجوشده تطابق دارند نشان می‌دهد. برای هر فایل دارای تطابق، مسیر آن و تعداد در یک خط چاپ می‌شود. توجه داشته باشید مگر در حالتی که -U/--multiline فعال باشد و الگوی/الگوهای داده‌شده بتوانند روی چندین خط تطابق یابند، این گزینه تعداد خطوط منطبق را گزارش می‌کند و نه تعداد کل تطابق‌ها را. هنگامی که حالت چندخطی فعال باشد و الگوی/الگوهای داده‌شده بتوانند در چندین خط مطابقت یابند، -c/--count معادل --count-matches خواهد بود.

اگر تنها یک فایل به ripgrep داده شود، در صورت وجود تطابق تنها تعداد چاپ می‌شود. در این حالت می‌توان از پرچم -H/--with-filename برای اجبار به چاپ مسیر فایل استفاده کرد. اگر نیاز دارید که صرف‌نظر از وجود یا عدم وجود تطابق تعداد چاپ شود، از --include-zero استفاده کنید.

توجه داشته باشید که ممکن است نتایج این پرچم با خروجی -l/--files-with-matches ناسازگار باشد. به‌ویژه اینکه به‌طور پیش‌فرض، ripgrep تلاش می‌کند از جست‌وجوی فایل‌های حاوی داده‌های باینری خودداری کند. با این پرچم، ripgrep نیاز دارد تا تمام محتوای فایل‌ها را جست‌وجو کند که ممکن است شامل داده‌های باینری باشد. اما با -l/--files-with-matches، ripgrep می‌تواند به‌محض مشاهده یک تطابق، که ممکن است بسیار پیش از هرگونه دادهٔ باینری باشد، متوقف شود. برای جلوگیری از این ناسازگاری بدون غیرفعال کردن تشخیص داده‌های باینری، از پرچم --binary استفاده کنید.

این گزینه بر پرچم --count-matches تقدم دارد. توجه داشته باشید زمانی که -c/--count با -o/--only-matching ترکیب شود، ripgrep طوری عمل می‌کند که گویی --count-matches داده شده است.

--count-matches

این پرچم خروجی عادی را غیرفعال کرده و تعداد تطابق‌های مجزای الگوهای داده‌شده را برای هر فایل جست‌وجوشده نمایش می‌دهد. برای هر فایل حاوی تطابق، مسیر آن و تعداد تطابق‌ها در یک خط چاپ می‌شود. توجه داشته باشید که این گزینه تعداد کل تطابق‌های مجزا را گزارش می‌کند و نه تعداد خطوط منطبق را.

اگر تنها یک فایل به ripgrep داده شود، در صورت وجود تطابق تنها تعداد چاپ می‌شود. در این حالت می‌توان از پرچم -H/--with-filename برای اجبار به چاپ مسیر فایل استفاده کرد.

این گزینه بر پرچم -c/--count تقدم دارد. توجه داشته باشید زمانی که -c/--count با -o/--only-matching ترکیب شود، ripgrep به‌گونه‌ای عمل می‌کند که گویی --count-matches داده شده است.

-l, --files-with-matches

تنها مسیرهایی را که دست‌کم یک تطابق دارند چاپ کرده و از چاپ محتوای تطابق‌ها خودداری می‌کند.

توجه داشته باشید که ممکن است نتایج این پرچم با خروجی -c/--count ناسازگار باشد. به‌ویژه اینکه ripgrep به‌طور پیش‌فرض تلاش می‌کند از جست‌وجوی فایل‌های حاوی داده‌های باینری خودداری کند. با این پرچم، ممکن است ripgrep پیش از مشاهده داده‌های باینری جست‌وجو را متوقف کند. اما با -c/--count، ripgrep باید کل محتوا را برای تعیین تعداد تطابق‌ها جست‌وجو کند؛ بدین معنا که ممکن است داده‌های باینری را مشاهده کرده و در نتیجه از جست‌وجوی آن فایل صرف‌نظر کند. برای جلوگیری از این ناسازگاری بدون غیرفعال کردن تشخیص داده‌های باینری، از پرچم --binary استفاده کنید.

این گزینه بر --files-without-match تقدم دارد.

--files-without-match

مسیرهایی را که فاقد هرگونه تطابق هستند چاپ کرده و از چاپ محتوای تطابق‌ها خودداری می‌کند.

این گزینه بر -l/--files-with-matches تقدم دارد.

--json

چاپ نتایج را در قالب JSON Lines فعال می‌کند.

هنگامی که این پرچم داده شود، ripgrep توالی‌ای از پیام‌ها را صادر می‌کند که هر یک به‌صورت یک شیء JSON کدگذاری شده‌اند، و شامل پنج نوع پیام مختلف است:

پیامی که نشان می‌دهد یک فایل در حال جست‌وجو است و دست‌کم شامل یک تطابق است.
پیامی که نشان می‌دهد جست‌وجوی یک فایل به پایان رسیده است. این پیام همچنین شامل آمار خلاصه‌ای دربارهٔ جست‌وجوی آن فایل خاص است.
پیامی که نشان می‌دهد یک تطابق پیدا شده است. این پیام شامل متن و آفست‌های تطابق است.
پیامی که نشان می‌دهد یک خط زمینه (context) یافت شده است. این پیام شامل متن خط و اطلاعات تطابق (در صورت معکوس بودن جست‌وجو) است.
پیام نهایی صادرشده توسط ripgrep که شامل آمار خلاصهٔ جست‌وجو در تمام فایل‌ها است.

از آنجا که معتبر بودن مسیر فایل‌ها یا محتوای آن‌ها بر اساس استاندارد UTF-8 تضمین نمی‌شود و خود JSON نیز باید با کدگذاری یونیکد قابل‌نمایش باشد، ripgrep تمام عناصر داده را به‌صورت شیءهایی با یکی از دو کلید text یا bytes صادر می‌کند. کلید text در صورتی که داده‌ها UTF-8 معتبر باشند یک رشتهٔ معمولی JSON است، در حالی که bytes محتوای کدگذاری‌شدهٔ داده‌ها در قالب base64 است.

قالب JSON Lines تنها برای نمایش نتایج جست‌وجو پشتیبانی می‌شود. این قالب نمی‌تواند همراه با سایر پرچم‌هایی که انواع دیگری از خروجی را تولید می‌کنند، مانند --files، -l/--files-with-matches، --files-without-match، -c/--count یا --count-matches استفاده شود. در صورت استفادهٔ هم‌زمان از هر یک از پرچم‌های یادشده با --json، ابزار ripgrep خطا گزارش خواهد داد.

سایر پرچم‌هایی که جنبه‌هایی از خروجی استاندارد را کنترل می‌کنند مانند -o/--only-matching، --heading، -r/--replace، -M/--max-columns و غیره، در صورت تنظیم بودن --json هیچ تأثیری ندارند. با این حال، فعال‌سازی خروجی JSON همواره به‌صورت ضمنی و بدون قید و شرط --stats را فعال می‌کند.

توضیحات کامل‌تر دربارهٔ قالب JSON استفاده‌شده را می‌توانید در اینجا بیابید: https://docs.rs/grep-printer/*/grep_printer/struct.JSON.html.

این پرچم را می‌توان با --no-json غیرفعال کرد.

--debug

نمایش پیام‌های اشکال‌زدایی. لطفاً هنگام ثبت گزارش باگ از این گزینه استفاده کنید.

پرچم --debug عموماً برای یافتن دلیل نادیده گرفتن یک فایل خاص توسط ripgrep مفید است. پیام‌های اشکال‌زدایی باید تمام فایل‌های نادیده‌گرفته‌شده و دلیل آن را ذکر کنند.

برای دریافت خروجی اشکال‌زدایی با جزئیات بیشتر، از پرچم --trace استفاده کنید که شامل --debug به همراه داده‌های ردگیری تکمیلی است.

--no-ignore-messages

هنگامی که این پرچم فعال باشد، تمام پیام‌های خطای مربوط به تجزیهٔ فایل‌های ignore سرکوب می‌شوند. به‌طور پیش‌فرض، پیام‌های خطا در خروجی خطای استاندارد (stderr) چاپ می‌شوند. در مواردی که این خطاها مورد انتظار هستند، می‌توان از این پرچم برای جلوگیری از نویز ناشی از پیام‌ها استفاده کرد.

این پرچم را می‌توان با --ignore-messages غیرفعال کرد.

--no-messages

این پرچم برخی از پیام‌های خطا را سرکوب می‌کند؛ به‌ویژه پیام‌های مربوط به عدم موفقیت در باز کردن و خواندن فایل‌ها. پیام‌های خطای مربوط به نحو (syntax) الگو همچنان نمایش داده می‌شوند.

این پرچم را می‌توان با --messages غیرفعال کرد.

--stats

در صورت فعال بودن، ripgrep آمار تجمیعی دربارهٔ جست‌وجو را چاپ می‌کند. هنگامی که این پرچم مشخص شود، ripgrep در پایان جست‌وجو دست‌کم آمارهای زیر را در خروجی استاندارد (stdout) چاپ خواهد کرد: تعداد خطوط منطبق، تعداد فایل‌های دارای تطابق، تعداد فایل‌های جست‌وجوشده، و مدت زمان صرف‌شده برای تکمیل کل جست‌وجو.

این مجموعه از آمارهای تجمیعی ممکن است در طول زمان گسترش یابد.

این پرچم هنگام استفاده از --json همواره به‌طور ضمنی فعال است.

توجه داشته باشید که این پرچم در صورت استفاده از --files، -l/--files-with-matches یا --files-without-match هیچ تأثیری ندارد.

این پرچم را می‌توان با --no-stats غیرفعال کرد.

--trace

نمایش پیام‌های ردگیری. این گزینه جزئیات بیشتری نسبت به پرچم --debug ارائه می‌دهد. معمولاً تنها در صورتی باید از این پرچم استفاده کنید که --debug اطلاعات مورد نظر شما را صادر نکند.

--files

چاپ نام هر فایلی که قرار است بدون انجام واقعی جستجو، جستجو شود. این گزینه برای تعیین اینکه آیا یک فایل خاص جستجو می‌شود یا خیر مفید است.

این گزینه --type-list را لغو می‌کند.

--generate=KIND

این پرچم به ripgrep دستور می‌دهد نوع خاصی از خروجی را که با KIND مشخص می‌شود تولید کرده و سپس بدون جستجو خارج شود. KIND می‌تواند یکی از مقادیر زیر باشد:
یک صفحهٔ راهنما (man page) را برای ripgrep در قالب roff تولید می‌کند.
یک اسکریپت تکمیل خودکار برای پوستهٔ bash تولید می‌کند.
یک اسکریپت تکمیل خودکار برای پوستهٔ zsh تولید می‌کند.
یک اسکریپت تکمیل خودکار برای پوستهٔ fish تولید می‌کند.
یک اسکریپت تکمیل خودکار برای PowerShell تولید می‌کند.

خروجی در stdout نوشته می‌شود. فهرست بالا ممکن است در طول زمان گسترش یابد.

--no-config

هنگام تنظیم، ripgrep هرگز فایل‌های پیکربندی را نخواهد خواند. هنگام حضور این پرچم، ripgrep متغیر محیطی RIPGREP_CONFIG_PATH را در نظر نخواهد گرفت.

اگر زمانی قابلیتی به ripgrep افزوده شود که فایل‌های پیکربندی را به‌طور خودکار در مکان‌های از پیش تعریف‌شده بخواند، این پرچم آن رفتار را نیز غیرفعال خواهد کرد.

--pcre2-version

هنگامی که این پرچم وجود دارد، ripgrep نسخهٔ PCRE2 مورد استفاده را همراه با دیگر اطلاعات چاپ کرده و سپس خارج می‌شود. اگر PCRE2 در دسترس نباشد، ripgrep یک پیام خطا چاپ کرده و با یک کد خطا خارج می‌شود.

--type-list

نمایش تمام انواع فایل‌های پشتیبانی‌شده و الگوهای تطبیق (glob) متناظر با آن‌ها. این گزینه هرگونه پرچم‌های --type-add و --type-clear داده‌شده را در نظر می‌گیرد. هر نوع در یک خط جداگانه چاپ می‌شود که به دنبال آن یک : و سپس در همان خط، فهرستی از الگوهای تطبیق آن نوع که با کاما از هم جدا شده‌اند قرار می‌گیرد.

-V, --version

این پرچم نسخهٔ ripgrep را چاپ می‌کند. همچنین ممکن است اطلاعات مرتبط دیگری، مانند وجود بهینه‌سازی‌های خاص معماری هدف و بازنگری (revision) git که این ساختِ ripgrep از روی آن کامپایل شده است را چاپ کند.

اگر ripgrep تطابقی پیدا کند، وضعیت خروج برنامه 0 است. اگر هیچ تطابقی یافت نشود، وضعیت خروج 1 خواهد بود. اگر خطایی رخ دهد، وضعیت خروج همیشه 2 است مگر اینکه ripgrep با پرچم -q/--quiet اجرا شده باشد و تطابقی پیدا شده باشد. به‌طور خلاصه:

  • وضعیت خروج 0 تنها زمانی رخ می‌دهد که حداقل یک تطابق پیدا شده باشد و هیچ خطایی رخ نداده باشد، مگر اینکه -q/--quiet داده شده باشد.
  • وضعیت خروج 1 تنها زمانی رخ می‌دهد که هیچ تطابقی پیدا نشده و هیچ خطایی رخ نداده باشد.
  • وضعیت خروج 2 زمانی رخ می‌دهد که خطایی رخ داده باشد. این امر هم برای خطاهای فاجعه‌بار (مانند خطای نحو در عبارت باقاعده) و هم برای خطاهای جزئی (مانند ناتوانی در خواندن یک فایل) صدق می‌کند.

ابزار ripgrep به‌طور پیش‌فرض مقدار قابل‌توجهی فیلترسازی خودکار انجام می‌دهد. این بخش آن فیلترها و نحوهٔ کنترل آن‌ها را شرح می‌دهد.

نکته: برای غیرفعال کردن فیلترسازی خودکار، از rg -uuu استفاده کنید.

فیلترسازی خودکار و «هوشمند» ripgrep یکی از بارزترین ویژگی‌های متمایزکنندهٔ ripgrep از دیگر ابزارها مانند grep است. به این ترتیب، رفتار آن ممکن است برای کاربرانی که انتظارش را ندارند غافلگیرکننده باشد.

ابزار ripgrep چهار نوع فیلترسازی را به‌طور خودکار انجام می‌دهد:

1.
فایل‌ها و دایرکتوری‌هایی که با قوانین نادیده‌گیری (ignore) مطابقت دارند جستجو نمی‌شوند.
2.
فایل‌ها و دایرکتوری‌های پنهان جستجو نمی‌شوند.
3.
فایل‌های دودویی (فایل‌های با بایت NUL) جستجو نمی‌شوند.
4.
پیوندهای نمادین دنبال نمی‌شوند.

نوع اول فیلترسازی پیچیده‌ترین آن‌هاست. ابزار ripgrep تلاش خواهد کرد تا جای ممکن با دقت به قوانین gitignore شما پایبند باشد. به‌طور خاص، این شامل موارد زیر است:

  • هرگونه قانون سراسری، برای مثال در $HOME/.config/git/ignore.
  • هرگونه قانون در فایل‌های مرتبط .gitignore. این شامل فایل‌های .gitignore در دایرکتوری‌های والد که بخشی از همان مخزن git هستند نیز می‌شود. (مگر اینکه --no-require-git داده شده باشد.)
  • هرگونه قانون محلی، برای مثال در .git/info/exclude.

در برخی موارد، ripgrep و git از لحاظ فایل‌های نادیده‌گرفته‌شده همیشه هماهنگ نخواهند بود. برای مثال، فایلی که از طریق .gitignore نادیده گرفته شده اما توسط git ردگیری می‌شود، توسط ripgrep جستجو نخواهد شد، با وجود اینکه git آن را ردگیری می‌کند. بعید است که این مورد هرگز رفع شود. در عوض، باید یا مطمئن شوید که قوانین مستثنی‌سازی شما دقیقاً با فایل‌هایی که ردگیری می‌کنید مطابقت دارد، یا اینکه برای جستجو از git grep استفاده کنید.

قوانین نادیده‌گیری اضافی را می‌توان در خارج از زمینهٔ git نیز ارائه داد:

  • هرگونه قانون در .ignore. ابزار ripgrep همچنین فایل‌های .ignore در دایرکتوری‌های والد را رعایت می‌کند.
  • هرگونه قانون در .rgignore. ابزار ripgrep همچنین فایل‌های .rgignore در دایرکتوری‌های والد را رعایت می‌کند.
  • هرگونه قانون در فایل‌های مشخص‌شده با پرچم --ignore-file.

اولویت قوانین نادیده‌گیری به شرح زیر است، به‌طوری که موارد بعدی بر موارد قبلی اولویت دارند:

  • فایل‌های ارائه‌شده توسط --ignore-file.
  • قوانین سراسری gitignore، برای مثال از $HOME/.config/git/ignore.
  • قوانین محلی از .git/info/exclude.
  • قوانین موجود در .gitignore.
  • قوانین موجود در .ignore.
  • قوانین موجود در .rgignore.

بنابراین به عنوان مثال، اگر foo در یک .gitignore و !foo در یک .rgignore باشد، آنگاه foo نادیده گرفته نخواهد شد زیرا .rgignore بر .gitignore اولویت دارد.

هر یک از انواع فیلترسازی را می‌توان از طریق پرچم‌های خط فرمان پیکربندی کرد:

  • چندین پرچم که با --no-ignore شروع می‌شوند وجود دارند که تعیین می‌کنند کدام‌یک از قوانین نادیده‌گیری رعایت شوند. پرچم --no-ignore به تنهایی همهٔ آن‌ها را غیرفعال می‌کند.
  • پرچم -./--hidden ابزار ripgrep را وادار به جستجوی فایل‌ها و دایرکتوری‌های پنهان می‌کند.
  • پرچم --binary ابزار ripgrep را وادار به جستجوی فایل‌های باینری می‌کند.
  • پرچم -L/--follow ابزار ripgrep را وادار به دنبال کردن پیوندهای نمادین می‌کند.

به‌عنوان یک میانبر ویژه، پرچم -u می‌تواند تا سه بار مشخص شود. هر بار تکرار بیشتر، فیلترسازی را به‌صورت تدریجی کاهش می‌دهد:

  • گزینهٔ -u معادل --no-ignore است.
  • گزینهٔ -uu معادل --no-ignore --hidden است.
  • گزینهٔ -uuu معادل --no-ignore --hidden --binary است.

به‌ویژه، rg -uuu باید دقیقاً همان محتوایی را جستجو کند که grep -r جستجو می‌کند. ابزار ripgrep از خواندن فایل‌های پیکربندی که رفتار پیش‌فرض ripgrep را تغییر می‌دهند پشتیبانی می‌کند. قالب فایل پیکربندی به سبک “rc” بوده و بسیار ساده است. این قالب بر اساس دو قانون تعریف می‌شود:

1.
هر خط، پس از حذف فاصله‌های خالی (whitespace)، یک آرگومان پوسته است.
2.
خطوطی که با # آغاز می‌شوند (که می‌تواند اختیاری با هر مقداری از فاصله‌های خالی پیش از آن همراه باشد) نادیده گرفته می‌شوند.

ابزار ripgrep فقط و فقط در صورتی به دنبال یک فایل پیکربندی واحد می‌گردد که متغیر محیطی RIPGREP_CONFIG_PATH مقداردهی شده و غیرخالی باشد. ripgrep در هنگام راه‌اندازی، آرگومان‌ها را از این فایل تجزیه کرده و به‌گونه‌ای رفتار می‌کند که گویی آرگومان‌های موجود در این فایل به ابتدای آرگومان‌های صریح داده‌شده به ripgrep در خط فرمان اضافه شده‌اند. با این حال توجه داشته باشید که دستور rg اجراشده همچنان باید معتبر باشد؛ بدین معنا که حتی اگر فایل پیکربندی از گزینهٔ -e/--regexp استفاده کند، دستور باید همواره حداقل حاوی یک الگو در خط فرمان باشد.

برای مثال، اگر فایل ripgreprc شما تنها شامل یک خط باشد:

--smart-case

آنگاه دستور زیر:

RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo

رفتاری دقیقاً یکسان با دستور زیر خواهد داشت:

rg --smart-case foo

مثال دیگر، افزودن نوع‌ها است، به این صورت:

--type-add
web:*.{html,css,js}*

دستور بالا رفتاری همسان با دستور زیر خواهد داشت:

rg --type-add 'web:*.{html,css,js}*' foo

همین موضوع برای استفاده از globها نیز صدق می‌کند. این مورد:

--glob=!.git

یا این:

--glob
!.git

رفتاری یکسان با دستور زیر خواهد داشت:

rg --glob '!.git' foo

نکتهٔ اساسی این است که هر آرگومان پوسته باید در خط مجزای خود قرار گیرد. بنابراین برای مثال، یک فایل پیکربندی حاوی:

-j 4

احتمالاً آن‌چه را که مد نظر دارید انجام نمی‌دهد. در عوض، باید به این شکل باشد:

-j
4

یا:

-j4

ابزار ripgrep همچنین گزینهٔ --no-config را ارائه می‌دهد که در صورت استفاده، تمام پشتیبانی از پیکربندی را غیرفعال خواهد کرد. این شامل هرگونه پشتیبانی در آینده از بارگذاری خودکار فایل‌های پیکربندی از مسیرهای از پیش تعیین‌شده نیز می‌شود.

تداخل‌های میان فایل‌های پیکربندی و آرگومان‌های صریح، دقیقاً مانند تداخل‌ها در یک فراخوانی یکسان در خط فرمان مدیریت می‌شوند. به این معنا که با فرض اینکه فایل پیکربندی شما تنها شامل --smart-case باشد، در این صورت این دستور:

RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo --case-sensitive

دقیقاً معادل است با:

rg --smart-case foo --case-sensitive

که در این وضعیت، گزینهٔ --case-sensitive بر گزینهٔ --smart-case اولویت یافته و آن را خنثی می‌کند.

فایل‌های تکمیل پوسته برای Bash، Fish، Zsh و PowerShell در فایل آرشیو انتشار (tarball) گنجانده شده‌اند.

برای bash، فایل rg.bash را به $XDG_CONFIG_HOME/bash_completion یا /etc/bash_completion.d/ منتقل کنید.

برای fish، فایل rg.fish را به $HOME/.config/fish/completions منتقل کنید.

برای zsh، فایل _rg را به یکی از دایرکتوری‌های موجود در $fpath خود منتقل کنید. ابزار ripgrep ممکن است هنگام استفاده از تنظیمات پیش‌فرض، چنانچه فایلی را جستجو کند که به‌طور هم‌زمان کوتاه (truncated) می‌شود، به‌طور غیرمنتظره‌ای متوقف شود. با ارسال پرچم --no-mmap که استفاده از نگاشت‌های حافظه را در تمام موارد به‌صورت اجباری غیرفعال می‌کند، می‌توان از این رفتار جلوگیری کرد.

بسته به چند عامل، ripgrep ممکن است مقدار زیادی حافظه مصرف کند. نخست، اگر ripgrep از پردازش موازی برای جستجو استفاده کند (حالت پیش‌فرض)، تمام خروجی مربوط به هر فایل به‌طور جداگانه در حافظه بافر می‌شود تا از درهم‌آمیختگی نتایج منطبق در خروجی جلوگیری گردد. برای جلوگیری از این موضوع، می‌توانید با استفاده از پرچم -j1 پردازش موازی را غیرفعال کنید. دوم، ripgrep برای اجرای جستجو همیشه باید حداقل یک سطر کامل را در حافظه نگه دارد. از این رو، فایلی با سطرهای بسیار طولانی می‌تواند موجب مصرف زیاد حافظه توسط ripgrep شود. به‌طور کلی، این حالت تنها هنگام جستجو در داده‌های باینری همراه با پرچم فعال -a/--text رخ می‌دهد. (هنگامی که پرچم -a/--text فعال نباشد، ripgrep تمام بایت‌های NUL را با پایان‌دهنده‌های سطر جایگزین می‌کند که معمولاً مانع از مصرف بیش‌ازحد حافظه می‌شود.) سوم، هنگامی که ripgrep فایلی بزرگ را با استفاده از نگاشت حافظه جستجو می‌کند، احتمالاً میزان حافظه مقیم (resident memory) این فرایند به اندازه حجم فایل گزارش خواهد شد. با این حال، این بدان معنا نیست که ripgrep در عمل به استفاده از این مقدار حافظه heap نیاز داشته است؛ سیستم‌عامل به‌طور کلی این مورد را مدیریت خواهد کرد.

15.2.0

https://github.com/BurntSushi/ripgrep

لطفاً باگ‌ها و درخواست‌های قابلیت‌های جدید را به بخش ثبت مشکلات (issue tracker) گزارش دهید. لطفاً تمام تلاش خود را برای ارائه یک نمونه آزمایشی بازتولیدپذیر از خطا به کار گیرید. این نمونه باید شامل داده‌های مورد جستجو، دستور rg، خروجی واقعی و خروجی مورد انتظار باشد. لطفاً خروجی حاصل از اجرای همان دستور rg همراه با پرچم --debug را نیز ضمیمه کنید.

اگر سوالاتی دارید که مشخصاً در دسته‌بندی «باگ» یا «درخواست قابلیت» قرار نمی‌گیرند، می‌توانید آن‌ها را در بخش گفتگوهای (Discussions) ردیاب مشکلات مطرح کنید: https://github.com/BurntSushi/ripgrep/discussions

Andrew Gallant <jamslam@gmail.com>

2026-07-15 15.2.0