'\" t .\" Title: grepdiff .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 10 Feb 2011 .\" Manual: Man pages .\" Source: patchutils .\" Language: Persian .\" .TH "GREPDIFF" "1" "10 Feb 2011" "patchutils" "Man pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" grepdiff \- نمایش فایل‌های تغییریافته توسط یک diff شامل عبارت باقاعده .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBgrepdiff\fR\ 'u \fBgrepdiff\fR [[\-n] | [\-\-line\-number]] [[\-N] | [\-\-number\-files]] [[\-p\ \fIn\fR] | [\-\-strip\-match=\fIn\fR]] [\-\-strip=\fIn\fR] [\-\-git\-prefixes=\fIstrip|keep\fR] [\-\-git\-extended\-diffs=\fIexclude|include\fR] [\-\-addprefix=\fIPREFIX\fR] [\-\-addoldprefix=\fIPREFIX\fR] [\-\-addnewprefix=\fIPREFIX\fR] [[\-s] | [\-\-status]] [\-\-empty\-files\-as\-absent] [[\-i\ \fIPATTERN\fR] | [\-\-include=\fIPATTERN\fR]] [[\-I\ \fIFILE\fR] | [\-\-include\-from\-file=\fIFILE\fR]] [[\-x\ \fIPATTERN\fR] | [\-\-exclude=\fIPATTERN\fR]] [[\-X\ \fIFILE\fR] | [\-\-exclude\-from\-file=\fIFILE\fR]] [[\-#\ \fIRANGE\fR] | [\-\-hunks=\fIRANGE\fR]] [\-\-lines=\fIRANGE\fR] [[\-F\fIRANGE\fR] | [\-\-files=\fIRANGE\fR]] [\-\-annotate] [\-\-as\-numbered\-lines=\fIWHEN\fR] [\-\-format=\fIFORMAT\fR] [\-\-remove\-timestamps] [[\-v] | [\-\-verbose]] [[\-z] | [\-\-decompress]] [[\-E] | [\-\-extended\-regexp]] [[\-H] | [\-\-with\-filename]] [[\-h] | [\-\-no\-filename]] [\-\-output\-matching=\fIWHAT\fR] [\-\-only\-match=\fIWHAT\fR] {[\fIREGEX\fR] | [\-f\ \fIFILE\fR]} [\fIfile\fR...] .HP \w'\fBgrepdiff\fR\ 'u \fBgrepdiff\fR {[\-\-help] | [\-\-version] | [\-\-list] | [\-\-filter\ \&.\&.\&.]} .SH "توضیحات (DESCRIPTION)" .PP به ازای هر فایلی که توسط یک وصله (patch) تغییر یافته است، اگر قطعه وصله (hunk) شامل \fIREGEX\fR باشد، نام آن فایل چاپ می‌شود\&. .PP با عبارت باقاعده مطابق با نحو «عبارت باقاعده پایه‌ای POSIX» رفتار می‌شود، مگر اینکه گزینه \fB\-E\fR مشخص شود که در این صورت نحو «عبارت باقاعده گسترده POSIX» به کار می‌رود\&. هنگامی که برنامه با پشتیبانی از PCRE2 کامپایل شده باشد، عبارات باقاعده PCRE به جای عبارات باقاعده POSIX استفاده می‌شوند و گزینه \fB\-E\fR بی‌تأثیر خواهد بود، چرا که PCRE از قبل به طور پیش‌فرض از ویژگی‌های عبارت باقاعده گسترده پشتیبانی می‌کند\&. .PP می‌توانید از diffهای با قالب context ،unified و Git در این برنامه استفاده کنید\&. قالب Git شامل پشتیبانی از فایل‌های باینری، تغییر نام فایل‌ها، تغییرات حالت دسترسی (permission mode) و سایر قابلیت‌های diff مختص به Git است\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-n\fR, \fB\-\-line\-number\fR .RS 4 شماره خطی که هر وصله از آن آغاز می‌شود را نمایش می‌دهد\&. در صورتی که خروجی پرگو (verbose) درخواست شده باشد، هر قطعه (hunk) منطبق نیز فهرست می‌شود\&. .sp برای مشاهده توضیحات مربوط به قالب خروجی، \fBlsdiff\fR(1) را ببینید\&. .RE .PP \fB\-N\fR, \fB\-\-number\-files\fR .RS 4 شماره فایل‌ها با شروع از ۱، پیش از هر نام فایل فهرست می‌شوند\&. .RE .PP \fB\-p\fR\fIn\fR, \fB\-\-strip\-match=\fR\fB\fIn\fR\fR .RS 4 هنگام تطبیق، از \fIn\fR مؤلفه اول نام مسیر صرف‌نظر می‌شود\&. .RE .PP \fB\-\-strip\fR=\fIn\fR .RS 4 پیش از نمایش نام مسیر، \fIn\fR مؤلفه اول آن را حذف می‌کند\&. .RE .PP \fB\-\-git\-prefixes\fR=\fIstrip|keep\fR .RS 4 نحوه مدیریت پیشوندهای a/ و b/ در نام فایل‌های Git diff\&. مقدار strip، پیشوندها را هم برای تطبیق نام فایل (هنگام استفاده از گزینه‌های \fB\-i\fR و \fB\-x\fR) و هم برای خروجی نام فایل (مشابه \fB\-\-strip\fR) حذف می‌کند\&. مقدار keep (پیش‌فرض)، رفتار فعلی را حفظ می‌کند\&. این مورد بر روی هر دو نوع diff ویژه Git (فایل‌های باینری، تغییر نام‌ها، تغییرات حالت) و diffهای سنتی هنگامی که بخشی از یک وصله Git هستند اعمال می‌شود\&. نکته: با keep، برای سازگاری با سایر عملیات Git، با عملیات رونوشت (copy) و تغییر نام طوری رفتار می‌شود که گویی دارای پیشوندهای a/ و b/ هستند\&. مقدار پیش‌فرض در نگارش 0\&.5\&.0 به strip تغییر خواهد کرد\&. .RE .PP \fB\-\-git\-extended\-diffs\fR=\fIexclude|include\fR .RS 4 تعیین می‌کند که آیا diffهای Git بدون قطعات محتوای سنتی پردازش شوند یا خیر\&. این شامل تغییر نام‌ها، رونوشت‌ها، تغییرات صرفاً مربوط به حالت، و فایل‌های باینری است\&. با exclude (پیش‌فرض در نگارش‌های 0\&.4\&.x)، این diffها نادیده گرفته می‌شوند\&. با include (پیش‌فرض در نگارش‌های +0\&.5\&.0)، این diffها به طور عادی پردازش می‌شوند\&. این گزینه بر شماره‌گذاری فایل‌ها با \fB\-N\fR و پالایش فایل‌ها با \fB\-F\fR تأثیر می‌گذارد\&. .RE .PP \fB\-\-addprefix\fR=\fIPREFIX\fR .RS 4 پیش از نمایش نام مسیر، \fIPREFIX\fR را به ابتدای آن اضافه می‌کند\&. این تنظیمات مشخص‌شده توسط گزینه‌های \fB\-\-addoldprefix\fR یا \fB\-\-addnewprefix\fR را لغو (override) می‌کند\&. .RE .PP \fB\-\-addoldprefix\fR=\fIPREFIX\fR .RS 4 در خروجی، \fIPREFIX\fR را به ابتدای نام مسیرهای فایل‌های قدیمی یا اصلی اضافه می‌کند\&. .RE .PP \fB\-\-addnewprefix\fR=\fIPREFIX\fR .RS 4 در خروجی، \fIPREFIX\fR را به ابتدای نام مسیرهای فایل‌های به‌روزشده یا جدید اضافه می‌کند\&. .RE .PP \fB\-s\fR .RS 4 موارد افزوده شدن، تغییر یافتن و حذف فایل‌ها را نشان می‌دهد\&. افزودن فایل با یک \(lq+\(rq، حذف با یک \(lq\-\(rq و تغییر با یک \(lq!\(rq مشخص می‌شود\&. .RE .PP \fB\-\-empty\-files\-as\-absent\fR .RS 4 هنگام تطبیق الگوها، با فایل‌های خالی مانند فایل‌های ناموجود رفتار می‌کند\&. .RE .PP \fB\-i\fR\fIPATTERN\fR, \fB\-\-include=\fR\fB\fIPATTERN\fR\fR .RS 4 تنها فایل‌های منطبق با \fIPATTERN\fR را شامل می‌شود\&. .RE .PP \fB\-I\fR\fIFILE\fR, \fB\-\-include\-from\-file=\fR\fB\fIFILE\fR\fR .RS 4 تنها فایل‌های منطبق با هر یک از الگوهای ذکرشده در \fIFILE\fR (یک الگو در هر خط) را شامل می‌شود\&. تمام خطوط دیگر در ورودی نادیده گرفته می‌شوند\&. .RE .PP \fB\-x\fR \fIPATTERN\fR \fB\-\-exclude=\fR\fB\fIPATTERN\fR\fR .RS 4 فایل‌های منطبق با \fIPATTERN\fR را مستثنی می‌کند\&. .RE .PP \fB\-X\fR\fIFILE\fR, \fB\-\-exclude\-from\-file=\fR\fB\fIFILE\fR\fR .RS 4 فایل‌های منطبق با هر یک از الگوهای ذکرشده در \fIFILE\fR (یک الگو در هر خط) را مستثنی می‌کند\&. تمام خطوط دیگر در ورودی نمایش داده می‌شوند\&. .RE .PP \fB\-#\fR\fIRANGE\fR, \fB\-\-hunks\fR=\fIRANGE\fR .RS 4 تنها قطعات موجود در \fIRANGE\fR مشخص‌شده را شامل می‌شود\&. قطعات از ۱ شماره‌گذاری می‌شوند و بازه به صورت فهرستی از اعداد یا دامنه‌های \(lqfirst\-last\(rq جداشده با کاما است که به صورت اختیاری می‌تواند یک اصلاح‌کننده \*(Aqx\*(Aq در ابتدا داشته باشد که کل بازه را معکوس می‌کند؛ برای مشخص کردن نبود محدودیت در هر جهت، می‌توان مقدار اول یا آخر دامنه را حذف کرد\&. .RE .PP \fB\-\-lines\fR=\fIRANGE\fR .RS 4 تنها قطعاتی را فهرست می‌کند که شامل خطوطی از فایل اصلی هستند که درون \fIRANGE\fR مشخص‌شده قرار دارند\&. خطوط از ۱ شماره‌گذاری می‌شوند و بازه به صورت فهرستی از اعداد یا دامنه‌های \(lqfirst\-last\(rq جداشده با کاما است که به صورت اختیاری می‌تواند یک اصلاح‌کننده \*(Aqx\*(Aq در ابتدا داشته باشد که کل بازه را معکوس می‌کند؛ برای مشخص کردن نبود محدودیت در هر جهت، می‌توان مقدار اول یا آخر دامنه را حذف کرد\&. .RE .PP \fB\-F\fR=\fIRANGE\fR, \fB\-\-files\fR=\fIRANGE\fR .RS 4 تنها فایل‌های مشخص‌شده توسط \fIRANGE\fR تعیین‌شده را فهرست می‌کند\&. فایل‌ها از ۱ و به ترتیبی که در ورودی وصله ظاهر می‌شوند شماره‌گذاری می‌شوند، و بازه به صورت فهرستی از اعداد یا دامنه‌های \(lqfirst\-last\(rq جداشده با کاما است که به صورت اختیاری می‌تواند یک اصلاح‌کننده \*(Aqx\*(Aq در ابتدا داشته باشد که کل بازه را معکوس می‌کند؛ برای مشخص کردن نبود محدودیت در هر جهت، می‌توان مقدار اول یا آخر دامنه را حذف کرد\&. .RE .PP \fB\-\-annotate\fR .RS 4 هر قطعه را با نام فایل و شماره قطعه حاشیه‌نویسی می‌کند\&. .RE.PP \fB\-\-as\-numbered\-lines\fR=before|after|original\-before|original\-after .RS 4 به جای یک قطعه وصله، خطوط تکه‌های (hunks) انتخاب‌شده را همراه با شماره خط فایل پیش از (یا پس از) اعمال وصله، به دنبال یک نویسه TAB و یک دونقطه در ابتدای هر خط نمایش می‌دهد\&. هر تکه به‌جز تکه نخست، خطی متشکل از \(lq\&.\&.\&.\(rq پیش از خود خواهد داشت\&. .sp گزینه‌های before و after شماره خطوط را متناسب با تکه‌های نادیده‌گرفته‌شده تنظیم کرده و نمایش می‌دهند\&. گزینه‌های original\-before و original\-after شماره خطوط را همان‌گونه که در diff اصلی ظاهر شده‌اند نمایش می‌دهند و بافتار شماره خط اصلی را حفظ می‌کنند\&. این قابلیت برای سامانه‌های CI/CD که باید خطاها را روی شماره خطوط دقیق diff اصلی گزارش کنند، مفید است\&. .RE .PP \fB\-\-format\fR=unified|context .RS 4 از قالب خروجی مشخص‌شده استفاده می‌کند\&. .RE .PP \fB\-\-remove\-timestamps\fR .RS 4 برچسب‌های زمانی فایل را در خروجی لحاظ نمی‌کند\&. .RE .PP \fB\-z\fR, \fB\-\-decompress\fR .RS 4 فایل‌های دارای پسوند \&.gz و \&.bz2 را از حالت فشرده خارج می‌کند\&. .RE .PP \fB\-E\fR, \fB\-\-extended\-regexp\fR .RS 4 از نحو عبارات باقاعده گسترش‌یافته POSIX استفاده می‌کند\&. نکته: در صورت کامپایل با پشتیبانی از PCRE2، این گزینه هیچ اثری ندارد زیرا عبارات باقاعده PCRE به‌طور پیش‌فرض استفاده می‌شوند و از قبل از قابلیت‌های عبارات باقاعده گسترش‌یافته پشتیبانی می‌کنند\&. .RE .PP \fB\-H\fR, \fB\-\-with\-filename\fR .RS 4 نام فایل وصله حاوی هر تطابق را چاپ می‌کند\&. .RE .PP \fB\-h\fR, \fB\-\-no\-filename\fR .RS 4 از چاپ نام فایل وصله حاوی هر تطابق خودداری می‌کند\&. .RE .PP \fB\-f\fR\fIFILE\fR, \fB\-\-file=\fR\fB\fIFILE\fR\fR .RS 4 عبارات باقاعده را از \fIFILE\fR، یک عبارت در هر خط، می‌خواند\&. .RE .PP \fB\-\-output\-matching\fR=hunk|file .RS 4 diffهای تطبیق‌یافته را در سطح تکه (hunk) یا در سطح فایل نمایش می‌دهد\&. .RE .PP \fB\-\-only\-match\fR=rem|removals|add|additions|mod|modifications|all .RS 4 تطبیق عبارت باقاعده را به موارد حذف‌شده، افزوده‌شده، اصلاح‌شده یا کل تکه (hunk) محدود می‌کند\&. .RE .PP \fB\-\-help\fR .RS 4 پیام راهنمای کوتاهی درباره نحوه استفاده نمایش می‌دهد\&. .RE .PP \fB\-\-version\fR .RS 4 شماره نسخه grepdiff را نمایش می‌دهد\&. .RE .PP \fB\-\-filter\fR .RS 4 در عوض، مانند \fBfilterdiff\fR(1) رفتار می‌کند\&. .RE .PP \fB\-\-list\fR .RS 4 در عوض، مانند \fBlsdiff\fR(1) رفتار می‌کند\&. .RE .SH "مثال‌ها (EXAMPLES)" .PP برای شناسایی سریع فایل‌هایی در یک وصله بزرگ که حاوی تغییرات تخصیص حافظه هستند (مفید برای بازبینی کد): .sp .if n \{\ .RS 4 .\} .nf grepdiff "malloc\e|free\e|realloc" large\-patch\&.diff .fi .if n \{\ .RE .\} .PP این دستور تنها نام فایل‌ها را نمایش می‌دهد و بدون سردرگمی در محتوای diff، یک دید کلی و سریع در اختیارتان می‌گذارد\&. .PP برای مشاهده تکه‌های (hunks) واقعی حاوی الگو: .sp .if n \{\ .RS 4 .\} .nf grepdiff \-\-output\-matching=hunk "malloc" patch\&.diff .fi .if n \{\ .RE .\} .PP برای مشاهده diff کامل فایل‌هایی که شامل الگو هستند: .sp .if n \{\ .RS 4 .\} .nf grepdiff \-\-output\-matching=file "malloc" patch\&.diff .fi .if n \{\ .RE .\} .PP برای سامانه‌های CI/CD که به شماره خطوط منطبق با بافتار diff اصلی نیاز دارند (مفید برای گزارش خطا): .sp .if n \{\ .RS 4 .\} .nf grepdiff pattern \-\-output\-matching=hunk \e \-\-as\-numbered\-lines=original\-after patch\&.file .fi .if n \{\ .RE .\} .PP diffهای قالب Git به‌طور کامل پشتیبانی می‌شوند\&. برای نمونه، برای یافتن فایل‌هایی در یک وصله git که شامل تغییراتی در فراخوانی‌های malloc هستند: .sp .if n \{\ .RS 4 .\} .nf grepdiff "malloc" git\-patch\&.patch .fi .if n \{\ .RE .\} .PP توجه داشته باشید که grepdiff در محتوای تکه (تغییرات واقعی کد) جستجو می‌کند، نه در فراداده‌های Git مانند سرآیندهای تغییر نام (rename)\&. فایل‌هایی که فقط دارای تغییر نام یا تغییر حالت دسترسی (mode) هستند (بدون هیچ تکه محتوایی)، حتی اگر الگو در سرآیندهای Git ظاهر شود، پیدا نخواهند شد\&..SH "همچنین ببینید (SEE ALSO)" .PP \fBfilterdiff\fR(1), \fBlsdiff\fR(1), \fBpatchview\fR(1) .SH "نویسندگان (AUTHORS)" .PP \fBTim Waugh\fR <\&twaugh@redhat.com\&> .RS 4 نگه‌دارنده بسته .RE