El comando cat significa del inglés catenate, que significa concatenar, ya que la función principal de este comando es unir varios archivos de entrada enviando secuencialmente su contenido a la salida estándar.

Para este tutorial hemos creado dos ficheros llamados file_domain y file_path son el siguiente contenido cada uno:

# file_domain
voidnull.es

# file_path
/diccionario-comandos-gnu-linux/

Estos dos ficheros los utilizaremos para los ejemplos que veremos a continuación sobre el comando cat.

Como hemos mencionado cat sirve para concatenar ficheros, por lo que podemos hacerlo de la siguiente forma:

cat file_domain file_path > file_result

Si mostramos el fichero file_result:

cat file_result 

voidnull.es
/diccionario-comandos-gnu-linux

Concatenar dos ficheros con separador

utilizamos cat sin ningún argumento, el comando cat mostrará los datos de la entrada estándar y los mostrará en su salida estándar, algo que puede ser útil pero que en realidad es un poco inútil... a menos que se utilice alguna opción para transformar los datos.

Además de pasar rutas de archivos por el comando cat, también entiende el guión como un alias para la entrada estándar. De esta forma, podemos insertar datos leídos de la entrada estándar entre dos ficheros.

Por ejemplo, vamos a añadir #### entre los dos ficheros con los que estamos trabajando:

echo '####' | cat file_domain - file_path 

voidnull.es
####
/diccionario-comandos-gnu-linux

Concatenar imágenes. Sí, imágenes.

Puede parecer increíble, pero sí, podemos concatenar ficheros binarios con el comando cat. Como por ejemplo imágenes, tenemos una imagen de un lindo gatito, y hemos descargado el fichero en dos mitades:

curl -s -r 0-50000 https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Felis_catus-cat_on_snow.jpg/1024px-Felis_catus-cat_on_snow.jpg -o image_first_half &
curl -s -r 50001- https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Felis_catus-cat_on_snow.jpg/1024px-Felis_catus-cat_on_snow.jpg -o image_second_half &
📢
Con el comando anterior, lo que hacemos es descargarnos parte de la imagen, para eso usamos la opción -r para indicar el rango de bytes a descargar.

Para concatenar los dos trozos de la imagen, deberemos de ejecutar el siguiente comando:

cat image_first_half image_second_half > gatito.jpg

Mostrar ficheros de texto con información

El comando cat permite mostrar diferentes informaciones que pueden ser útiles. Por ejemplo el número de línea con la opción -n:

cat -n file_result 
     1  voidnull.es
     2  /diccionario-comandos-gnu-linux

Con la opción -s podemos suprimir líneas vacías que se repitan, por ejemplo tenemos este contenido en el fichero file_clean:

voidnull.es


/diccionario-comandos-gnu-linux

Podemos eliminar un salto de línea:

cat -s file_clean 
voidnull.es

/diccionario-comandos-gnu-linux

Pero si utilizamos la opción -n con el fichero file_clean, nos indicará que hay 4 líneas y dos de ellas estarán vacías. Si queremos que cuenta únicamente las líneas donde hay contenido, podemos usar la opción -b.

cat -b file_clean 
     1  voidnull.es


     2  /diccionario-comandos-gnu-linux

También podemos mostrar otro tipo de caracteres, como por ejemplos tabulaciones dentro del fichero, con la opción -t y también podemos marcar las líneas vacías o final de línea con la opción -e. Por lo tanto, si mostramos el fichero con estas dos opciones:

cat -te file_clean
voidnull.es$
^I$
$
/diccionario-comandos-gnu-linux$

Donde aparece $ indica que hay un final de línea. Si aparece además también ^I indica que hay una tabulación.

Conclusión

Y recuerda, si necesitas buscar algo en un fichero muy grande, no utilices este comando:

cat /var/log/maillog | grep micorreo.com

Si necesitas hacer filtrado por contenido, recuerda que puedes utilizar directamente el comando grep para eso!

Filtros y herramientas en GNU/Linux [Parte 1]
En sistemas, se conoce como filtro un programa que sabe escribir y leer datos por los canales estándares de entrada y salida. Dicho programa modifica o trata si es preciso el contenido. Por ejemplo, wc es un filtro. Las herramientas no siempre se comportan como filtros. Permiten un determinado númer…

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación