COMPRESS(1) General Commands Manual COMPRESS(1)

compress, uncompress, zcat - فشرده‌سازی و باز کردن داده‌ها

compress [ -f ] [ -k ] [ -v ] [ -c ] [ -V ] [ -r ] [ -b bits ] [ -- ] [ name ... ]
uncompress [ -f ] [ -k ] [ -v ] [ -c ] [ -V ] [ -- ] [ name ... ]
zcat [ -V ] [ -- ] [ name ... ]

برنامه compress با استفاده از روش کدگذاری تطبیقی Lempel-Ziv اندازه فایل‌های نام‌برده را کاهش می‌دهد. در صورت امکان، هر فایل با فایلی با پسوند .Z جایگزین می‌شود، در حالی که همان حالت‌های مالکیت، زمان‌های دسترسی و تغییر را حفظ می‌کند. اگر هیچ فایلی مشخص نشده باشد، ورودی استاندارد به خروجی استاندارد فشرده می‌شود. compress تنها برای فشرده‌سازی فایل‌های معمولی تلاش خواهد کرد؛ به‌ویژه پیوندهای نمادین را نادیده می‌گیرد. اگر فایلی چندین پیوند سخت داشته باشد، compress از فشرده‌سازی آن خودداری می‌کند، مگر آنکه پرچم -f داده شده باشد.

اگر -f داده نشود و compress در پیش‌زمینه اجرا شود، از کاربر پرسیده می‌شود که آیا فایلی که از پیش وجود دارد رونویسی شود یا خیر.

فایل‌های فشرده‌شده را می‌توان با استفاده از uncompress یا zcat به حالت اصلی آن‌ها بازگرداند.

برنامه uncompress فهرستی از فایل‌ها را در خط فرمان خود دریافت می‌کند و هر فایلی را که نامش با .Z پایان می‌یابد و با عدد جادویی صحیح شروع می‌شود، با یک فایل غیرفشرده بدون .Z جایگزین می‌کند. فایل غیرفشرده، حالت، مالکیت و برچسب‌های زمانی فایل فشرده را خواهد داشت.

گزینه -k باعث می‌شود که compress/uncompress فایل‌های ورودی را به جای حذف خودکار، نگه دارند.

گزینه -c باعث می‌شود compress/uncompress در خروجی استاندارد بنویسند؛ هیچ فایلی تغییر نمی‌کند.

دستور zcat همانند uncompress -c است. zcat فهرستی از فایل‌های روی خط فرمان یا ورودی استاندارد خود را از حالت فشرده خارج می‌کند و داده‌های غیرفشرده را در خروجی استاندارد می‌نویسد. zcat فایل‌هایی را که عدد جادویی صحیح دارند، بدون توجه به اینکه دارای پسوند .Z باشند یا نه، از حالت فشرده خارج می‌کند.

اگر پرچم -r مشخص شده باشد، compress به‌صورت بازگشتی عمل خواهد کرد. اگر هر یک از نام‌های فایل ارائه‌شده در خط فرمان دایرکتوری باشند، compress وارد آن دایرکتوری شده و تمام فایل‌هایی را که در آنجا می‌یابد فشرده می‌کند. هنگام فشرده‌سازی، فایل‌هایی که پیش‌تر فشرده شده‌اند نادیده گرفته می‌شوند و هنگام باز کردن، فایل‌هایی که پیش‌تر غیرفشرده شده‌اند نادیده گرفته می‌شوند.

پرچم -V به هر یک از این برنامه‌ها دستور می‌دهد که پیش از انجام هرگونه فشرده‌سازی یا باز کردن، نسخه و سطح وصله (patchlevel) خود را به همراه هرگونه پرچم پیش‌پردازنده‌ای که در حین کامپایل تعیین شده است، روی stderr چاپ کنند.

برنامه compress از الگوریتم تغییریافتهٔ Lempel-Ziv که در مقاله «A Technique for High Performance Data Compression»، نوشته Terry A. Welch در IEEE Computer, دوره ۱۷، شماره ۶ (ژوئن ۱۹۸۴)، صفحات ۸-۱۹ شناسانده شد، استفاده می‌کند. زیررشته‌های رایج در فایل ابتدا با کدهای ۹ بیتی از ۲۵۷ به بالا جایگزین می‌شوند. هنگامی که به کد ۵۱۲ می‌رسد، الگوریتم به کدهای ۱۰ بیتی تغییر وضعیت می‌دهد و تا زمانی که به محدودیت مشخص‌شده با پرچم -b برسد (پیش‌فرض ۱۶)، به استفاده از بیت‌های بیشتر ادامه می‌دهد. مقدار bits باید بین ۹ و ۱۶ باشد. این مقدار پیش‌فرض می‌تواند در کد منبع تغییر یابد تا امکان اجرای compress روی رایانه‌های کوچک‌تر فراهم شود.

