← man/archiving_and_compression
uncompress — man uncompress — 80×24
ugur@toprak:~/man/archiving_and_compression$man uncompress
Bölüm 1 Arşivleme & Sıkıştırma

uncompress

veriyi sıkıştırır ve genişletir

Sözdizimi

      compress [-fv] [-b bits] [dosya ...]
      compress -c [-b bits] [dosya]
      uncompress [-fv] [dosya ...]
      uncompress -c [dosya ...]

Açıklama

compress yardımcı aracı, uyarlanabilir Lempel-Ziv kodlaması kullanarak dosyaların boyutunu azaltır. Her dosya, sonuna .Z uzantısı eklenerek aynı adla yeniden adlandırılır. .Z uzantısına sahip bir dosya argümanı, diğer argümanlar işlendikten sonra hatalı bir çıkışa neden olması dışında yok sayılır. Sıkıştırma işlemi dosyanın boyutunu azaltmayacaksa dosya yok sayılır.

uncompress yardımcı aracı, sıkıştırılmış dosyaları orijinal hallerine geri döndürür ve .Z uzantılarını silerek dosyaları yeniden adlandırır. Bir dosya belirlemesinin dosyanın .Z uzantısını içermesi gerekmez. Dosya sistemindeki dosya adının .Z uzantısı yoksa, dosya sıkıştırmadan çıkarılmayacak ve diğer argümanlar işlendikten sonra hatalı bir çıkışa neden olacaktır.

Dosyaları yeniden adlandırmak dosyaların üzerine yazılmasına neden olacaksa ve standart girdi aygıtı bir terminal ise, kullanıcıdan (standart hata çıktısı üzerinde) onay istenir. Bilgi istemi mümkün değilse veya onay alınamazsa dosyaların üzerine yazılmaz.

Değişiklik süresi, erişim süresi, dosya bayrakları, dosya modu, kullanıcı kimliği (UID) ve grup kimliği (GID) izinlerin elverdiği ölçüde yeni dosyada korunur.

Hiçbir dosya belirtilmezse veya bir dosya argümanı tek bir tire ('-') ise, standart girdi sıkıştırılır veya standart çıktıya açılır (uncompress). Girdi ve çıktı dosyalarından herhangi biri normal dosya değilse, boyutta küçülme ve dosya üzerine yazma kontrolleri gerçekleştirilmez, girdi dosyası silinmez ve girdi dosyasının öznitelikleri çıktı dosyasında korunmaz.

Seçenekler aşağıdaki gibidir:

  • -b bits: Kod boyutu (aşağıya bakın), 9..16 aralığında olması gereken bits değeriyle sınırlandırılır. Varsayılan değer 16'dır.

  • -c: Sıkıştırılmış veya açılmış çıktı standart çıktıya yazılır. Hiçbir dosya değiştirilmez. -v seçeneği yok sayılır. Sonuçlar orijinalinden daha büyük olacak olsa bile sıkıştırma denenir.

  • -f: Dosyalar onay istenmeden üzerine yazılır. Ayrıca compress için, boyutları aslında küçülmese bile dosyalar sıkıştırılır.

  • -v: Her dosyanın yüzde kaç küçüldüğünü yazdırır. uncompress tarafından veya -c seçeneği de kullanıldığında yok sayılır.

compress yardımcı aracı değiştirilmiş bir Lempel-Ziv algoritması kullanır. Dosyadaki yaygın alt dizeler önce 257 ve sonrasındaki 9-bitlik kodlarla değiştirilir. 512 koduna ulaşıldığında algoritma 10-bitlik kodlara geçer ve -b seçeneğiyle belirtilen sınıra veya varsayılan sınıra ulaşılana kadar daha fazla bit kullanmaya devam eder.

Sınıra ulaşıldıktan sonra compress periyodik olarak sıkıştırma oranını kontrol eder. Eğer oran artıyorsa compress mevcut kod sözlüğünü kullanmaya devam eder. Ancak sıkıştırma oranı azalırsa compress alt dize tablosunu atar ve sıfırdan yeniden oluşturur. Bu, algoritmanın dosyanın bir sonraki "bloğuna" uyum sağlamasına olanak tanır.

