Este artículo demuestra cómo visualizar archivos de texto sin necesidad de que sean descomprimidos previamente, gracias a los utilitarios provistos por la mayoría de los paquetes de compresión de archivos en GNU/Linux.



En los sistemas operativos de la familia Unix, la herramienta cat se utiliza típicamente para volcar archivos de texto plano por salida estándar (pantalla).

Esto permite visualizar un archivo de texto de forma rápida, por ejemplo veamos el contenido del archivo /etc/hosts de mi estación de trabajo:

root@hal9000:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	hal9000

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Cuando uno se familiariza con esta herramienta es común que la utilice a diario e incluso dentro de scripts Bash. Se pueden visualizar archivos de configuración, logs de servicios, archivos README, código fuente de scripts, etc. Respecto al caso de los logs, muchas veces necesitamos visualizar los registros de una fecha específica, pero resulta que los mismos han sido rotados y comprimidos por logrotate. En tales casos uno pensaría en descomprimir el archivo para luego visualizarlo. Sin embargo, los algoritmos de compresión de archivos en los sistemas Unix suelen incluir su propia versión del utilitario *cat, el cual descomprime y vuelca por salida estándar al vuelo.

Veamos un ejemplo, el siguiente archivo se encuentra comprimido en formato bzip2:

root@pgserver:/backups# file 20190703080825.sql.bz2
20190703080825.sql.bz2: bzip2 compressed data, block size = 900k

Para ver su contenido sin necesidad de descomprimirlo previamente, simplemente recurrir al utilitario bzcat:

root@pgserver:/backups# bzcat 20190703080825.sql.bz2 | head -n 10
--
-- PostgreSQL database dump
--

-- Dumped from database version 9.6.13
-- Dumped by pg_dump version 9.6.13

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;

Lo mismo ocurre para otros formatos como gzip y xz/lzma, los cuales proveen los utilitarios zcat, xzcat y lzcat respectivamente:

root@hal9000:/home/emi# zcat /var/log/kern.log.2.gz | head
Jul  1 08:55:06 hal9000 kernel: [ 3900.998665] usb 1-3: new high-speed USB device number 4 using xhci_hcd
Jul  1 08:55:07 hal9000 kernel: [ 3901.146891] usb 1-3: New USB device found, idVendor=ffee, idProduct=0100, bcdDevice= 1.00
Jul  1 08:55:07 hal9000 kernel: [ 3901.146894] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Jul  1 08:55:07 hal9000 kernel: [ 3901.222669] usb-storage 1-3:1.0: USB Mass Storage device detected
Jul  1 08:55:07 hal9000 kernel: [ 3901.222832] scsi host6: usb-storage 1-3:1.0
Jul  1 08:55:07 hal9000 kernel: [ 3901.222895] usbcore: registered new interface driver usb-storage
Jul  1 08:55:07 hal9000 kernel: [ 3901.237497] usbcore: registered new interface driver uas
Jul  1 08:55:08 hal9000 kernel: [ 3902.227619] scsi 6:0:0:0: Direct-Access     FNK TECH  USB CARD READER 2.33 PQ: 0 ANSI: 2
Jul  1 08:55:08 hal9000 kernel: [ 3902.228259] sd 6:0:0:0: Attached scsi generic sg1 type 0
Jul  1 08:55:08 hal9000 kernel: [ 3902.228779] sd 6:0:0:0: [sdb] 60645376 512-byte logical blocks: (31.1 GB/28.9 GiB)


Tal vez pueda interesarte


Compartí este artículo