پس از رسیدن به محدودیت bits، برنامه compress به‌صورت دوره‌ای نسبت فشرده‌سازی را بررسی می‌کند. اگر این نسبت رو به افزایش باشد، compress به استفاده از لغت‌نامه کدهای موجود ادامه می‌دهد. با این حال، اگر نسبت فشرده‌سازی کاهش یابد، compress جدول زیررشته‌ها را دور می‌ریزد و آن را از ابتدا بازسازی می‌کند. این کار به الگوریتم اجازه می‌دهد تا با «بلاک» بعدی فایل سازگار شود.

توجه داشته باشید که پرچم -b برای uncompress حذف شده است، زیرا پارامتر bits مشخص‌شده در زمان فشرده‌سازی، در درون خروجی به همراه یک عدد جادویی کدگذاری می‌شود تا اطمینان حاصل شود که نه باز کردن داده‌های تصادفی و نه فشرده‌سازی مجدد داده‌های فشرده رخ ندهد.

میزان فشرده‌سازی حاصل به اندازه ورودی، تعداد bits به ازای هر کد، و توزیع زیررشته‌های رایج بستگی دارد. به‌طور معمول، متونی مانند کد منبع یا انگلیسی ۵۰ تا ۶۰ درصد کاهش حجم پیدا می‌کنند. میزان فشرده‌سازی معمولاً بسیار بهتر از روش کدگذاری هافمن (به‌کاررفته در pack) یا کدگذاری تطبیقی هافمن (compact) بوده و زمان کمتری برای محاسبه نیاز دارد.

تحت گزینه -v، پیامی چاپ می‌شود که درصد کاهش حجم را برای هر فایل فشرده‌شده اعلام می‌کند.

از -- می‌توان برای پایان دادن به پردازش گزینه‌ها و در نظر گرفتن تمام آرگومان‌های باقی‌مانده به عنوان مسیر استفاده کرد.

وضعیت خروج در حالت معمول 0 است؛ اگر اندازه آخرین فایل پس از (تلاش برای) فشرده‌سازی بزرگ‌تر شود، وضعیت خروج 2 خواهد بود؛ اگر خطایی رخ دهد، وضعیت خروج 1 است.

Usage: compress [-dfvcVr] [-b maxbits] [file ...]
گزینه‌های نامعتبری در خط فرمان مشخص شده‌اند.
Missing maxbits
مقدار maxbits باید پس از -b بیاید.
file: not in compressed format
فایل مشخص‌شده برای uncompress فشرده نشده است.
file: compressed with xx bits, can only handle yy bits
فایل file توسط برنامه‌ای فشرده شده است که می‌توانست با bits بیشتری نسبت به کد compress در این رایانه کار کند. فایل را با مقدار bits کوچک‌تری دوباره فشرده کنید.
file: already has .Z suffix -- no change
فرض بر این است که فایل از پیش فشرده است. نام فایل را تغییر دهید و دوباره تلاش کنید.
file: filename too long to tack on .Z
فایل را نمی‌توان فشرده کرد زیرا نام آن طولانی‌تر از ۱۲ نویسه است. نام آن را تغییر دهید و دوباره تلاش کنید. این پیام در سیستم‌های BSD رخ نمی‌دهد.
file already exists; do you wish to overwrite (y or n)?
اگر می‌خواهید فایل خروجی جایگزین شود پاسخ «y» بدهید؛ در غیر این صورت «n».
uncompress: corrupt input
یک خطای نقض SIGSEGV شناسایی شد که معمولاً نشان می‌دهد فایل ورودی خراب شده است.
Compression: xx.xx%
درصد صرفه‌جویی حاصل از فشرده‌سازی ورودی. (تنها برای -v معتبر است.)
-- not a regular file or directory: ignored
هنگامی که فایل ورودی یک فایل معمولی یا دایرکتوری نباشد (مانند پیوند نمادین، سوکت، FIFO، فایل دستگاه)، دست‌نخورده باقی می‌ماند.
-- has xx other links: unchanged
فایل ورودی دارای پیوند است؛ دست‌نخورده باقی می‌ماند. برای اطلاعات بیشتر ln(1) را ببینید. از پرچم -f برای اجبار به فشرده‌سازی فایل‌های دارای چندین پیوند استفاده کنید.
-- file unchanged
هیچ صرفه‌جویی با فشرده‌سازی حاصل نشد. ورودی دست‌نخورده باقی می‌ماند.

اگرچه فایل‌های فشرده بین ماشین‌هایی با حافظه بزرگ سازگار هستند، اما -b12 باید برای انتقال فایل به معماری‌هایی با فضای داده پردازش کوچک (۶۴ کیلوبایت یا کمتر، همان‌طور که در سری DEC PDP، اینتل 80286 و غیره مشاهده می‌شود) استفاده شود.

pack(1), compact(1)

local