FUNZIP(1L) FUNZIP(1L)

funzip - فیلتری برای استخراج از یک بایگانی ZIP در یک pipe

funzip [-password] [input[.zip|.gz]]

[-password]
گذرواژهٔ اختیاری در صورتی که بایگانی ZIP رمزگذاری شده باشد. ممکن است رمزگشایی در برخی سامانه‌ها پشتیبانی نشود. برای جزئیات بیشتر به بخش «توضیحات» مراجعه کنید.
[input[.zip|.gz]]
مشخص کردن اختیاری فایل بایگانی ورودی. برای جزئیات به بخش «توضیحات» مراجعه کنید.

برنامهٔ funzip بدون آرگومان فایل به عنوان یک فیلتر عمل می‌کند؛ به این معنا که فرض می‌کند یک بایگانی ZIP (یا یک فایل فشرده‌شده با gzip(1)) از طریق یک لوله به ورودی استاندارد هدایت می‌شود، و نخستین عضو بایگانی را در stdout استخراج می‌کند. هنگامی که stdin از یک دستگاه tty باشد، funzip فرض می‌کند که این نمی‌تواند جریانی از داده‌های فشرده‌شدهٔ (دودویی) باشد و در عوض یک متن راهنمای کوتاه نمایش می‌دهد. اگر آرگومان فایل وجود داشته باشد، ورودی به جای stdin از فایل مشخص‌شده خوانده می‌شود.

گذرواژه برای فایل‌های zip رمزگذاری‌شده می‌تواند در خط فرمان (پیش از نام فایل، در صورت وجود) با قرار دادن یک خط تیره (-) در ابتدای گذرواژه مشخص شود. توجه داشته باشید که این کار در بسیاری از سیستم‌ها یک مخاطرهٔ امنیتی به حساب می‌آید؛ فرایندهای در حال اجرا معمولاً از طریق دستورهای ساده (مانند ps(1) در Unix) قابل مشاهده هستند و تاریخچهٔ خط فرمان نیز ممکن است خوانده شود. اگر نخستین عضو فایل zip رمزگذاری شده باشد و هیچ گذرواژه‌ای در خط فرمان مشخص نشده باشد، گذرواژه از کاربر درخواست می‌شود و گذرواژه در کنسول نمایش (echo) داده نخواهد شد.

با توجه به محدودیت استخراج تک‌عضو، funzip بیشترین کاربرد را همراه با یک برنامهٔ بایگانی‌ساز ثانویه مانند tar(1) دارد. بخش بعدی شامل مثالی است که این کاربرد را در مورد پشتیبان‌گیری از دیسک روی نوار مغناطیسی نشان می‌دهد.

برای استفاده از funzip جهت استخراج نخستین فایل عضو بایگانی test.zip و ارسال آن از طریق لوله به more(1):

funzip test.zip | more

برای استفاده از funzip جهت آزمایش نخستین فایل عضو test.zip (هر خطایی در خروجی استاندارد خطا گزارش خواهد شد):

funzip test.zip > /dev/null

برای استفاده از zip و funzip به جای compress(1) و zcat(1) (یا gzip(1L) و gzcat(1L)) جهت پشتیبان‌گیری روی نوار:

tar cf - . | zip -7 | dd of=/dev/nrst0 obs=8k
dd if=/dev/nrst0 ibs=8k | funzip | tar xf -

(که در آن، برای نمونه، nrst0 یک درایو نوار SCSI است).

هنگامی که یک فایل رمزگذاری‌شده از طریق لوله به more فرستاده می‌شود و به funzip اجازه داده می‌شود تا گذرواژه را درخواست کند، ممکن است ترمینال گاهی در وضعیت عدم نمایش کاراکترها (non-echo) باقی بماند. ظاهراً این امر ناشی از یک شرایط رقابتی (race condition) میان دو برنامه است؛ funzip وضعیت ترمینال را پیش از اینکه more وضعیت آن را بخواند به non-echo تغییر می‌دهد، و سپس more پیش از خروج ترمینال را به این حالت «بازمی‌گرداند». برای بازیابی، funzip را روی همان فایل اجرا کنید اما خروجی را به جای لوله‌کشی به more، به /dev/null هدایت کنید؛ پس از درخواست مجدد گذرواژه، funzip ترمینال را به درستی تنظیم مجدد خواهد کرد.

در حال حاضر هیچ راهی برای استخراج عضوی به جز نخستین عضو از یک بایگانی ZIP وجود ندارد. این قابلیت در صورتی که یک بایگانی ZIP درون بایگانی دیگری گنجانده شده باشد مفید خواهد بود. در مواردی که نخستین عضو یک دایرکتوری باشد، funzip صرفاً دایرکتوری را ایجاد کرده و خارج می‌شود.

عملکرد funzip باید در نسخه‌های آینده به خود unzip اضافه شود.

gzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zipinfo(1L), zipnote(1L), zipsplit(1L)

صفحهٔ اصلی Info-ZIP در حال حاضر در نشانی زیر قرار دارد:

http://www.info-zip.org/pub/infozip

یا

ftp://ftp.info-zip.org/pub/infozip .

Mark Adler (Info-ZIP)

20 April 2009 (v3.95) Info-ZIP