| REDO-WHICHDO(1) | User Commands | REDO-WHICHDO(1) |
نام (NAME)
redo-whichdo - نمایش مسیر جستجوی redo برای یک فایل .do
خلاصه دستور (SYNOPSIS)
redo-whichdo <target>
توضیحات (DESCRIPTION)
redo(1) و redo-ifchange(1) اهداف خود را با اجرای یک اسکریپت «فایل .do» با آرگومانهای مناسب میسازند. فایلهای .do با شروع از دایرکتوری حاوی هدف جستجو میشوند، و در صورت پیدا نشدن در آنجا، در سلسلهمراتب درخت دایرکتوری به سمت بالا جستجو میشوند تا زمانی که یک مورد منطبق پیدا شود.
برای کمک به اشکالزدایی اسکریپتهایتان هنگامی که redo از یک فایل .do غیرمنتظره استفاده میکند، یا برای نوشتن اسکریپتهای پیشرفتهای که از یک فایل .do به فایل دیگری «پروکسی» میشوند، میتوانید از redo-whichdo برای مشاهدهٔ مسیر جستجوی دقیقی که redo به کار میبرد، استفاده کنید.
قالب خروجی، فایلهای .do بالقوه را در هر خط یکی، به ترتیب اولویت و جداشده با نویسههای خط جدید فهرست میکند، و به محض پیدا شدن یک فایل .do منطبق، متوقف میشود. اگر کد بازگشتی صفر باشد، آخرین خطْ یک فایل .do است که در واقعیت وجود دارد؛ در غیر این صورت، کل مسیر جستجو تا انتها بررسی (و چاپ) شده است.
مثال (EXAMPLE)
در اینجا یک مسیر جستجوی معمول برای یک فایل منبع (x/y/a.b.o) آمده است. از آنجا که نام فایل شامل دو نقطه (.) است، در هر سطح از سلسلهمراتب، redo باید default.b.o.do، default.o.do و default.do را جستجو کند. ```sh $ redo-whichdo x/y/a.b.o; echo $?
x/y/a.b.o.do x/y/default.b.o.do x/y/default.o.do x/y/default.do x/default.b.o.do x/default.o.do x/default.do default.b.o.do default.o.do 0
`` شما میتوانید از redo-whichdo برای واگذاری از یک اسکریپت .do به دیگری، با استفاده از کدی شبیه به زیر استفاده کنید. این کار کمی پیچیده است زیرا نهتنها یک فایل .do جدید پیدا میکنید، بلکه باید با cd به دایرکتوری فایل .do رفته و مقادیر $1 و $2` را بهطور مناسب تنظیم نمایید.
ofile=$PWD/$3
x1=$1
cd "$SRCDIR"
redo-whichdo "$x1" | {
ifcreate=
while read dopath; do
if [ ! -e "$dopath" ]; then
ifcreate="$ifcreate $dopath"
else
redo-ifcreate $ifcreate
redo-ifchange "$dopath"
dofile=${dopath##*/}
dodir=${dopath%$dofile}
# Create updated $1 and $2 for the new .do file
x1_rel=${x1#$dodir}
ext=${dofile##*default}
if [ "$ext" != "$dofile" ]; then
ext=${ext%.do}
else
ext=''
fi
x2_rel=${x1#$dodir}
x2_rel=${x2_rel%$ext}
cd "$dodir"
set -- "$x1_rel" "$x2_rel" "$ofile"
. "./$dofile"
exit
fi
done
exit 3
}
REDO
بخشی از مجموعهٔ redo(1).
CREDITS
ایدهٔ اولیهٔ redo توسط D. J. Bernstein خلق شد و در وبگاه او (http://cr.yp.to/redo.html) مستند گردید. این پیادهسازی مستقل توسط Avery Pennarun ایجاد شده است و میتوانید کد منبع آن را در http://github.com/apenwarr/redo بیابید.
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Avery Pennarun <apenwarr@gmail.com>
| 2021-07-27 | Redo 0.42d |