uncompress için -b seçeneği kullanılamaz çünkü sıkıştırma sırasında belirtilen bits parametresi, rastgele verilerin açılmasının veya sıkıştırılmış verilerin yeniden sıkıştırılmasının denenmesini önlemek amacıyla sihirli bir sayı (magic number) ile birlikte çıktının içine kodlanır.

Elde edilen sıkıştırma miktarı; girdinin boyutuna, kod başına düşen bit sayısına ve yaygın alt dizelerin dağılımına bağlıdır. Tipik olarak kaynak kod veya İngilizce gibi metinler %50-60 oranında küçülür. Sıkıştırma genellikle Huffman kodlaması (tarihi pack komutunda kullanıldığı gibi) veya uyarlanabilir Huffman kodlaması (tarihi compact komutunda kullanıldığı gibi) ile elde edilenden çok daha iyidir ve hesaplanması daha az zaman alır.

Dosya bir yumuşak veya sert bağ (link) ise, compress bunu bağın işaret ettiği dosyanın sıkıştırılmış bir kopyasıyla değiştirir. Bağın hedef dosyası sıkıştırılmamış olarak bırakılır.

Çıkış Durumu

compress ve uncompress yardımcı araçları başarı durumunda 0, bir hata oluştuğunda ise >0 değeriyle çıkar.

Bir dosyayı sıkıştırma girişimi dosyanın boyutunu küçültmeyecekse ve -f seçeneği belirtilmemişse ve başka bir hata oluşmamışsa compress yardımcı aracı 2 değeriyle çıkar.

Örnekler

     Tek bir satır metin içeren test_file adında bir dosya oluşturun:

	   echo "This is a test" > test_file

     10-bitlik bir kod kullanarak dosyanın boyutunu küçültmeyi deneyin ve çıkış durumunu gösterin:

	   $ compress -b 10 test_file
	   $ echo $?
	   2

     Dosyayı sıkıştırmayı deneyin ve sıkıştırma yüzdesini gösterin:

	   $ compress -v test_file
	   test_file: file would grow; left unmodified

     Yukarıdakiyle aynı, ancak sıkıştırmayı zorlayarak:

	   $ compress -f -v test_file
	   test_file.Z: 79% expansion

     'hello' dizgesini anında sıkıştırın ve açın:

	   $ echo "hello" | compress | uncompress
	   hello

Ayrıca Bakınız

gunzip(1), gzexe(1), gzip(1), zcat(1), zmore(1), znew(1)

Welch, Terry A., “A Technique for High Performance Data Compression”, IEEE Computer, 17:6, ss. 8-19, Haziran, 1984.

Standartlar

compress ve uncompress yardımcı araçları IEEE Std 1003.1-2001 (“POSIX.1”) standardına uygundur.

Tarihçe

compress komutu 4.3BSD ile ortaya çıkmıştır.

Hatalar

Program bağları iyi yönetemez ve bağ yönetimi seçeneklerine sahip değildir.

Bunlardan bazıları başka şekilde belgelenmemiş özellikler olarak kabul edilebilir.

compress: Yardımcı araç dosya boyutunu küçültmeyeceği için bir dosyayı sıkıştırmazsa ve sonuna .Z eklenmiş aynı ada sahip bir dosya zaten mevcutsa, adı geçen dosya yukarıda belirtildiği gibi gerçekten yok sayılmaz; bunun yerine uzantılı dosyanın üzerine yazılmasını onaylamak için bir bilgi istemine neden olur. İşlem onaylanırsa o dosya silinir.

uncompress: Boş bir dosya sıkıştırılırsa (-f kullanılarak), elde edilen .Z dosyası da boş olur. Bu doğru görünmektedir ancak bu dosya üzerinde uncompress kullanılırsa bir hata oluşur.

Her iki yardımcı araç: Bir '-' argümanı kullanıldığında ve yardımcı araç kullanıcıya bilgi istemi gönderdiğinde, standart girdi kullanıcının isteme verdiği yanıt olarak kabul edilir.

Her iki yardımcı araç: Belirtilen dosya mevcut değilse, ancak compress için .Z uzantılı veya uncompress için .Z uzantısız benzer adlı bir dosya mevcutsa yardımcı araç eksik dosya hakkında hemen bir hata mesajı vermeyip devam ederek kullanıcının zamanını boşa harcar. Bunun yerine önce mevcut dosyanın üzerine yazmak için onay ister ve ardından üzerine yazmaz.

macOS 26.4 March 4, 2021 macOS 26.4