| UNZIP(1) | General Commands Manual | UNZIP(1) |
نام (NAME)
unzip - فهرست کردن، آزمودن و استخراج فایلهای فشرده در یک آرشیو ZIP
خلاصه دستور (SYNOPSIS)
unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...] [-x xfile(s) ...] [-d exdir]
توضیحات (DESCRIPTION)
دستور unzip فایلها را از یک آرشیو ZIP (که معمولاً در سیستمهای MS-DOS یافت میشود) فهرست، آزمایش یا استخراج میکند. رفتار پیشفرض (بدون هیچ گزینهای) استخراج تمام فایلها از آرشیو ZIP مشخصشده در دایرکتوری جاری (و زیردایرکتوریهای زیر آن) است. برنامه همراه آن، zip(1)، آرشیوهای ZIP را ایجاد میکند؛ هر دو برنامه با آرشیوهای ایجادشده توسط PKZIP و PKUNZIP متعلق به PKWARE برای MS-DOS سازگار هستند، اما در بسیاری از موارد گزینهها یا رفتارهای پیشفرض برنامه متفاوت است.
آرگومانها (ARGUMENTS)
- file[.zip]
- مسیر آرشیو(های) ZIP. اگر مشخصات فایل دارای نویسههای عام (wildcard) باشد، هر فایل منطبق به ترتیبی که توسط سیستمعامل (یا سیستم فایل) تعیین میشود پردازش میگردد. تنها نام فایل میتواند شامل نویسه عام باشد؛ خود مسیر نمیتواند چنین باشد. عبارتهای عام مشابه موارد پشتیبانیشده در شلهای متداول یونیکس (sh, ksh, csh) هستند و ممکن است شامل موارد زیر باشند:
- *
- با توالی ۰ یا چند نویسه مطابقت دارد
- ?
- دقیقاً با ۱ نویسه مطابقت دارد
- [...]
- با هر نویسه تکی موجود در داخل قلابها مطابقت دارد؛ محدودهها با یک نویسه آغازین، یک خط تیره و یک نویسه پایانی مشخص میشوند. اگر علامت تعجب یا یک کَرَک (`!' یا `^') بلافاصله پس از قلاب باز بیاید، در این صورت محدوده نویسههای درون قلابها متمم میشود (یعنی هر چیزی به جز نویسههای داخل قلاب به عنوان یک تطابق در نظر گرفته میشود). برای مشخص کردن یک قلاب باز واقعی، باید از توالی سهنویسهای «[[]» استفاده شود.
- (اطمینان حاصل کنید که هر نویسهای را که ممکن است توسط سیستمعامل تفسیر یا دستکاری شود، بهویژه در یونیکس و VMS، در کوتیشن قرار دهید.) اگر هیچ تطابقی یافت نشود، فرض میشود که مشخصات واردشده نام یک فایل واقعی است؛ و اگر آن هم شکست بخورد، پسوند .zip اضافه میشود. توجه داشته باشید که فایلهای ZIP خوداستخراجگر (self-extracting) نیز مانند هر آرشیو ZIP دیگری پشتیبانی میشوند؛ فقط پسوند .exe (در صورت وجود) را صراحتاً مشخص کنید.
- [file(s)]
- فهرستی اختیاری از اعضای آرشیو که باید پردازش شوند، جداشده با فاصله. (نسخههای VMS کامپایلشده با تعریف VMSCLI باید در عوض فایلها را با کاما جدا کنند. -v را در بخش گزینهها (OPTIONS) زیر ببینید.) عبارات باقاعده (نویسههای عام) را میتوان برای تطبیق با چندین عضو به کار برد؛ بالا را ببینید. مجدداً اطمینان حاصل کنید عباراتی را که در غیر این صورت توسط سیستمعامل گسترش مییابند یا تغییر میکنند، نقلقول (quote) کنید.
- [-x xfile(s)]
- فهرستی اختیاری از اعضای آرشیو که باید از پردازش مستثنی شوند. از آنجا که نویسههای عام معمولاً با جداکنندههای دایرکتوری (`/') تطبیق دارند (برای موارد استثنا گزینه -W را ببینید)، این گزینه میتواند برای مستثنی کردن فایلهایی که در زیردایرکتوریها هستند به کار رود. برای نمونه، دستور «unzip foo *.[ch] -x */*» تمام فایلهای منبع C را در دایرکتوری اصلی استخراج میکند، اما هیچیک از فایلهای موجود در زیردایرکتوریها را استخراج نمینماید. بدون گزینه -x، تمام فایلهای منبع C در تمام دایرکتوریهای درون فایل zip استخراج میشدند.
- [-d exdir]
- دایرکتوری اختیاری که فایلها باید در آن استخراج شوند. بهطور پیشفرض، تمام فایلها و زیردایرکتوریها در دایرکتوری جاری بازسازی میشوند؛ گزینه -d امکان استخراج در یک دایرکتوری دلخواه را فراهم میکند (همواره با فرض داشتن مجوز نوشتن در آن دایرکتوری). نیازی نیست این گزینه در انتهای خط فرمان قرار گیرد؛ همچنین قبل از مشخصات فایل zip (همراه با گزینههای معمولی)، بلافاصله پس از مشخصات فایل zip، یا میان file(s) و گزینه -x نیز پذیرفته میشود. گزینه و دایرکتوری را میتوان بدون هیچ فاصله خالی بین آنها چسباند، اما توجه داشته باشید که این ممکن است مانع از رفتار عادی شل شود. بهویژه، «-d ~» (تیلدا) توسط شلهای C در یونیکس به نام دایرکتوری خانگی کاربر گسترش مییابد، اما «-d~» به عنوان یک زیردایرکتوری واقعی به نام «~» در دایرکتوری جاری در نظر گرفته میشود.
گزینهها (OPTIONS)
توجه داشته باشید که برای پشتیبانی از سختافزارهای قدیمی، صفحه راهنمای استفاده unzip به ۲۲ یا ۲۳ سطر محدود شده است و بنابراین باید تنها به عنوان یک یادآوری از نحو پایه unzip در نظر گرفته شود، نه فهرستی جامع از تمام پرچمهای ممکن. فهرست جامع در ادامه آمده است:
- -Z
- حالت zipinfo(1). اگر نخستین گزینه در خط فرمان -Z باشد، باقی گزینهها به عنوان گزینههای zipinfo(1) در نظر گرفته میشوند. برای شرح این گزینهها به صفحه راهنمای مربوطه مراجعه کنید.
- -A
- [OS/2، یونیکس DLL] چاپ راهنمای گسترشیافته برای رابط برنامهنویسی نرمافزار (API) مربوط به DLL.
- -c
- استخراج فایلها به خروجی استاندارد/صفحه نمایش (``CRT''). این گزینه مشابه گزینه -p است با این تفاوت که نام هر فایل هنگام استخراج چاپ میشود، گزینه -a مجاز است، و تبدیل ASCII-EBCDIC در صورت لزوم بهطور خودکار انجام میپذیرد. این گزینه در صفحه راهنمای استفاده unzip فهرست نشده است.
- -f
- تازهسازی فایلهای موجود؛ یعنی تنها استخراج فایلهایی که از قبل روی دیسک وجود دارند و جدیدتر از نسخههای روی دیسک هستند. بهطور پیشفرض unzip پیش از بازنویسی سؤال میپرسد، اما میتوان از گزینه -o برای جلوگیری از پرسشها استفاده کرد. توجه داشته باشید که در بسیاری از سیستمهای عامل، متغیر محیطی TZ (منطقه زمانی) باید بهدرستی تنظیم شده باشد تا -f و -u بهدرستی کار کنند (در یونیکس این متغیر معمولاً بهطور خودکار تنظیم میشود). دلایل این امر اندکی پیچیده است اما به تفاوتهای بین زمان فایل با قالب DOS (همواره زمان محلی) و زمان با قالب یونیکس (همواره در GMT/UTC) و ضرورت مقایسه این دو مربوط میشود. یک مقدار متداول برای TZ عبارت است از «PST8PDT» (زمان اقیانوس آرام ایالات متحده همراه با تنظیم خودکار برای ساعت تابستانی).
- -l
- فهرست کردن فایلهای آرشیو (قالب کوتاه). نامها، اندازه فایلهای فشردهنشده، و تاریخ و زمان ویرایش فایلهای مشخصشده همراه با مجموع کل برای تمام فایلهای تعیینشده چاپ میشوند. اگر UnZip با تعریف OS2_EAS کامپایل شده باشد، گزینه -l همچنین ستونهایی را برای اندازه صفات توسعهیافته (EAs) ذخیرهشده در OS/2 و فهرستهای کنترل دسترسی (ACLs) در OS/2 فهرست میکند. علاوه بر این، توضیح (comment) فایل zip و توضیحات جداگانه هر فایل (در صورت وجود) نمایش داده میشوند. اگر فایلی از یک سیستم فایل بدون تمایز بزرگ و کوچکی حروف (مانند سیستم فایل قدیمی FAT در MS-DOS) آرشیو شده باشد و گزینه -L داده شده باشد، نام فایل به حروف کوچک تبدیل شده و پیشوند علامت کرک (^) میگیرد.
- -p
- استخراج فایلها به لوله (stdout). چیزی جز دادههای فایل به stdout ارسال نمیشود، و فایلها همواره در قالب باینری، درست همانطور که ذخیره شدهاند (بدون تبدیل)، استخراج میگردند.
- -t
- آزمودن فایلهای آرشیو. این گزینه هر فایل مشخصشده را در حافظه استخراج کرده و مقدار CRC (بررسی افزونگی دورهای، یک چکسام پیشرفته) فایل بازگشاییشده را با مقدار CRC ذخیرهشده فایل اصلی مقایسه میکند.
- -T
- [اکثر سیستمعاملها] تنظیم برچسب زمانی روی آرشیو(ها) بر اساس جدیدترین فایل موجود در هر یک. این معادل گزینه -go در zip است، با این تفاوت که میتوان آن را روی فایلهای zip با نویسههای عام (مانند «unzip -T \*.zip») به کار برد و بسیار سریعتر است.
- -u
- بهروزرسانی فایلهای موجود و در صورت نیاز، ایجاد فایلهای جدید. این گزینه همان عملکرد گزینه -f را انجام میدهد و فایلهایی را که جدیدتر از موارد همنام روی دیسک هستند (با پرسش) استخراج میکند، و علاوه بر آن فایلهایی را که از قبل روی دیسک وجود ندارند نیز استخراج مینماید. برای اطلاعات در مورد تنظیم صحیح منطقه زمانی، به توضیحات -f در بالا مراجعه کنید.
- -v
- فهرست کردن فایلهای آرشیو (قالب جامع/مفصل) یا نمایش اطلاعات تشخیصی نسخه. این گزینه تکامل یافته و اکنون هم به عنوان یک گزینه و هم یک اصلاحکننده رفتار میکند. به عنوان یک گزینه دو هدف دارد: هنگامی که یک فایل zip بدون گزینههای دیگر مشخص شود، -v فایلهای آرشیو را با جزئیات کامل فهرست میکند و اطلاعات پایه -l را با روش فشردهسازی، اندازه فشرده، نسبت فشردهسازی و CRC ۳۲-بیتی تکمیل مینماید. بر خلاف بیشتر ابزارهای رقیب، unzip تعداد ۱۲ بایت سربرگ اضافی مدخلهای رمزگذاریشده را از اعداد اندازه فشرده حذف میکند. بنابراین، ارقام اندازه فشرده و نسبت فشردهسازی مستقل از وضعیت رمزگذاری مدخل هستند و کارایی واقعی فشردهسازی را نشان میدهند. (اندازه کامل جریان دادههای فشرده رمزگذاریشده برای مدخلهای فایل zip در گزارشهای مفصلتر zipinfo(1) گزارش میشود، به صفحه راهنمای جداگانه آن مراجعه کنید.) هنگامی که هیچ فایل zip مشخص نشده باشد (یعنی دستور کامل صرفاً «unzip -v» باشد)، یک صفحه تشخیصی چاپ میشود. علاوه بر سربرگ عادی با تاریخ انتشار و نسخه، unzip سایت اصلی ftp مربوط به Info-ZIP و محل یافتن فهرستی از سایر سایتهای ftp و غیر ftp را فهرست میکند؛ سیستمعامل مقصدی که برنامه برای آن کامپایل شده، و همچنین (احتمالاً) سختافزاری که روی آن کامپایل شده، کامپایلر و نسخه مورد استفاده، و تاریخ کامپایل؛ هرگونه گزینه ویژه کامپایل که ممکن است عملکرد برنامه را تحت تأثیر قرار دهد (به بخش رمزگشایی (DECRYPTION) در زیر نیز مراجعه کنید)؛ و هر گزینهای که در متغیرهای محیطی ذخیره شده و ممکن است اثر مشابهی داشته باشد (به بخش متغیرهای محیطی (ENVIRONMENT OPTIONS) در زیر مراجعه کنید). به عنوان یک اصلاحکننده، در ترکیب با سایر گزینهها (مثلاً -t) برای ایجاد خروجی مفصلتر یا اشکالزدایی کار میکند؛ این قابلیت هنوز کاملاً پیادهسازی نشده است اما در انتشارهای بعدی وجود خواهد داشت.
- -z
- نمایش دادن فقط توضیح (comment) آرشیو.
اصلاحکنندهها (MODIFIERS)
- -a
- تبدیل فایلهای متنی. بهطور معمول تمام فایلها دقیقاً همانطور که ذخیره شدهاند (به عنوان فایلهای «باینری») استخراج میشوند. گزینه -a باعث میشود فایلهایی که توسط zip به عنوان فایلهای متنی شناسایی شدهاند (آنهایی که دارای برچسب `t' در فهرستهای zipinfo هستند، نه `b') بهطور خودکار به همین صورت استخراج شوند و پایان خطوط، نویسههای انتهای فایل و خود مجموعه نویسهها در صورت لزوم تبدیل گردند. (برای نمونه، فایلهای یونیکس از line feed (LF) برای پایان خط (EOL) استفاده میکنند و نشانه پایان فایل (EOF) ندارند؛ مکینتاش از carriage return (CR) برای EOL استفاده میکند؛ و بیشتر سیستمعاملهای PC از CR+LF برای EOL و کلید ترکیبی کنترل-Z برای EOF استفاده مینمایند. علاوه بر این، بزرگرایانههای IBM و سامانه پایانه میشیگان به جای مجموعه نویسههای رایجتر ASCII از EBCDIC استفاده میکنند، و NT از یونیکد پشتیبانی مینماید.) توجه داشته باشید که شناسایی فایلهای متنی توسط zip به هیچ وجه بینقص نیست؛ برخی از فایلهای «متنی» ممکن است در واقع باینری باشند و بالعکس. بنابراین unzip هنگام استفاده از گزینه -a، عبارت «[text]» یا «[binary]» را به عنوان بررسی دیداری برای هر فایلی که استخراج میکند چاپ مینماید. گزینه -aa استخراج تمام فایلها را به عنوان متن، بدون در نظر گرفتن نوع فرضی فایل، اجبار میکند. در VMS، گزینه -S را نیز ببینید.
- -b
- [عمومی] رفتار با تمام فایلها به عنوان باینری (بدون تبدیل متن). این یک میانبر برای ---a است.
- -b
- [Tandem] اجبار به ایجاد فایلهایی با نوع کد فایل ۱۸۰ ('C') هنگام استخراج مدخلهای Zip که با علامت "text" مشخص شدهاند. (در Tandem، گزینه -a بهطور پیشفرض فعال است، بالا را ببینید).
- -b
- [VMS] تبدیل خودکار فایلهای باینری (به -a در بالا مراجعه کنید) به قالب رکورد با طول ثابت ۵۱۲ بایت. دو بار نوشتن گزینه (-bb) استخراج تمام فایلها را در این قالب اجبار میکند. هنگام استخراج به خروجی استاندارد (زمانی که گزینه -c یا -p برقرار است)، تبدیل پیشفرض جداکنندههای رکورد متنی برای فایلهای باینری (-b) یا همه فایلها (-bb) غیرفعال میشود.
- -B
- [هنگامی که با تعریف UNIXBACKUP کامپایل شده باشد] ذخیره یک نسخه پشتیبان از هر فایل بازنویسیشده. فایل پشتیبان نام فایل مقصد را به همراه یک علامت تیلدا و اختیاری یک شماره ترتیبی یکتا (حداکثر تا ۵ رقم) دریافت میکند. شماره ترتیبی هر زمان که فایل دیگری با نام اصلی به علاوه تیلدا از قبل وجود داشته باشد اعمال میشود. هنگامی که همراه با گزینه "بازنویسی همه" (-o) استفاده شود، فایلهای پشتیبان شمارهدار هرگز ایجاد نمیشوند. در این حالت، تمام فایلهای پشتیبان مانند فایل اصلی با یک تیلدای اضافه نامگذاری میشوند و فایلهای پشتیبان موجود بدون اطلاع قبلی حذف میگردند. این قابلیت مشابه رفتار پیشفرض emacs(1) در بسیاری از مکانها عمل میکند.
- مثال: نسخه قدیمی «foo» به «foo~» تغییر نام مییابد.
- هشدار: کاربران باید آگاه باشند که گزینه -B تحت تمام شرایط از دست رفتن دادههای موجود را متوقف نمیکند. برای نمونه، هنگامی که unzip در حالت بازنویسی همه (overwrite-all) اجرا میشود، یک فایل موجود «foo~» پیش از آنکه unzip برای تغییر نام «foo» به «foo~» تلاش کند حذف میگردد. هنگامی که این تلاش برای تغییر نام با شکست مواجه شود (به دلیل قفل فایل، دسترسی ناکافی، یا...)، استخراج «foo~» لغو میشود، اما فایل پشتیبان قدیمی از قبل از بین رفته است. سناریوی مشابهی هنگامی رخ میدهد که محدوده شماره ترتیبی فایلهای پشتیبان شمارهدار به پایان برسد (۹۹۹۹۹، یا ۶۵۵۳۵ برای سیستمهای ۱۶-بیتی). در این حالت، فایل پشتیبان با حداکثر شماره ترتیبی حذف شده و بدون اطلاع قبلی با نسخه پشتیبان جدید جایگزین میشود.
- -C
- استفاده از تطبیق حساس نبودن به حروف بزرگ و کوچک برای انتخاب مدخلهای آرشیو از فهرست الگوهای استخراج خط فرمان. فلسفه unzip این است که «همان چیزی را میگیرید که میخواهید» (این فلسفه همچنین مسئول تغییر -L/-U است؛ گزینههای مربوطه را در زیر ببینید). از آنجا که برخی سیستمهای فایل کاملاً به بزرگی و کوچکی حروف حساس هستند (بهویژه سیستمهای تحت سیستمعامل یونیکس) و از آنجا که هم آرشیوهای ZIP و هم خود unzip بین پلتفرمها قابل حمل هستند، رفتار پیشفرض unzip تطبیق نام فایلهای حاوی نویسه عام و واقعی با حساسیت به بزرگی و کوچکی حروف است. یعنی، مشخص کردن «makefile» در خط فرمان تنها با «makefile» در آرشیو مطابقت خواهد داشت، نه «Makefile» یا «MAKEFILE» (و بهطور مشابه برای مشخصات دارای نویسه عام). از آنجا که این مطابق با رفتار بسیاری از سیستمهای عامل/فایل دیگر نیست (برای مثال OS/2 HPFS، که بزرگی و کوچکی مخلوط را حفظ میکند اما به آن حساس نیست)، گزینه -C ممکن است برای اجبار تطبیق نام فایلها بدون حساسیت به بزرگی و کوچکی استفاده شود. در مثال بالا، هر سه فایل با «makefile» (یا «make*» یا موارد مشابه) تطبیق داده میشوند. گزینه -C هم بر مشخصات فایل در فهرست عادی فایلها و هم فهرست فایلهای مستثنیشده (xlist) تأثیر میگذارد.
- لطفاً توجه داشته باشید که گزینه -C نه بر جستجو برای فایل(های) zip تأثیر دارد و نه بر تطبیق مدخلهای آرشیو با فایلهای موجود در مسیر استخراج. در یک سیستم فایل حساس به حروف، unzip هرگز سعی نخواهد کرد هنگام استخراج یک مدخل «foo»، فایلی با نام «FOO» را بازنویسی کند!
- -D
- نادیده گرفتن بازیابی برچسبهای زمانی برای موارد استخراجشده. بهطور معمول، unzip سعی میکند تمام فرادادههای مربوط به موارد استخراجشده را که در آرشیو Zip ارائه شدهاند (و نیازی به امتیازات ویژه نداشته یا خطر امنیتی ایجاد نمیکنند) بازیابی نماید. با مشخص کردن -D، به unzip اعلام میشود که از بازیابی برچسبهای زمانی برای دایرکتوریهایی که صراحتاً از مدخلهای آرشیو Zip ایجاد شدهاند صرفنظر کند. این گزینه تنها برای پورتهایی اعمال میشود که از تنظیم برچسب زمانی برای دایرکتوریها پشتیبانی میکنند (در حال حاضر AtheOS, BeOS, MacOS, OS/2, Unix, VMS, Win32؛ برای سایر پورتهای unzip، گزینه -D هیچ اثری ندارد). گزینه تکرارشده -DD جلوگیری از بازیابی برچسب زمانی را برای تمام مدخلهای استخراجشده (فایلها و دایرکتوریها) اجبار میکند. این گزینه منجر به تنظیم برچسبهای زمانی برای تمام مدخلهای استخراجشده روی زمان فعلی میشود.
- در VMS، تنظیم پیشفرض برای این گزینه جهت هماهنگی با رفتار BACKUP برابر با -D است: برچسب زمانی فایلها بازیابی میشود، برچسب زمانی دایرکتوریهای استخراجشده روی زمان فعلی باقی میماند. برای فعالسازی بازیابی برچسب زمانی دایرکتوریها، باید گزینه نقیض --D مشخص شود. در VMS، گزینه -D بازیابی برچسب زمانی را برای تمام موارد آرشیو Zip استخراجشده غیرفعال میسازد. (در اینجا، یک -D منفرد در خط فرمان با مقدار پیشفرض -D ترکیب میشود تا همان کاری را انجام دهد که -DD صریح در سایر سیستمها انجام میدهد.)
- -E
- [تنها در MacOS] نمایش محتویات فیلد اضافی (extra field) مکاواس در طول عملیات بازیابی.
- -F
- [تنها در Acorn] جلوگیری از حذف پسوند نوع فایل NFS از نام فایلهای ذخیرهشده.
- -F
- [سیستمهای غیر Acorn که از نامهای طولانی فایل همراه با کاما پشتیبانی میکنند، و تنها در صورت کامپایل با تعریف ACORN_FTYPE_NFS] ترجمه اطلاعات نوع فایل از بلوکهای فیلد اضافی ACORN RISC OS به پسوند نوع فایل NFS و الحاق آن به نامهای فایلهای استخراجشده. (هنگامی که به نظر برسد نام فایل ذخیرهشده از قبل دارای پسوند نوع فایل NFS الحاقشده است، اطلاعات فیلد اضافی جایگزین آن میشود.)
- -i
- [تنها در MacOS] نادیده گرفتن نام فایلهای ذخیرهشده در فیلدهای اضافی MacOS. در عوض، سازگارترین نام فایل ذخیرهشده در بخش عمومی سربرگ مدخل استفاده میشود.
- -j
- دور ریختن مسیرها (junk paths). ساختار دایرکتوری آرشیو بازسازی نمیشود؛ تمام فایلها در دایرکتوری استخراج قرار داده میشوند (بهطور پیشفرض، دایرکتوری جاری).
- -J
- [تنها در BeOS] دور ریختن صفات فایل. صفات فایلی BeOS بازیابی نمیشوند، صرفاً دادههای فایل بازیابی میگردند.
- -J
- [تنها در MacOS] نادیده گرفتن فیلدهای اضافی MacOS. تمام اطلاعات اختصاصی مکینتاش نادیده گرفته میشود. Data-fork و resource-fork به صورت فایلهای جداگانه بازیابی میشوند.
- -K
- [تنها در AtheOS, BeOS, Unix] حفظ صفات فایل SUID/SGID/Tacky. بدون این پرچم، این بیتهای صفت به دلایل امنیتی پاک میشوند.
- -L
- تبدیل تمام نامهای فایلی که از یک سیستمعامل یا سیستم فایل منحصراً دارای حروف بزرگ سرچشمه میگیرند به حروف کوچک. (این رفتار پیشفرض unzip در نسخههای قبل از ۵.۱۱ بود؛ رفتار پیشفرض جدید با رفتار قدیمی با گزینه -U یکسان است، که اکنون منسوخ شده و در نسخههای بعدی حذف خواهد شد.) بسته به نرمافزار آرشیوساز، فایلهای آرشیو شده تحت سیستمهای فایل با یک حالت نویسه (VMS، FAT قدیمی در MS-DOS و غیره) ممکن است به صورت نامهایی با تمام حروف بزرگ ذخیره شوند؛ این امر هنگام استخراج در یک سیستم فایل نگهدارنده حالت حروف نظیر OS/2 HPFS یا یک سیستم فایل حساس به حالت حروف نظیر سیستمهای تحت یونیکس میتواند ناخوشایند یا ناراحتکننده باشد. بهطور پیشفرض unzip این نامهای فایل را دقیقاً همانگونه که ذخیره شدهاند فهرست و استخراج میکند (به جز کوتاه کردن، تبدیل نویسههای پشتیبانینشده و غیره)؛ این گزینه باعث میشود نامهای تمام فایلهای سیستمهای معین به حروف کوچک تبدیل گردند. گزینه -LL تبدیل تمام نامهای فایل را به حروف کوچک، بدون در نظر گرفتن سیستم فایل مبدأ، اجبار میکند.
- -M
- هدایت تمام خروجیها از طریق یک صفحهبندیکننده (pager) داخلی مشابه دستور more(1) در یونیکس. در انتهای یک صفحه کامل از خروجی، unzip با اعلان «--More--» مکث میکند؛ صفحه بعدی ممکن است با فشردن کلید Enter (Return) یا کلید فاصله مشاهده شود. برنامه unzip را میتوان با فشردن کلید «q» و در برخی سیستمها با کلید Enter/Return پایان داد. برخلاف more(1) در یونیکس، قابلیت جستجوی رو به جلو یا ویرایش وجود ندارد. همچنین، unzip متوجه شکسته شدن سطرهای طولانی در لبه صفحه نمایش نمیشود، که عملاً منجر به چاپ دو یا چند سطر و این احتمال میشود که مقداری متن قبل از دیده شدن به بالای صفحه اسکرول شود. در برخی سیستمها تعداد خطوط موجود در صفحه نمایش شناسایی نمیشود، که در این حالت unzip فرض میکند ارتفاع صفحه ۲۴ خط است.
- -n
- هرگز فایلهای موجود بازنویسی نشوند. اگر فایلی از قبل وجود داشته باشد، استخراج آن فایل را بدون پرسش رد کند. بهطور پیشفرض unzip پیش از استخراج هر فایلی که از قبل وجود دارد سؤال میپرسد؛ کاربر میتواند بازنویسی فقط فایل جاری، بازنویسی همه فایلها، رد استخراج فایل جاری، رد استخراج همه فایلهای موجود، یا تغییر نام فایل جاری را انتخاب کند.
- -N
- [Amiga] استخراج توضیحات فایل به عنوان یادداشتهای فایل (filenotes) آمیگا. توضیحات فایل با گزینه c- از zip(1)، یا با گزینه N- از نسخه آمیگا zip(1) که یادداشتهای فایل را به عنوان توضیح ذخیره میکند، ایجاد میشوند.
- -o
- بازنویسی فایلهای موجود بدون پرسش. این یک گزینه خطرناک است، بنابراین با احتیاط از آن استفاده کنید. (البته این گزینه اغلب با -f استفاده میشود، و تنها راه برای بازنویسی صفات گسترشیافته دایرکتوری تحت OS/2 است.)
- -P password
- استفاده از password برای رمزگشایی مدخلهای رمزگذاریشده فایل zip (در صورت وجود). این روش ناامن است! بسیاری از سیستمعاملهای چندکاربره راههایی را در اختیار هر کاربر قرار میدهند تا خط فرمان جاری هر کاربر دیگر را ببیند؛ حتی در سیستمهای مستقل همواره خطر دید زدن از پشت سر وجود دارد. ذخیره گذرواژه متنی ساده به عنوان بخشی از خط فرمان در یک اسکریپت خودکار حتی بدتر است. هر زمان که ممکن است، از اعلان تعاملی بدون پژواک برای وارد کردن گذرواژهها استفاده کنید. (و در جاهایی که امنیت واقعاً مهم است، از رمزنگاری قوی مانند Pretty Good Privacy به جای رمزنگاری نسبتاً ضعیف ارائهشده توسط ابزارهای استاندارد فایل zip استفاده کنید.)
- -q
- انجام عملیات به صورت بیصدا (-qq = حتی بیصداتر). بهطور معمول unzip نام فایلهایی را که در حال استخراج یا آزمایش آنها است، روشهای استخراج، هرگونه توضیح فایل یا آرشیو را که ممکن است در آرشیو ذخیره شده باشد، و احتمالاً خلاصهای را پس از پایان کار با هر آرشیو چاپ میکند. گزینههای -q[q] چاپ برخی یا تمام این پیامها را متوقف میسازند.
- -s
- [OS/2, NT, MS-DOS] تبدیل فاصلهها در نام فایلها به زیرخط (underscore). از آنجا که تمام سیستمعاملهای PC اجازه وجود فاصله در نام فایلها را میدهند، unzip بهطور پیشفرض نام فایلها را با فاصلههای دستنخورده استخراج میکند (مثلاً «EA DATA. SF»). با این حال، این امر میتواند دشوار باشد، زیرا بهویژه MS-DOS از فاصلهها در نام فایلها بهخوبی پشتیبانی نمیکند. تبدیل فاصلهها به زیرخط میتواند در برخی موارد این دشواری را برطرف سازد.
- -S
- [VMS] تبدیل فایلهای متنی (-a, -aa) به قالب رکورد Stream_LF، به جای قالب پیشفرض فایل متنی با طول متغیر. (قالب Stream_LF قالب رکورد پیشفرض VMS unzip است. این قالب اعمال میشود مگر اینکه تبدیل (-a, -aa و/یا -b, -bb) درخواست شده باشد یا یک مدخل ویژه VMS پردازش گردد.)
- -U
- [تنها با UNICODE_SUPPORT] اصلاح یا غیرفعال کردن مدیریت UTF-8. هنگامی که UNICODE_SUPPORT در دسترس باشد، گزینه -U برنامه unzip را مجبور میکند تمام نویسههای غیر ASCII را از نام فایلهای کدگذاریشده با UTF-8 به صورت «#Uxxxx» (برای نویسههای UCS-2، یا «#Lxxxxxx» برای نقاط کد یونیکد نیازمند ۳ بایت) بگریزاند (escape کند). این گزینه عمدتاً برای اهداف اشکالزدایی زمانی فراهم شده است که مشکوک باشیم پشتیبانی نسبتاً جدید UTF-8 باعث بههمریختگی نام فایلهای استخراجشده میشود.
- گزینه -UU امکان غیرفعال کردن کامل شناسایی نام فایلهای کدگذاریشده با UTF-8 را فراهم میکند. مدیریت کدگذاری نام فایلها در unzip به رفتار نسخههای پیشین برمیگردد.
- [کاربرد قدیمی و منسوخ] بزرگ نگهداشتن نام فایلها در صورتی که تحت MS-DOS، VMS و غیره ایجاد شده باشند. به -L در بالا مراجعه کنید.
- -V
- حفظ شمارههای نسخه فایل (VMS). فایلهای VMS را میتوان با یک شماره نسخه در قالب file.ext;## ذخیره کرد. بهطور پیشفرض شمارههای نسخه «;##» حذف میشوند، اما این گزینه امکان حفظ آنها را فراهم میکند. (در سیستمهای فایلی که نام فایلها را به طولهای بسیار کوتاه محدود میکنند، ممکن است بدون در نظر گرفتن این گزینه، شمارههای نسخه کوتاه یا حذف شوند.)
- -W
- [تنها هنگامی که گزینه زمان کامپایل WILD_STOP_AT_DIR فعال باشد] روال تطبیق الگو را اصلاح میکند تا هم `?' (نویسه عام تکنویسهای) و هم `*' (نویسه عام چندنویسهای) با نویسه جداکننده دایرکتوری `/' مطابقت نداشته باشند. (توالی دو نویسهای «**» به عنوان یک نویسه عام چندنویسهای عمل میکند که نویسه جداکننده دایرکتوری را در نویسههای منطبق خود شامل میشود.) مثالها:
"*.c" با "foo.c" مطابقت دارد اما با "mydir/foo.c" مطابقت ندارد
"**.c" هم با "foo.c" و هم با "mydir/foo.c" مطابقت دارد
"*/*.c" با "bar/foo.c" مطابقت دارد اما با "baz/bar/foo.c" مطابقت ندارد
"??*/*" با "ab/foo" و "abc/foo" مطابقت دارد
اما با "a/foo" یا "a/b/foo" مطابقت ندارد
- این رفتار تغییریافته معادل سبک تطبیق الگوی مورد استفاده توسط شلهای برخی از سیستمعاملهای مقصد پشتیبانیشده در UnZip است (یک نمونه Acorn RISC OS است). این گزینه ممکن است در سیستمهایی که نویسه جداکننده دایرکتوری داخلی آرشیو Zip (`/') در آنها به عنوان یک نویسه معمولی در نام فایلهای سیستمعامل بومی مجاز است، در دسترس نباشد. (در حال حاضر، UnZip از قوانین یکسان تطبیق الگو هم برای مشخصات فایلهای zip دارای نویسه عام و هم برای الگوهای انتخاب مدخل zip در اکثر پورتها استفاده میکند. برای سیستمهایی که `/' را به عنوان نویسه عادی نام فایل مجاز میدانند، گزینه W- ممکن است روی مشخصات فایل zip دارای نویسه عام طبق انتظار کار نکند.)
- -X
- [VMS, Unix, OS/2, NT, Tandem] بازیابی اطلاعات مالکیت/حفاظت (مدخلهای UIC و ACL) تحت VMS، یا اطلاعات کاربر و گروه (UID/GID) تحت یونیکس، یا فهرستهای کنترل دسترسی (ACLها) تحت نسخههای خاص فعالشده با شبکه در OS/2 (شامل Warp Server با IBM LAN Server/Requester 3.0 تا 5.0؛ Warp Connect با IBM Peer 1.0)، یا ACLهای امنیتی تحت Windows NT. در بیشتر موارد این امر به امتیازات ویژه سیستمی نیاز دارد، و دو برابر کردن گزینه (-XX) تحت NT به unzip دستور میدهد تا از امتیازات برای استخراج استفاده کند؛ اما تحت یونیکس، برای مثال، کاربری که متعلق به چندین گروه است میتواند فایلهای متعلق به هر یک از آن گروهها را بازیابی کند، تا زمانی که شناسههای کاربری با شناسه خود او مطابقت داشته باشد. توجه داشته باشید که صفات عادی فایل همواره بازیابی میشوند--این گزینه تنها برای اطلاعات اضافی و اختیاری مالکیت موجود در برخی سیستمعاملها اعمال میشود. [فهرستهای کنترل دسترسی NT به نظر نمیرسد بهویژه با موارد OS/2 سازگار باشند، بنابراین هیچ تلاشی برای سازگاری بینپلتفرمی امتیازات دسترسی صورت نمیگیرد. به هر حال مشخص نیست تحت چه شرایطی چنین چیزی ممکن است مفید واقع شود.]
- -Y
- [VMS] برخورد با
انتهای نام
فایلهای
آرشیو شده
به صورت «.nnn»
(که در آن «nnn»
یک عدد
دهدهی است)
به گونهای
که گویی
شمارههای
نسخه VMS
هستند («;nnn»).
(حالت
پیشفرض
این است که
با آنها به
عنوان نوع
فایل رفتار
شود.) مثال:
"a.b.3" -> "a.b;3".
- -$
- [MS-DOS, OS/2, NT] بازیابی برچسب حجم (volume label) در صورتی که رسانه استخراج قابل جدا شدن باشد (مثلاً یک دیسکت). دو برابر کردن گزینه (-$$) به رسانههای ثابت (دیسکهای سخت) نیز اجازه برچسبگذاری میدهد. بهطور پیشفرض، برچسبهای حجم نادیده گرفته میشوند.
- -/ extensions
- [تنها در Acorn] بازنویسی فهرست پسوندهای ارائهشده توسط متغیر محیطی Unzip$Ext. در حین استخراج، پسوندهای نام فایلی که با یکی از موارد این فهرست مطابقت داشته باشند، به جلوی نام پایه فایل استخراجشده جابهجا میشوند.
- -:
- [همه به جز Acorn, VM/CMS, MVS, Tandem] اجازه استخراج اعضای آرشیو در مکانهایی خارج از «پوشه ریشه استخراج» جاری را میدهد. به دلایل امنیتی، unzip معمولاً اجزای مسیر «دایرکتوری والد» («../») را از نام فایلهای استخراجشده حذف میکند. این ویژگی ایمنی (جدید در نسخه ۵.۵۰) مانع از آن میشود که unzip بهطور تصادفی فایلها را در نواحی «حساس» خارج از درخت فعال پوشه استخراج بنویسد. گزینه -: اجازه میدهد unzip به رفتار پیشین و آزادتر خود بازگردد، تا امکان استخراج دقیق آرشیوهای (قدیمیتر) را فراهم کند که از اجزای «../» برای ایجاد چندین درخت دایرکتوری در سطح پوشه استخراج جاری استفاده میکردند. این گزینه نوشتن صریح در دایرکتوری ریشه («/») را فعال نمیکند. برای دستیابی به این هدف، لازم است پوشه مقصد استخراج روی ریشه تنظیم شود (مثلاً -d / ). با این حال، هنگامی که گزینه -: مشخص شده باشد، همچنان امکان نوشتن ضمنی در دایرکتوری ریشه با مشخص کردن اجزای کافی «../» در درون آرشیو zip وجود دارد. از این گزینه با احتیاط بسیار زیاد استفاده کنید.
- -^
- [تنها در یونیکس] مجاز دانستن نویسههای کنترلی در نام مدخلهای استخراجشده آرشیو ZIP. در یونیکس، یک نام فایل ممکن است شامل هر کد نویسه (۸-بیتی) باشد، به استثنای دو مورد: '/' (جداکننده دایرکتوری) و NUL (0x00، نشانگر پایان رشته در C)، مگر اینکه سیستم فایل خاص قراردادهای محدودکنندهتری داشته باشد. بهطور کلی، این امر اجازه میدهد نویسههای کنترلی ASCII (یا حتی توالیهای کنترلی پیچیده) دستکم در سیستمهای فایل «بومی» یونیکس در نام فایلها گنجانده شوند. با این حال، استفاده از این «ویژگی» یونیکس ممکن است بسیار مشکوک باشد. نویسههای کنترلی گنجاندهشده در نام فایلها ممکن است هنگام نمایش بر روی صفحه نمایش توسط برخی کدهای فهرستبندی بدون پالایش کافی، عوارض جانبی ناخوشایندی ایجاد کنند. همچنین، برای کاربران عادی، کار با چنین نام فایلهایی دشوار است (برای مثال هنگامی که تلاش میکنند آن را برای عملیات باز کردن، رونوشت، انتقال یا حذف مشخص نمایند). بنابراین، unzip بهطور پیشفرض فیلتری را اعمال میکند که نویسههای کنترلی بالقوه خطرناک را از نام فایلهای استخراجشده حذف مینماید. گزینه -^ امکان نادیده گرفتن این فیلتر را در موارد نادری که نویسههای کنترلی درون نام فایل قرار است عمداً بازیابی شوند، فراهم میکند.
- -2
- [VMS] اجبار بدون قید و شرط تبدیل نام فایلها به نامهای سازگار با ODS2. حالت پیشفرض بهرهبرداری از سیستم فایل مقصد است، به طوری که بزرگی و کوچکی حروف و نویسههای توسعهیافته نام فایل را روی یک سیستم فایل مقصد ODS5 حفظ میکند؛ و پالایش نام فایل برای سازگاری با ODS2 را روی سیستم فایل مقصد ODS2 اعمال مینماید.
گزینههای محیطی (ENVIRONMENT OPTIONS)
رفتار پیشفرض unzip ممکن است از طریق گزینههای قرار دادهشده در یک متغیر محیطی اصلاح شود. این کار را میتوان با هر گزینهای انجام داد، اما احتمالاً با اصلاحکنندههای -a, -L, -C, -q, -o یا -n مفیدترین است: تنظیم unzip برای تبدیل خودکار فایلهای متنی بهطور پیشفرض، تبدیل نام فایلها از سیستمهای حروف بزرگ به حروف کوچک، تطبیق نامها بدون حساسیت به حروف، کمصداتر کردن آن، یا بازنویسی همیشگی یا عدم بازنویسی فایلها هنگام استخراج. برای نمونه، برای اینکه unzip تا حد امکان بیصدا عمل کند و فقط خطاها را گزارش دهد، میتوان از یکی از دستورهای زیر استفاده کرد:
-
شِل Bourne یونیکس: - UNZIP=-qq; export UNZIP
-
شِل C یونیکس: - setenv UNZIP -qq
-
OS/2 یا MS-DOS: - set UNZIP=-qq
-
VMS (نقلقول برای حروف کوچک): - define UNZIP_OPTS "-qq"
گزینههای محیطی، در عمل، درست مانند هر گزینه خط فرمان دیگری در نظر گرفته میشوند، با این تفاوت که عملاً اولین گزینهها در خط فرمان هستند. برای نادیده گرفتن یا لغو یک گزینه محیطی، میتوان از «عملگر منها» برای حذف آن استفاده کرد. به عنوان مثال، برای لغو یکی از پرچمهای بیصدا در مثال بالا، از دستور زیر استفاده کنید:
unzip --q[گزینههای دیگر] zipfile
خط تیره اول نویسه معمول تعویض گزینه است، و دومی یک علامت منهاست که بر گزینه q عمل میکند. بدین ترتیب اثر در اینجا لغو یک واحد از بیصدایی است. برای لغو هر دو پرچم بیصدا، میتوان از دو (یا چند) علامت منها استفاده کرد:
unzip -t--q zipfile unzip ---qt zipfile
(هر دو معادل هستند). این ممکن است ناخوشایند یا گیجکننده به نظر برسد، اما به اندازه کافی شهودی است: صرفاً اولین خط تیره را نادیده بگیرید و از آنجا ادامه دهید. این همچنین با رفتار nice(1) در یونیکس سازگار است.
همانطور که از مثالهای بالا مشخص است، نام پیشفرض متغیر برای VMS برابر با UNZIP_OPTS است (جایی که نماد استفادهشده برای نصب unzip به عنوان یک دستور خارجی در غیر این صورت با متغیر محیطی اشتباه گرفته میشد)، و برای سایر سیستمعاملها UNZIP است. برای سازگاری با zip(1)، متغیر UNZIPOPT نیز پذیرفته میشود (علت را نپرسید). با این حال، اگر هر دو متغیر UNZIP و UNZIPOPT تعریف شده باشند، UNZIP اولویت دارد. گزینه تشخیصی unzip (دستور -v بدون نام فایل zip) میتواند برای بررسی مقادیر تمام چهار متغیر محیطی احتمالی unzip و zipinfo استفاده شود.
متغیر منطقه زمانی (TZ) باید مطابق با منطقه زمانی محلی تنظیم شود تا -f و -u بهدرستی کار کنند. برای جزئیات به شرح -f در بالا مراجعه کنید. این متغیر همچنین ممکن است برای تنظیم صحیح برچسبهای زمانی فایلهای استخراجشده لازم باشد. پورت WIN32 (شامل Win9x/ME/NT4/2K/XP/2K3) از برنامه unzip، پیکربندی منطقه زمانی را با فرض اینکه در Control Panel بهدرستی تنظیم شده باشد از رجیستری دریافت میکند. متغیر TZ برای این پورت نادیده گرفته میشود.
رمزگشایی (DECRYPTION)
آرشیوهای رمزگذاریشده بهطور کامل توسط نرمافزار Info-ZIP پشتیبانی میشوند، اما به دلیل محدودیتهای صادراتی ایالات متحده، ممکن است پشتیبانی از رمزگذاری/رمزگشایی در باینری کامپایلشده شما غیرفعال شده باشد. با این حال، از بهار سال ۲۰۰۰، محدودیتهای صادراتی ایالات متحده برداشته شده است، و آرشیوهای کد منبع ما اکنون شامل کد کامل رمزنگاری هستند. در صورتی که به توزیعهای باینری با پشتیبانی فعال از رمزنگاری نیاز دارید، به فایل «WHERE» در هر توزیع منبع یا باینری Info-ZIP برای مکانهایی هم در داخل و هم خارج از ایالات متحده مراجعه کنید.
برخی از نسخههای کامپایلشده unzip ممکن است از رمزگشایی پشتیبانی نکنند. برای بررسی یک نسخه از نظر پشتیبانی از رمزنگاری، یا سعی کنید یک آرشیو رمزگذاریشده را آزمایش یا استخراج نمایید، یا صفحه تشخیصی unzip را (به گزینه -v در بالا مراجعه کنید) برای عبارت «[decryption]» به عنوان یکی از گزینههای ویژه کامپایل بررسی کنید.
همانطور که در بالا اشاره شد، گزینه -P ممکن است برای ارائه یک گذرواژه در خط فرمان استفاده شود، اما به بهای کاهش امنیت. روش ترجیحی رمزگشایی صرفاً استخراج به شیوه عادی است؛ اگر عضوی از فایل zip رمزگذاری شده باشد، unzip بدون بازتاب آنچه تایپ میشود، گذرواژه را درخواست میکند. برنامه unzip تا زمانی که گذرواژه معتبر به نظر برسد، با آزمایش یک سربرگ ۱۲-بایتی روی هر فایل، به استفاده از همان گذرواژه ادامه میدهد. گذرواژه صحیح همواره با سربرگ همخوانی خواهد داشت، اما یک شانس ۱ در ۲۵۶ نیز وجود دارد که یک گذرواژه نادرست نیز همینگونه رفتار کند. (این یک ویژگی امنیتی قالب فایل zip متعلق به PKWARE است؛ این ویژگی به جلوگیری از حملات brute-force کمک میکند که در غیر این صورت ممکن بود با آزمایش صرفاً سربرگ به سرعت بسیار بالایی دست یابند.) در حالتی که گذرواژه نادرستی داده شود اما آزمون سربرگ را پشت سر بگذارد، یا یک CRC نادرست برای دادههای استخراجشده تولید میشود یا unzip در حین استخراج با خطا مواجه خواهد شد، زیرا بایتهای «رمزگشاییشده» جریان داده فشرده معتبری را تشکیل نمیدهند.
اگر اولین گذرواژه در آزمون سربرگ روی فایلی شکست بخورد، unzip گذرواژه دیگری را درخواست میکند، و این روند ادامه مییابد تا تمام فایلها استخراج شوند. اگر گذرواژه مشخص نباشد، وارد کردن یک گذرواژه تهی (یعنی فشردن مستقیم کلید بازگشت یا «Enter») به عنوان نشانهای برای صرفنظر کردن از تمام اعلانهای بعدی در نظر گرفته میشود. پس از آن تنها فایلهای رمزگذارینشده در آرشیو(ها) استخراج خواهند شد. (در واقع، این کاملاً درست نیست؛ نسخههای قدیمیتر zip(1) و zipcloak(1) اجازه گذرواژههای تهی را میدادند، بنابراین unzip هر فایل رمزگذاریشده را بررسی میکند تا ببیند آیا گذرواژه تهی کار میکند یا خیر. این ممکن است همانطور که در بالا ذکر شد، منجر به «مثبت کاذب» و خطاهای استخراج شود.)
آرشیوهای رمزگذاریشده با گذرواژههای ۸-بیتی (برای مثال، گذرواژههای دارای نویسههای با اعراب اروپایی) ممکن است در میان سیستمها و/یا سایر برنامههای آرشیوساز قابل حمل نباشند. این مشکل ناشی از استفاده از روشهای متعدد کدگذاری برای چنین نویسههایی از جمله Latin-1 (ISO 8859-1) و صفحه کد OEM 850 است. نرمافزار DOS PKZIP 2.04g از صفحه کد OEM استفاده میکند؛ Windows PKZIP 2.50 از Latin-1 استفاده مینماید (و بنابراین با DOS PKZIP ناسازگار است)؛ Info-ZIP از صفحه کد OEM در پورتهای DOS, OS/2 و Win3.x استفاده میکند اما در سایر جاها از کدگذاری ISO (مانند Latin-1 و غیره) بهره میبرد؛ و نرمافزار WinZip 6.x اثر Nico Mak اصلاً گذرواژههای ۸-بیتی را مجاز نمیداند. برنامه UnZip 5.3 (یا جدیدتر) تلاش میکند ابتدا از مجموعه نویسههای پیشفرض (مثلاً Latin-1) استفاده کند و پس از آن مجموعه جایگزین (مثلاً صفحه کد OEM) را برای آزمایش گذرواژهها به کار گیرد. در سیستمهای EBCDIC، اگر هر دوی این موارد شکست بخورند، کدگذاری EBCDIC به عنوان آخرین راهکار آزمایش خواهد شد. (کدگذاری EBCDIC در سیستمهای غیر EBCDIC آزمایش نمیشود، زیرا هیچ آرشیوساز شناختهشدهای وجود ندارد که با استفاده از کدگذاری EBCDIC رمزگذاری کند.) کدگذاریهای نویسه ISO به جز Latin-1 پشتیبانی نمیشوند. اضافه شدن جدید پشتیبانی (تا حدی) از یونیکد (یا UTF-8) در UnZip 6.0 هنوز برای مدیریت گذرواژه رمزگذاری در unzip تطبیق داده نشده است. در سیستمهایی که از UTF-8 به عنوان کدگذاری نویسه بومی استفاده میکنند، unzip صرفاً رمزگشایی را با گذرواژه با کدگذاری UTF-8 بومی امتحان میکند؛ تلاشهای داخلی برای بررسی گذرواژه در کدگذاری ترجمهشده هنوز برای پشتیبانی از UTF-8 سازگار نشدهاند و در نتیجه با شکست مواجه خواهند شد.
مثالها (EXAMPLES)
برای استفاده از unzip جهت استخراج تمام اعضای آرشیو letters.zip در دایرکتوری جاری و زیردایرکتوریهای زیر آن، با ایجاد هرگونه زیردایرکتوری در صورت نیاز:
unzip letters
برای استخراج تمام اعضای letters.zip تنها در دایرکتوری جاری:
unzip -j letters
برای آزمودن letters.zip، با چاپ صرفاً یک پیام خلاصه مبنی بر اینکه آرشیو درست است یا خیر:
unzip -tq letters
برای آزمودن تمام فایلهای zip در دایرکتوری جاری، با چاپ صرفاً خلاصهها:
unzip -tq \*.zip
(بکاسلش قبل از ستاره تنها در صورتی لازم است که شل نویسههای عام را گسترش دهد، مانند یونیکس؛ در عوض میشد از دابل کوتیشن استفاده کرد، مانند مثالهای منبع زیر.) برای استخراج تمام اعضای letters.zip که نام آنها به .tex ختم میشود در خروجی استاندارد، با تبدیل خودکار به قرارداد پایان خط محلی و هدایت خروجی به more(1):
unzip -ca letters \*.tex | more
برای استخراج فایل باینری paper1.dvi به خروجی استاندارد و هدایت آن به یک برنامه چاپ:
unzip -p articles paper1.dvi | dvips
برای استخراج تمام فایلهای منبع فرترن و C – یعنی *.f, *.c, *.h, و Makefile – در دایرکتوری /tmp:
unzip source.zip "*.[fch]" Makefile -d /tmp
(کوتیشن دوتایی تنها در یونیکس و فقط در صورت روشن بودن قابلیت globbing ضروری است). برای استخراج تمام فایلهای منبع فرترن و C، بدون در نظر گرفتن بزرگی و کوچکی حروف (مثلاً هم *.c و هم *.C، و هرگونه makefile, Makefile, MAKEFILE یا موارد مشابه):
unzip -C source.zip "*.[fch]" makefile -d /tmp
برای استخراج هر یک از این فایلها اما با تبدیل هرگونه نام MS-DOS یا VMS با حروف بزرگ به حروف کوچک و تبدیل پایان خطوط تمام فایلها به استاندارد محلی (بدون توجه به فایلهایی که ممکن است به عنوان «باینری» مشخص شده باشند):
unzip -aaCL source.zip "*.[fch]" makefile -d /tmp
برای استخراج صرفاً نسخههای جدیدتر فایلهایی که از قبل در دایرکتوری جاری وجود دارند، بدون پرسش (توجه: مراقب استخراج یک فایل zip ایجادشده در یک منطقه زمانی در منطقهای دیگر باشید – آرشیوهای ZIP غیر از مواردی که با Zip 2.1 یا بالاتر ایجاد شدهاند فاقد اطلاعات منطقه زمانی هستند، و یک فایل «جدیدتر» از یک منطقه زمانی شرقی ممکن است در واقع قدیمیتر باشد):
unzip -fo sources
برای استخراج نسخههای جدیدتر فایلهای موجود در دایرکتوری جاری و ایجاد هر فایلی که از قبل وجود ندارد (همان هشدار مثال پیشین):
unzip -uo sources
برای نمایش یک صفحه تشخیصی که نشان میدهد کدام گزینههای unzip و zipinfo در متغیرهای محیطی ذخیره شدهاند، آیا پشتیبانی از رمزگشایی در برنامه کامپایل شده است یا خیر، کامپایلری که unzip با آن کامپایل شده چیست، و غیره:
unzip -v
در پنج مثال پایانی، فرض کنید متغیر UNZIP یا UNZIP_OPTS روی q- تنظیم شده است. برای انجام یک فهرستبندی با یک درجه بیصدا:
unzip -l file.zip
برای انجام یک فهرستبندی با دو درجه بیصدا:
unzip -ql file.zip
(توجه داشته باشید که پسوند «.zip» عموماً لازم نیست.) برای انجام یک فهرستبندی استاندارد:
unzip --ql file.zipیا
unzip -l-q file.zipیا
unzip -l--q file.zip(علامتهای منفی اضافی در گزینهها مشکلی ایجاد نمیکنند.)
نکات (TIPS)
نگهدارنده فعلی برنامه، به عنوان فردی تنبل و کارراهانداز، تعریف یک جفت نام مستعار (alias) را بسیار مفید میداند: tt برای «unzip -tq» و ii برای «unzip -Z» (یا «zipinfo»). سپس فرد میتواند صرفاً دستور «tt zipfile» را برای آزمودن یک آرشیو تایپ کند، کاری که عادت کردن به انجام آن بسیار ارزشمند است. با کمی شانس، unzip پیام «No errors detected in compressed data of zipfile.zip» (هیچ خطایی در دادههای فشرده شناسایی نشد) را گزارش میدهد که پس از آن میتوان نفسی به راحتی کشید.
همچنین نگهدارنده تنظیم متغیر محیطی UNZIP را روی «-aL» مفید میداند و وسوسه شده است که «-C» را نیز به آن اضافه کند. متغیر ZIPINFO او روی «-z» تنظیم شده است.
پیامهای تشخیصی (DIAGNOSTICS)
وضعیت خروج (یا سطح خطا) به کدهای خروج تعریفشده توسط PKWARE نزدیک است و مقادیر زیر را به خود میگیرد، به جز در VMS:
- 0
- عادی؛ هیچ خطا یا هشداری شناسایی نشد.
- 1
- یک یا چند خطای هشداردهنده رخ داده است، اما پردازش به هر حال با موفقیت به پایان رسید. این شامل فایلهای zip میشود که در آنها یک یا چند فایل به دلیل روش فشردهسازی پشتیبانینشده یا رمزگذاری با گذرواژه ناشناخته نادیده گرفته شده است.
- 2
- یک خطای عمومی در قالب فایل zip شناسایی شد. ممکن است پردازش به هر حال با موفقیت به پایان رسیده باشد؛ برخی از فایلهای zip خرابِ ایجادشده توسط سایر آرشیوسازها راهحلهای سادهای دارند.
- 3
- یک خطای شدید در قالب فایل zip شناسایی شد. پردازش احتمالاً بلافاصله متوقف شده است.
- 4
- برنامه unzip در حین مقداردهی اولیه قادر به تخصیص حافظه برای یک یا چند بافر نبود.
- 5
- برنامه unzip قادر به تخصیص حافظه نبود یا نتوانست یک tty برای خواندن گذرواژه(های) رمزگشایی به دست آورد.
- 6
- برنامه unzip در حین بازگشایی دادهها روی دیسک قادر به تخصیص حافظه نبود.
- 7
- برنامه unzip در حین بازگشایی درون حافظه قادر به تخصیص حافظه نبود.
- 8
- [در حال حاضر استفاده نمیشود]
- 9
- فایلهای zip مشخصشده یافت نشدند.
- 10
- گزینههای نامعتبر در خط فرمان مشخص شدهاند.
- 11
- هیچ فایل منطبقی یافت نشد.
- 50
- دیسک در حین استخراج پر است (یا پر شد).
- 51
- انتهای آرشیو ZIP به صورت زودهنگام مشاهده شد.
- 80
- کاربر برنامه unzip را پیش از موعد با control-C (یا مشابه آن) متوقف کرد.
- 81
- آزمایش یا استخراج یک یا چند فایل به دلیل روشهای فشردهسازی پشتیبانینشده یا رمزگشایی پشتیبانینشده با شکست مواجه شد.
- 82
- هیچ فایلی به دلیل گذرواژه(های) رمزگشایی نادرست پیدا نشد. (با این حال، اگر حتی یک فایل با موفقیت پردازش شود، وضعیت خروج ۱ خواهد بود.)
سیستمعامل VMS مقادیر بازگشتی استاندارد یونیکس (یا PC) را به عنوان مواردی متفاوت و ترسناکتر تفسیر میکند، بنابراین unzip در عوض آنها را به کدهای وضعیت به سبک VMS نگاشت مینماید. نگاشت فعلی به این صورت است: ۱ (موفقیت) برای خروج عادی، 0x7fff0001 برای خطاهای هشداردهنده، و (0x7fff000? + 16*normal_unzip_exit_status) برای سایر خطاها، که در آن `?' برای مقادیر ۲، ۹-۱۱ و ۸۰-۸۲ در unzip برابر با ۲ (خطا) و برای باقی موارد (۳-۸، ۵۰، ۵۱) برابر با ۴ (خطای مهلک) است. علاوه بر این، یک گزینه کامپایل برای گسترش این رفتار وجود دارد: تعریف RETURN_CODES منجر به توضیحی خوانا برای انسان درباره معنای وضعیت خطا میشود.
اشکالات (BUGS)
آرشیوهای چندبخشی هنوز پشتیبانی نمیشوند، مگر در ترکیب با zip. (تمام بخشها باید به ترتیب به یکدیگر متصل شوند، و سپس دستور «zip -F» (برای zip 2.x) یا «zip -FF» (برای zip 3.x) باید روی آرشیو پیوستهشده اجرا شود تا آن را «اصلاح» کند. همچنین، zip 3.0 و نسخههای جدیدتر میتوانند آرشیوهای چندبخشی (تقسیمشده) را با استفاده از دستور «zip -s- inarchive -O outarchive» به یک آرشیو تکفایلی ترکیب کنند. برای اطلاعات بیشتر به صفحه راهنمای zip 3 مراجعه کنید.) این مورد قطعاً در انتشار اصلی بعدی اصلاح خواهد شد.
آرشیوهایی که از ورودی استاندارد خوانده میشوند هنوز پشتیبانی نمیشوند، مگر با funzip (و آن هم تنها اولین عضو آرشیو قابل استخراج است).
آرشیوهای رمزگذاریشده با گذرواژههای ۸-بیتی (برای مثال، گذرواژههای دارای نویسههای با اعراب اروپایی) ممکن است در میان سیستمها و/یا سایر برنامههای آرشیوساز قابل حمل نباشند. بحث مربوطه در بخش رمزگشایی (DECRYPTION) در بالا را ببینید.
گزینه -M (مشابه دستور «more») در unzip تلاش میکند شکستن خودکار خطوط طولانی را در نظر بگیرد. با این حال، کد ممکن است در تشخیص مکانهای صحیح شکستن خط ناموفق باشد. نخست، نویسههای TAB (و توالیهای کنترلی مشابه) در نظر گرفته نمیشوند و به عنوان نویسههای معمولی قابل چاپ تلقی میگردند. دوم، بسته به سیستم / پورت سیستمعامل واقعی، unzip ممکن است هندسه واقعی صفحه نمایش را تشخیص ندهد بلکه به ابعاد پیشفرض «متداول» اتکا کند. مدیریت صحیح تبها نیازمند پیادهسازی پرسوجویی برای پیکربندی واقعی تبها روی کنسول خروجی است.
تاریخها، زمانها و مجوزهای دایرکتوریهای ذخیرهشده به جز در یونیکس بازیابی نمیشوند. (در Windows NT و جانشینان آن، برچسبهای زمانی اکنون بازیابی میشوند.)
[MS-DOS] هنگام استخراج یا آزمایش فایلها از یک آرشیو روی یک دیسکت فلاپی معیوب، اگر گزینه «Fail» از پیام «Abort, Retry, Fail?» داس انتخاب شود، نسخههای قدیمیتر unzip ممکن است سیستم را متوقف کرده و نیازمند راهاندازی مجدد (reboot) نمایند. به نظر میرسد این مشکل رفع شده است، اما control-C (یا control-Break) همچنان میتواند برای متوقف کردن unzip استفاده شود.
تحت DEC Ultrix، برنامه unzip گاهی اوقات روی فایلهای طولانی zip دچار خطا میشد (CRC نادرست، که همیشه قابل تکرار نبود). این امر ظاهراً به دلیل یک باگ سختافزاری (حافظه کش) یا باگ سیستمعامل (مدیریت نادرست خطاهای صفحه؟) بود. از آنجا که Ultrix به نفع Digital Unix (OSF/1) کنار گذاشته شده است، این مورد ممکن است دیگر مشکلی نباشد.
[یونیکس] فایلهای ویژه یونیکس مانند بافرهای FIFO (لولههای نامگذاریشده)، دستگاههای بلوکی و دستگاههای نویسهای حتی اگر به نوعی در فایل zip بازنمایی شده باشند بازیابی نمیشوند، و فایلهای دارای پیوند سخت (hard-link) نیز مجدداً پیوند داده نمیشوند. اساساً تنها انواع فایلهایی که توسط unzip بازیابی میشوند، فایلهای عادی، دایرکتوریها و پیوندهای نمادین (نرم) هستند.
[OS/2] صفات توسعهیافته برای دایرکتوریهای موجود تنها در صورتی بهروزرسانی میشوند که گزینه -o («بازنویسی همه») داده شود. این محدودیتی در سیستمعامل است؛ زیرا دایرکتوریها تنها یک زمان ایجاد مرتبط با خود دارند، unzip راهی برای تعیین اینکه آیا صفات ذخیرهشده جدیدتر یا قدیمیتر از موارد روی دیسک هستند ندارد. در عمل این ممکن است به معنای نیاز به یک روش دو مرحلهای باشد: ابتدا آرشیو را بهطور عادی از حالت فشرده خارج کنید (با یا بدون تازهسازی/بهروزرسانی فایلهای موجود)، سپس فقط مدخلهای دایرکتوری را بازنویسی نمایید (مثلاً «unzip -o foo */»).
[VMS] هنگام استخراج در یک دایرکتوری دیگر، تنها نحو [.foo] برای گزینه -d پذیرفته میشود؛ نحو ساده یونیکس foo بدون هشدار نادیده گرفته میشود (همانطور که نحو کمتر متداول foo.dir در VMS نادیده گرفته میشود).
[VMS] هنگامی که فایل در حال استخراج از قبل وجود دارد، اعلان پرسش unzip تنها امکان رد کردن، بازنویسی یا تغییر نام را میدهد؛ علاوه بر این باید گزینهای برای ایجاد نسخه جدیدی از فایل وجود داشته باشد. در واقع، انتخاب گزینه «بازنویسی» یک نسخه جدید ایجاد میکند؛ نسخه قدیمی بازنویسی یا حذف نمیشود.
گزارش باگها (REPORTING BUGS)
گزارش
باگها و
مشکلات را
به نشانی
زیر ارسال
کنید:
http://www.info-zip.org/pub/infozip
یا از طریق
سایت Info-ZIP در SourceForge
اقدام
فرمایید.
همچنین ببینید (SEE ALSO)
funzip(1), zip(1), zipcloak(1), zipgrep(1), zipinfo(1), zipnote(1), zipsplit(1)
آدرس وب (URL)
صفحه خانگی Info-ZIP در حال حاضر در نشانی زیر قرار دارد:
http://www.info-zip.org/pub/infozip/یا
ftp://ftp.info-zip.org/pub/infozip/ .
نویسنده (AUTHOR)
نویسندگان اصلی Info-ZIP (اعضای نیمهفعال فعلی کارگروه Zip-Bugs) عبارتند از: Ed Gordon (برنامه Zip، نگهداری کلی، کد مشترک، Zip64، Win32، Unix، Unicode)؛ Christian Spieler (هماهنگی نگهداری UnZip، VMS، MS-DOS، Win32، کد مشترک، یکپارچهسازی کلی و بهینهسازی Zip و UnZip)؛ Onno van der Linden (برنامه Zip)؛ Mike White (محیطهای Win32، رابط گرافیکی ویندوز، DLLهای ویندوز)؛ Kai Uwe Rommel (سیستمهای OS/2، Win32)؛ Steven M. Schweda (سیستمهای VMS، Unix، پشتیبانی از ویژگیهای جدید)؛ Paul Kienitz (سیستمهای Amiga، Win32، Unicode)؛ Chris Herborth (سیستمهای BeOS، QNX، Atari)؛ Jonathan Hudson (سیستمهای SMS/QDOS)؛ Sergio Monesi (سیستم Acorn RISC OS)؛ Harald Denker (سیستمهای Atari، MVS)؛ John Bush (سیستمهای Solaris، Amiga)؛ Hunter Goatley (سیستم VMS، نگهداری سایت Info-ZIP)؛ Steve Salisbury (سیستم Win32)؛ Steve Miller (رابط گرافیکی Windows CE)، Johnny Lee (سیستمهای MS-DOS، Win32، Zip64)؛ و Dave Smith (سیستم Tandem NSK).
افراد زیر از اعضای پیشین گروه توسعه Info-ZIP بودند و مشارکتهای عمدهای در بخشهای کلیدی کد فعلی داشتهاند: Greg ``Cave Newt'' Roelofs (برنامه UnZip، بازگشایی فشردهسازی unshrink)؛ Jean-loup Gailly (فشردهسازی deflate)؛ Mark Adler (بازگشایی فشردهسازی inflate، برنامه fUnZip).
نویسنده کد اصلی unzip که کدهای Info-ZIP بر پایه آن بنا شد، Samuel H. Smith است؛ Carl Mascott نخستین پورت یونیکس را انجام داد؛ و David P. Kirschbaum در روزهای نخستین، Info-ZIP را سازماندهی و رهبری نمود و Keith Petersen میزبانی لیست پستی اصلی را در WSMR-SimTel20 بر عهده داشت. فهرست کامل مشارکتکنندگان در UnZip بسیار طولانی شده است؛ لطفاً برای نسخهای نسبتاً کامل به فایل CONTRIBS در توزیع کد منبع UnZip مراجعه کنید.
حق نشر (COPYRIGHT)
حق نشر © 1990-2009 Info-ZIP. تمامی حقوق محفوظ است.
برای
اطلاع از
شرایط
استفاده،
به فایل
همراه LICENSE،
نسخه 2009-Jan-02 یا
جدیدتر (که
محتویات آن
در unzip.h نیز
گنجانده
شده است)
مراجعه
کنید. اگر به
هر دلیلی
تمامی این
فایلها در
دسترس
نباشند،
مجوز Info-ZIP را
میتوان در
نشانی زیر
نیز یافت:
ftp://ftp.info-zip.org/pub/infozip/license.html
توزیع و استفاده تحت شرایط مجوز Info-ZIP مجاز است.
نسخهها (VERSIONS)
- v1.2 15 Mar 89
- Samuel H. Smith
- v2.0 9 Sep 89
- Samuel H. Smith
- v2.x fall 1989
- مشارکتکنندگان پرتعداد Usenet
- v3.0 1 May 90
- Info-ZIP (DPK، گردآورنده)
- v3.1 15 Aug 90
- Info-ZIP (DPK، گردآورنده)
- v4.0 1 Dec 90
- Info-ZIP (GRR، نگهدارنده)
- v4.1 12 May 91
- Info-ZIP
- v4.2 20 Mar 92
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.0 21 Aug 92
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.01 15 Jan 93
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.1 7 Feb 94
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.11 2 Aug 94
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.12 28 Aug 94
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.2 30 Apr 96
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.3 22 Apr 97
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.31 31 May 97
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.32 3 Nov 97
- Info-ZIP (زیرگروه Zip-Bugs، GRR)
- v5.4 28 Nov 98
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v5.41 16 Apr 00
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v5.42 14 Jan 01
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v5.5 17 Feb 02
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v5.51 22 May 04
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v5.52 28 Feb 05
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
- v6.0 20 Apr 09
- Info-ZIP (زیرگروه Zip-Bugs، SPC)
| 20 April 2009 (v6.0) | Info-ZIP |