El comando Unix para comprimir archivos de texto es compress. Este comando lee el contenido de los archivos, los analiza para encontrar partes o tramos iguales para sustituirlos por un número inferior de caracteres. Para la elección de los caracteres que se utilizaran se ocupa el sistema de codificación Lempel-Ziv adaptiva y se genera un archivo con la extensión .Z.
El comando uncompress sirve para recuperar los archivos comprimidos y los regresa a su forma original.
$ cat documento.txt Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.vAenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aeneanimperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. ... Vivamus laoreet. Nullam tincidunt adipiscing enim. Phasellus tempus. Proin viverra, ligula sit amet ultrices semper, ligula arcu tristique sapien, a accumsan nisi mauris ac eros. Fusce neque. Suspendisse faucibus, nunc et pellentesque egestas, lacus ante convallis tellus, vitae iaculis lacus elit id tortor. Vivamus aliquet elit ac nisl. Fusce fermentum odio nec arcu. Vivamus euismod mauris. In ut quam vitae odio lacinia tincidunt. Praesent ut ligula non mi varius sagittis. Cras sagittis. Praesent ac sem eget est egestas volutpat. Vivamus consectetuer hendrerit lacus. Cras non dolor. Vivamus in erat ut urna cursus vestibulum. Fusce commodo aliquam arcu. Nam commodo suscipit quam. Quisque id odio. Praesent venenatis metus at tortor pulvinar varius. $ ls -l total 4 -rw-r--r-- 1 alberto alberto 3197 2009-08-13 14:09 documento.txt
Tenemos un archivo llamado documento.txt de tamaño 3.1 KB, y lo deseamos comprimir para enviarlo por Email a todos nuestros contactos.
$ compress documento.txt $ ls -l total 4 -rw-r--r-- 1 alberto alberto 1759 2009-08-13 14:09 documento.txt.Z
Comprimimos el archivo documento.txt y podemos observar que el tamaño del archivo se redujo a 1.7 KB, y observamos que el archivo obtuvo la extensión .Z.
Ahora, si deseamos visualizar nuestro archivo de texto reducido visualizaremos solo caracteres raros. Para evitar este problema empleamos el comando zcat de la siguiente manera:
$ zcat documento.txt.Z Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.vAenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aeneanimperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. ... Vivamus laoreet. Nullam tincidunt adipiscing enim. Phasellus tempus. Proin viverra, ligula sit amet ultrices semper, ligula arcu tristique sapien, a accumsan nisi mauris ac eros. Fusce neque. Suspendisse faucibus, nunc et pellentesque egestas, lacus ante convallis tellus, vitae iaculis lacus elit id tortor. Vivamus aliquet elit ac nisl. Fusce fermentum odio nec arcu. Vivamus euismod mauris. In ut quam vitae odio lacinia tincidunt. Praesent ut ligula non mi varius sagittis. Cras sagittis. Praesent ac sem eget est egestas volutpat. Vivamus consectetuer hendrerit lacus. Cras non dolor. Vivamus in erat ut urna cursus vestibulum. Fusce commodo aliquam arcu. Nam commodo suscipit quam. Quisque id odio. Praesent venenatis metus at tortor pulvinar varius.
En caso de que deseemos conocer el porcentaje de compresión que obtendremos utilizamos la opción -v.
$ compress -v documento.txt documento.txt: -- replaced with documento.txt.Z Compression: 44.97%
Ya comprimimos el archivo y utilizamos el comando zcat para visualizarlo, tal vez el usuario desee obtener el archivo original. Para esto tan solo habrá que descomprimirlo y para esto utilizaremos el comando uncompress de la siguiente manera:
$ uncompress documento.txt.Z $ ls -l total 4 -rw-r--r-- 1 alberto alberto 3197 2009-08-13 14:09 documento.txt
Originalmente la compresión de archivos en Unix con compress se utilizaba en archivos planos (antes no existían los archivos PDF) y es por eso que no se pueden comprimir de forma sencilla otros archivos que no seas de texto plano. Sin embargo si es posible utilizando la opción -f para forzar la compresión. Existe el inconveniente de que no se podrán visualizar como lo hicimos con zcat. Para hacerlo habrá de descomprimirlos.
Veamos un ejemplo con un archivo PNG.
$ ls -l total 4 -rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png $ compress Estructura.png $ ls -l total 4 -rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png
Ejecutamos el comando compress y no se efectuó la compresión. Ahora utilicemos la opción -f.
$ ls -l total 4 -rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png $ compress -f Estructura.png $ ls -l total 4 -rw-r--r-- 1 alberto alberto 1334 2009-08-06 23:05 Estructura.png.Z
Este modo de compresión de archivos es el más adecuado para archivos de texto o archivos planos, de este modo se pueden visualizar sin la necesidad de descomprimir y comprimir de nuevo.