.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. .\" .\" See the accompanying file LICENSE, version 2009-Jan-02 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html .\" .\" unzipsfx.1 by Greg Roelofs .\" .\" ========================================================================= .\" define .EX/.EE (for multiline user-command examples; normal Courier font) .de EX .in +4n .nf .ft CW .. .de EE .ft R .fi .in -4n .. .\" ========================================================================= .TH UNZIPSFX 1L "20 April 2009 (v6.0)" "Info-ZIP" .SH "نام (NAME)" unzipsfx \- استاب خوداستخراج‌کننده برای الحاق به ابتدای بایگانی‌های ZIP .PD .SH "خلاصه دستور (SYNOPSIS)" \fB<نام ترکیب unzipsfx+archive>\fP [\fB\-cfptuz\fP[\fBajnoqsCLV$\fP]] [\fIfile(s)\fP\ .\|.\|. [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]] .PD .\" ========================================================================= .SH "توضیحات (DESCRIPTION)" برنامهٔ \fIunzipsfx\fP نسخه‌ای تغییریافته از \fIunzip\fP(1L) است که برای الحاق به ابتدای بایگانی‌های موجود ZIP طراحی شده تا بایگانی‌های خوداستخراج‌کننده (self-extracting) بسازد. به جای اینکه نخستین آرگومان غیرگزینه‌ای خود را به عنوان فایل(های) zip برای استخراج در نظر بگیرد، \fIunzipsfx\fP خود را تحت نامی که با آن فراخوانی شده جستجو می‌کند و محتویات بایگانی ضمیمه‌شده را بررسی یا استخراج می‌نماید. از آنجا که استاب اجرایی (executable stub) حجم بایگانی را افزایش می‌دهد (درحالی‌که تمام هدف آن کوچک ماندن تا حد ممکن است)، تعدادی از قابلیت‌های کم‌اهمیت‌تر \fIunzip\fP معمولی حذف شده‌اند. از جملهٔ این موارد می‌توان به صفحهٔ راهنما، توابع فهرست‌گیری و عیب‌یابی (\fB\-l\fP و \fB\-v\fP)، و توانایی باز کردن قالب‌های فشرده‌سازی قدیمی‌تر (روش‌های «reduce»، «shrink» و «implode») اشاره کرد. قابلیت استخراج در دایرکتوری‌ای غیر از دایرکتوری جاری می‌تواند به عنوان یک گزینه در زمان کامپایل انتخاب شود که از نسخهٔ ۵.۵ UnZipSFX به‌طور پیش‌فرض فعال است. به همین ترتیب، رمزگشایی نیز به عنوان یک گزینهٔ زمان کامپایل پشتیبانی می‌شود، اما باید از آن اجتناب کرد مگر اینکه بایگانی ضمیمه‌شده شامل فایل‌های رمزگذاری‌شده باشد. از نگارش ۵.۵ به بعد، گزینهٔ دیگری در زمان کامپایل ویژگی سادهٔ «اجرای دستور پس از استخراج» را اضافه می‌کند. این ویژگی در حال حاضر با قابلیت «استخراج در یک دایرکتوری متفاوت» ناسازگار بوده و به‌طور پیش‌فرض غیرفعال است. .PP \fBتوجه داشته باشید که بایگانی‌های خوداستخراج‌کنندهٔ ساخته‌شده با\fP \fIunzipsfx\fP \fBدر بین سیستم‌عامل‌های مختلف دقیقاً به اندازهٔ خود فایل اجرایی\fP \fIunzip\fP \fBقابلیت حمل دارند (نه بیشتر و نه کمتر).\fP به‌طور کلی، یک بایگانی خوداستخراج‌کننده که برای مثال روی یک سیستم یونیکس خاص ساخته شده است، تنها تحت همان توزیع یونیکس به‌صورت خودکار استخراج می‌شود. با این حال، هنوز می‌توان از \fIunzip\fP معمولی برای استخراج بایگانی تعبیه‌شده همانند هر فایل zip عادی دیگری استفاده کرد، اگرچه هشداری بی‌خطر دربارهٔ بایت‌های اضافی در ابتدای فایل zip صادر خواهد شد. \fIبا وجود این\fP، بایگانی خوداستخراج‌کننده از نظر فنی یک بایگانی معتبر ZIP \fIنیست\fP، و ممکن است PKUNZIP قادر به آزمایش یا استخراج آن نباشد. این محدودیت به دلیل روش ساده‌ای است که بایگانی با آن ایجاد می‌شود؛ ساختار دایرکتوری داخلی به‌روزرسانی نمی‌شود تا بایت‌های اضافی الحاق‌شده به ابتدای فایل zip اصلی را منعکس کند. .PD .\" ========================================================================= .SH "آرگومان‌ها (ARGUMENTS)" .IP [\fIfile(s)\fP] فهرستی اختیاری از اعضای بایگانی که باید پردازش شوند. عبارات باقاعده (کاراکترهای جانشین یا wildcards) مشابه آنچه در \fIegrep\fP(1) یونیکس وجود دارد، می‌توانند برای مطابقت با چندین عضو استفاده شوند. این کاراکترهای جانشین می‌توانند شامل موارد زیر باشند: .RS .IP * با دنباله‌ای از ۰ یا چند کاراکتر مطابقت دارد. .IP ? دقیقاً با ۱ کاراکتر مطابقت دارد. .IP [.\|.\|.] با هر تک‌کاراکتری که درون براکت‌ها یافت شود مطابقت دارد؛ محدوده‌ها با یک کاراکتر آغازین، یک خط تیره، و یک کاراکتر پایانی مشخص می‌شوند. اگر بلافاصله پس از براکت چپ، یک علامت تعجب یا علامت توان (\(aq!\(aq یا \(aq^\(aq) بیاید، دامنهٔ کاراکترهای درون براکت متمم می‌شود (یعنی هر چیزی \fIبه‌جز\fP کاراکترهای داخل براکت‌ها به عنوان مورد منطبق در نظر گرفته می‌شود). .RE .IP (حتماً هر کاراکتری را که ممکن است توسط سیستم‌عامل تفسیر یا تغییر داده شود، به‌ویژه در یونیکس و VMS، در علامت نقل‌قول قرار دهید.) .IP [\fB\-x\fP\ \fIxfile(s)\fP] فهرستی اختیاری از اعضای بایگانی که باید از پردازش مستثنی شوند. از آنجا که کاراکترهای جانشین با جداکننده‌های دایرکتوری (\(aq/\(aq) مطابقت دارند، این گزینه می‌تواند برای مستثنی کردن فایل‌هایی که در زیردایرکتوری‌ها قرار دارند استفاده شود. برای مثال، دستور «\fCfoosfx *.[ch] -x */*\fR» تمام فایل‌های منبع C را در دایرکتوری اصلی استخراج می‌کند، اما هیچ فایلی را از زیردایرکتوری‌ها استخراج نخواهد کرد. بدون گزینهٔ \fB\-x\fP، تمام فایل‌های منبع C در تمام دایرکتوری‌های درون فایل zip استخراج خواهند شد. .PP اگر \fIunzipsfx\fP با تعریف مقدار SFX_EXDIR کامپایل شده باشد، گزینهٔ زیر نیز فعال خواهد بود: .IP [\fB\-d\fP\ \fIexdir\fP] دایرکتوری اختیاری برای استخراج فایل‌ها. به‌طور پیش‌فرض، همهٔ فایل‌ها و زیردایرکتوری‌ها در دایرکتوری جاری بازسازی می‌شوند؛ گزینهٔ \fB\-d\fP اجازهٔ استخراج در یک دایرکتوری دلخواه را می‌دهد (البته با فرض اینکه کاربر مجوز نوشتن در آن دایرکتوری را داشته باشد). این گزینه و دایرکتوری می‌توانند بدون فاصلهٔ خالی (whitespace) به یکدیگر متصل شوند، اما توجه داشته باشید که این کار ممکن است رفتار معمول پوسته (shell) را مختل کند. به‌ویژه، عبارت «\fC\-d\ ~\fR» (تیلدا) توسط پوسته‌های C در یونیکس به نام دایرکتوری خانگی کاربر بسط می‌یابد، در حالی که «\fC\-d~\fR» به عنوان یک زیردایرکتوری به نام تحت‌اللفظی «\fB~\fP» در دایرکتوری جاری در نظر گرفته می‌شود. .PD .\" =========================================================================.SH "گزینه‌ها (OPTIONS)" \fIunzipsfx\fP از گزینه‌های زیر در \fIunzip\fP(1L) پشتیبانی می‌کند: \fB\-c\fP و \fB\-p\fP (استخراج به خروجی استاندارد/صفحه‌نمایش)، \fB\-f\fP و \fB\-u\fP (تازه‌سازی و به‌روزرسانی فایل‌های موجود هنگام استخراج)، \fB\-t\fP (آزمایش آرشیو) و \fB\-z\fP (چاپ توضیح آرشیو). تمام گزینه‌های معمول فهرست‌کردن (\fB\-l\fP، \fB\-v\fP و \fB\-Z\fP) حذف شده‌اند، اما گزینهٔ آزمایش (\fB\-t\fP) می‌تواند به عنوان یک فهرست‌کردن ساده و حداقلی استفاده شود. همچنین، کسانی که آرشیوهای خود‌بازشونده ایجاد می‌کنند ممکن است مایل باشند فهرست کوتاهی را در بخش توضیح zipfile قرار دهند. .PP برای توضیحات کامل‌تر درباره این گزینه‌ها، \fIunzip\fP(1L) را ببینید. .PD .\" ========================================================================= .SH "اصلاح‌کننده‌ها (MODIFIERS)" در حال حاضر \fIunzipsfx\fP از تمام اصلاح‌کننده‌های \fIunzip\fP(1L) پشتیبانی می‌کند: \fB\-a\fP (تبدیل فایل‌های متنی)، \fB\-n\fP (عدم بازنویسی تحت هر شرایطی)، \fB\-o\fP (بازنویسی بدون پرسش)، \fB\-q\fP (عملیات در حالت بی‌صدا)، \fB\-C\fP (تطبیق نام‌ها بدون حساسیت به حروف بزرگ و کوچک)، \fB\-L\fP (تبدیل نام‌های حروف بزرگ سیستم‌عامل به حروف کوچک)، \fB\-j\fP (نادیده‌گرفتن مسیرها) و \fB\-V\fP (حفظ شماره نگارش‌ها)؛ به علاوه گزینه‌های مخصوص سیستم‌عامل زیر: \fB\-X\fP (بازیابی اطلاعات مالکیت/حفاظت VMS)، \fB\-s\fP (تبدیل فاصله‌ها در نام فایل‌ها به زیرخط [DOS، OS/2، NT]) و \fB\-$\fP (بازیابی برچسب حجم دیسک [DOS، OS/2، NT، Amiga]). .PP (پشتیبانی از تبدیل متن عادی ASCII ممکن است در نگارش‌های آینده حذف شود، زیرا برای سازندهٔ آرشیو به اندازه کافی ساده است که اطمینان حاصل کند فایل‌های متنی قالب مناسب برای سیستم‌عامل محلی را دارند. تبدیل EBCDIC البته همچنان پشتیبانی خواهد شد، زیرا قالب zipfile مستلزم ذخیره‌سازی متن‌ها به صورت ASCII است.) .PP برای توضیحات کامل‌تر درباره این اصلاح‌کننده‌ها، \fIunzip\fP(1L) را ببینید. .PD .\" ========================================================================= .SH "گزینه‌های محیطی (ENVIRONMENT OPTIONS)" برنامهٔ \fIunzipsfx\fP از همان متغیرهای محیطی استفاده می‌کند که \fIunzip\fP(1L) استفاده می‌کند، هرچند این موضوع احتمالاً تنها برای شخصی که در حال ساخت و آزمایش آرشیو خود‌بازشونده است اهمیت خواهد داشت. برای جزئیات، \fIunzip\fP(1L) را ببینید. .PD .\" ========================================================================= .SH "رمزگشایی (DECRYPTION)" رمزگشایی دقیقاً مانند \fIunzip\fP(1L) پشتیبانی می‌شود؛ یعنی به‌صورت تعاملی با اعلان بدون بازتاب کاراکتر برای گذرواژه(ها). برای جزئیات، \fIunzip\fP(1L) را ببینید. بار دیگر توجه داشته باشید در صورتی که آرشیو هیچ فایل رمزگذاری‌شده‌ای ندارد، دلیلی برای استفاده از نگارشی از \fIunzipsfx\fP با پشتیبانی از رمزگشایی وجود ندارد؛ این کار فقط اندازه آرشیو را افزایش می‌دهد. .PD .\" ========================================================================= .SH "دستور اجرای خودکار (AUTORUN COMMAND)" هنگامی که \fIunzipsfx\fP با تعریف CHEAP_SFX_AUTORUN کامپایل شده باشد، یک قابلیت سادهٔ «اجرای خودکار دستور» پشتیبانی می‌شود. می‌توانید با استفاده از ساختار زیر، دستوری را در بخش توضیح آرشیو Zip وارد کنید: .PP .EX $AUTORUN$>[command line string] .EE .PP هنگامی که \fIunzipsfx\fP نشانهٔ «$AUTORUN$>» را در ابتدای توضیح آرشیو Zip تشخیص دهد، باقی‌ماندهٔ سطر اول توضیح (تا نخستین نویسهٔ خط جدید) به عنوان یک دستور شل با استفاده از تابع «system» در کتابخانه اجرایی C به سیستم‌عامل فرستاده می‌شود. پیش از اجرای دستور، \fIunzipsfx\fP دستور را در کنسول نمایش داده و برای تأیید از کاربر سؤال می‌پرسد. هنگامی که کاربر با مشخص‌کردن گزینهٔ \fB-q\fP اعلان‌ها را غیرفعال کرده باشد، دستورهای اجرای خودکار هرگز اجرا نمی‌شوند. .PP در صورتی که توضیح آرشیو شامل سطرهای متنی بیشتری باشد، باقی‌ماندهٔ توضیح آرشیو پس از سطر اول به‌طور عادی نمایش داده می‌شود، مگر اینکه با مشخص‌کردن گزینهٔ \fB-q\fP عملیات بی‌صدا درخواست شده باشد. .PD .\" ========================================================================= .SH "مثال‌ها (EXAMPLES)" برای ایجاد یک آرشیو خود‌بازشوندهٔ \fIletters\fP از یک zipfile معمولی \fIletters.zip\fP و تغییر دسترسی‌های آرشیو جدید به قابل اجرا برای همگان در Unix: .PP .EX cat unzipsfx letters.zip > letters chmod 755 letters zip -A letters .EE .PP برای ایجاد همان آرشیو در MS-DOS، OS/2 یا NT (به استفاده از گزینهٔ \fB/b\fP [دودویی/باینری] برای دستور \fIcopy\fP توجه کنید): .PP .EX copy /b unzipsfx.exe+letters.zip letters.exe zip -A letters.exe .EE .PP در VMS: .PP .EX copy unzipsfx.exe,letters.zip letters.exe letters == "$currentdisk:[currentdir]letters.exe" zip -A letters.exe .EE .PP (دستور \fIappend\fP در VMS نیز ممکن است استفاده شود. دستور دوم برنامه جدید را به‌عنوان یک «دستور خارجی» قادر به دریافت آرگومان‌ها نصب می‌کند. خط سوم فرض می‌کند که Zip از پیش به‌صورت یک دستور خارجی نصب شده است.) در AmigaDOS: .PP .EX MakeSFX letters letters.zip UnZipSFX .EE .PP (برنامه MakeSFX در توزیع مبدأ UnZip و توزیع‌های باینری Amiga گنجانده شده است. «\fCzip -A\fR» روی آرشیوهای خود‌بازشونده در Amiga کار نمی‌کند.) برای آزمایش (یا فهرست‌کردن) آرشیو خود‌بازشوندهٔ تازه ایجادشده: .PP .EX letters \-t .EE .PP برای آزمایش \fIletters\fP در حالت بی‌صدا، به طوری که فقط یک پیام خلاصه مبنی بر سالم بودن یا نبودن آرشیو چاپ شود: .PP .EX letters \-tqq .EE .PP برای استخراج تمام محتویات در دایرکتوری جاری و بازسازی مجدد تمام فایل‌ها و زیردایرکتوری‌ها بر حسب نیاز: .PP .EX letters .EE .PP برای استخراج تمام فایل‌های \fC*.txt\fR (در Unix نماد «*» را درون کوتیشن بگذارید): .PP .EX letters *.txt .EE .PP برای استخراج همه‌چیز \fIبه‌جز\fP فایل‌های \fC*.txt\fR: .PP .EX letters -x *.txt .EE .PP برای استخراج تنها فایل README به خروجی استاندارد (صفحه‌نمایش): .PP .EX letters -c README .EE .PP برای چاپ تنها توضیحِ zipfile: .PP .EX letters \-z .EE .PD .\" =========================================================================.SH "محدودیت‌ها (LIMITATIONS)" محدودیت اصلی و بنیادین \fIunzipsfx\fP این است که میان معماری‌ها یا سیستم‌عامل‌های مختلف قابل حمل نیست، و بنابراین آرشیوهای حاصل نیز چنین قابلیتی ندارند. با این حال، برای برخی معماری‌ها قابلیت حمل محدودی وجود دارد (به‌عنوان مثال، میان برخی از توزیع‌های یونیکس مبتنی بر Intel). .PP مشکل دیگر در پیاده‌سازی فعلی این است که از نظر فنی، هر آرشیوی که داده‌های زائد (junk) به ابتدای آن اضافه شده باشد، دیگر یک فایل zip معتبر محسوب نمی‌شود (مگر اینکه همان‌طور که در بالا اشاره شد، از \fIzip\fP(1) برای تنظیم مناسب آفست‌های فایل zip استفاده شود). ابزار \fIunzip\fP(1) این بایت‌های اضافه‌شده در ابتدا را شناسایی کرده و آن‌ها را نادیده می‌گیرد، زیرا برخی از پروتکل‌های انتقال فایل، به‌ویژه MacBinary، نیز به افزودن داده‌های زائد به ابتدا شناخته شده‌اند. اما ممکن است مجموعه ابزارهای فشرده‌سازی PKWARE قادر به مدیریت آرشیو دستکاری‌شده نباشند، مگر اینکه آفست‌های آن تنظیم شده باشند. .PP ابزار \fIunzipsfx\fP از متغیر PATH کاربر اطلاعی ندارد، بنابراین به‌طور کلی هنگام فراخوانی، آرشیو باید در دایرکتوری جاری باشد، یا اینکه یک مسیر کامل یا نسبی ارائه شود. اگر کاربر تلاش کند آرشیو را از دایرکتوری دیگری در PATH به‌جز دایرکتوری جاری استخراج کند، \fIunzipsfx\fP هشداری با مضمون «can't find myself» نمایش می‌دهد. این موضوع در Unix همیشه صادق است و در MS-DOS نیز بسته به کامپایلر مورد استفاده ممکن است در برخی موارد رخ دهد (Microsoft C نام برنامه را به‌طور کامل با مسیر مشخص می‌کند، اما کامپایلرهای دیگر ممکن است این کار را نکنند). در OS/2 و NT فراخوان‌های سیستمی موجود است که نام کامل مسیر را ارائه می‌دهند، بنابراین آرشیو را می‌توان از هر جایی در PATH کاربر فراخوانی کرد. وضعیت برای AmigaDOS، Atari TOS، MacOS و غیره مشخص نیست. .PP همان‌طور که در بالا اشاره شد، تعدادی از عملکردهای معمول \fIunzip\fP(1L) به منظور کوچک‌تر کردن \fIunzipsfx\fP حذف شده‌اند: اطلاعات مربوط به شیوه استفاده و عیب‌یابی، عملکردهای فهرست‌کردن و استخراج در دایرکتوری‌های دیگر. همچنین تنها فایل‌های ذخیره‌شده (stored) و فشرده‌شده با الگوریتم deflate پشتیبانی می‌شوند. با این حال، محدودیت اخیر عمدتاً به کسانی مربوط می‌شود که آرشیوهای SFX ایجاد می‌کنند. .PP کاربران VMS برای استفاده از هر یک از گزینه‌های \fIunzipsfx\fP، باید با نحوه پیکربندی آرشیوهای خود-استخراج‌شونده به‌صورت دستورهای خارجی (foreign commands) آشنا باشند. این کار برای یک استخراج ساده لازم نیست، اما دستور آن در این صورت به عنوان مثال به «\fCrun letters\fR» تبدیل می‌شود (برای ادامه مثال‌های ارائه‌شده در بالا). .PP ابزار \fIunzipsfx\fP در Amiga برای ایجاد آرشیوهای خود-استخراج‌شونده کاربردی به استفاده از یک برنامه ویژه به نام MakeSFX نیاز دارد؛ اتصال و پیوست ساده فایل‌ها (concatenation) کارساز نیست. (برای کاربرانی با دیدگاه فنی، آرشیو ضمیمه‌شده به عنوان یک «debug hunk» تعریف می‌شود.) ممکن است مشکلات سازگاری میان سطوح ROM در Amigaهای قدیمی‌تر و مدل‌های جدیدتر وجود داشته باشد. .PP تمام باگ‌های فعلی موجود در \fIunzip\fP(1L) در \fIunzipsfx\fP نیز وجود دارند. .PD .\" ========================================================================= .SH "خطاها (DIAGNOSTICS)" وضعیت خروج (سطح خطا یا error level) در \fIunzipsfx\fP دقیقاً همانند \fIunzip\fP(1L) است؛ به صفحه راهنمای مربوطه مراجعه کنید. .PD .\" ========================================================================= .SH "همچنین ببینید (SEE ALSO)" \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipgrep\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) .PD .PD .\" ========================================================================= .SH "نشانی وب (URL)" صفحه خانگی Info-ZIP در حال حاضر در نشانی زیر قرار دارد: .EX \fChttp://www.info-zip.org/pub/infozip\fR .EE یا .EX \fCftp://ftp.info-zip.org/pub/infozip\fR . .EE .PD .\" ========================================================================= .SH "نویسندگان (AUTHORS)" گرگ رولوفس (Greg Roelofs) مسئول اعمال تغییرات اولیه لازم در UnZip برای ایجاد UnZipSFX بود. برای مشاهده فهرست کنونی نویسندگان Zip-Bugs به \fIunzip\fP(1L)، یا برای فهرست کامل مشارکت‌کنندگان Info-ZIP به فایل CONTRIBS در توزیع کد منبع UnZip مراجعه کنید. .PD