| GREPDIFF(1) | Man pages | GREPDIFF(1) |
نام (NAME)
grepdiff - نمایش فایلهای تغییریافته توسط یک diff شامل عبارت باقاعده
خلاصه دستور (SYNOPSIS)
grepdiff [[-n] | [--line-number]] [[-N] | [--number-files]] [[-p n] | [--strip-match=n]] [--strip=n] [--git-prefixes=strip|keep] [--git-extended-diffs=exclude|include] [--addprefix=PREFIX] [--addoldprefix=PREFIX] [--addnewprefix=PREFIX] [[-s] | [--status]] [--empty-files-as-absent] [[-i PATTERN] | [--include=PATTERN]] [[-I FILE] | [--include-from-file=FILE]] [[-x PATTERN] | [--exclude=PATTERN]] [[-X FILE] | [--exclude-from-file=FILE]] [[-# RANGE] | [--hunks=RANGE]] [--lines=RANGE] [[-FRANGE] | [--files=RANGE]] [--annotate] [--as-numbered-lines=WHEN] [--format=FORMAT] [--remove-timestamps] [[-v] | [--verbose]] [[-z] | [--decompress]] [[-E] | [--extended-regexp]] [[-H] | [--with-filename]] [[-h] | [--no-filename]] [--output-matching=WHAT] [--only-match=WHAT] {[REGEX] | [-f FILE]} [file...]
grepdiff {[--help] | [--version] | [--list] | [--filter ...]}
توضیحات (DESCRIPTION)
به ازای هر فایلی که توسط یک وصله (patch) تغییر یافته است، اگر قطعه وصله (hunk) شامل REGEX باشد، نام آن فایل چاپ میشود.
با عبارت باقاعده مطابق با نحو «عبارت باقاعده پایهای POSIX» رفتار میشود، مگر اینکه گزینه -E مشخص شود که در این صورت نحو «عبارت باقاعده گسترده POSIX» به کار میرود. هنگامی که برنامه با پشتیبانی از PCRE2 کامپایل شده باشد، عبارات باقاعده PCRE به جای عبارات باقاعده POSIX استفاده میشوند و گزینه -E بیتأثیر خواهد بود، چرا که PCRE از قبل به طور پیشفرض از ویژگیهای عبارت باقاعده گسترده پشتیبانی میکند.
میتوانید از diffهای با قالب context ،unified و Git در این برنامه استفاده کنید. قالب Git شامل پشتیبانی از فایلهای باینری، تغییر نام فایلها، تغییرات حالت دسترسی (permission mode) و سایر قابلیتهای diff مختص به Git است.
گزینهها (OPTIONS)
-n, --line-number
برای مشاهده توضیحات مربوط به قالب خروجی، lsdiff(1) را ببینید.
-N, --number-files
-pn, --strip-match=n
--strip=n
--git-prefixes=strip|keep
--git-extended-diffs=exclude|include
--addprefix=PREFIX
--addoldprefix=PREFIX
--addnewprefix=PREFIX
-s
--empty-files-as-absent
-iPATTERN, --include=PATTERN
-IFILE, --include-from-file=FILE
-x PATTERN --exclude=PATTERN
-XFILE, --exclude-from-file=FILE
-#RANGE, --hunks=RANGE
--lines=RANGE
-F=RANGE, --files=RANGE
--annotate
گزینههای before و after شماره خطوط را متناسب با تکههای نادیدهگرفتهشده تنظیم کرده و نمایش میدهند. گزینههای original-before و original-after شماره خطوط را همانگونه که در diff اصلی ظاهر شدهاند نمایش میدهند و بافتار شماره خط اصلی را حفظ میکنند. این قابلیت برای سامانههای CI/CD که باید خطاها را روی شماره خطوط دقیق diff اصلی گزارش کنند، مفید است.
--format=unified|context
--remove-timestamps
-z, --decompress
-E, --extended-regexp
-H, --with-filename
-h, --no-filename
-fFILE, --file=FILE
--output-matching=hunk|file
--only-match=rem|removals|add|additions|mod|modifications|all
--help
--version
--filter
--list
مثالها (EXAMPLES)
برای شناسایی سریع فایلهایی در یک وصله بزرگ که حاوی تغییرات تخصیص حافظه هستند (مفید برای بازبینی کد):
grepdiff "malloc\|free\|realloc" large-patch.diff
این دستور تنها نام فایلها را نمایش میدهد و بدون سردرگمی در محتوای diff، یک دید کلی و سریع در اختیارتان میگذارد.
برای مشاهده تکههای (hunks) واقعی حاوی الگو:
grepdiff --output-matching=hunk "malloc" patch.diff
برای مشاهده diff کامل فایلهایی که شامل الگو هستند:
grepdiff --output-matching=file "malloc" patch.diff
برای سامانههای CI/CD که به شماره خطوط منطبق با بافتار diff اصلی نیاز دارند (مفید برای گزارش خطا):
grepdiff pattern --output-matching=hunk \ --as-numbered-lines=original-after patch.file
diffهای قالب Git بهطور کامل پشتیبانی میشوند. برای نمونه، برای یافتن فایلهایی در یک وصله git که شامل تغییراتی در فراخوانیهای malloc هستند:
grepdiff "malloc" git-patch.patch
توجه داشته باشید که grepdiff در محتوای تکه (تغییرات واقعی کد) جستجو میکند، نه در فرادادههای Git مانند سرآیندهای تغییر نام (rename). فایلهایی که فقط دارای تغییر نام یا تغییر حالت دسترسی (mode) هستند (بدون هیچ تکه محتوایی)، حتی اگر الگو در سرآیندهای Git ظاهر شود، پیدا نخواهند شد..SH "همچنین ببینید (SEE ALSO)"
نویسندگان (AUTHORS)
Tim Waugh <twaugh@redhat.com>
| 10 Feb 2011 | patchutils |