Si piensas en una herramienta para ver el contenido de un archivo en Linux, seguro que estás pensando en cat. Ya escribí sobre esta herramienta en el capítulo sobre el terminal dedicado a procesar texto con head, tail, cat, split. Sin embargo, dado que yo, al igual, que probablemente, tu también, la utilizamos con mucha frecuencia, he querido dedicarle un artículo completo. Y es que con cat no solo se puede ver el contenido de un archivo, sino que además podemos, incluso, crear archivos y mucho mas. Así el objetivo de este artículo es ver cat en profundidad.
Cat en profundidad
Recientemente publiqué un artículo sobre como tener en tu equipo un cat supervitaminado. Seguramente te estés preguntando, ¿que sentido tiene dedicar un artículo a cat?. Sinceramente, después de ver las posibilidades que ofrece bat, yo casi que también pienso lo mismo. Sin embargo, no siempre tienes la posibilidad de utilizar una herramienta como bat, simplemente por que en el equipo en el que estás trabajando no está instalada, y no tienes opción a instalarla, o por cualquier otro tipo de razón. Casi que esto es lo de menos.
La cuestión, es que considero importante conocer con profundidad, las herramientas que tienes a tu disposición para sacarles el máximo partido.
cat en pocas palabras
Tal y indica en la propia ayuda de cat
, esta herramienta está pensada para concatenar archivos y mostrar el contenido de un archivo. Si lo piensas, y tal y como comenté en el capítulo sobre gestionar archivos en Linux del tutorial sobre el terminal, en Linux todo es un archivo, cuando muestras por pantalla, simplemente estás concatenando el archivo que quieres mostrar con el archivo pantalla.
Te recomiendo la lectura del capítulo redirigir entrada y salida en Linux, también del tutorial sobre el terminal, que he comentado en el párrafo anterior.
El contenido de los archivos
El primero de los usos que le puedes dar a cat
es el de simplemente mostrar el contenido del archivo. Para esto, solo tienes que ejecutar la siguiente instrucción,
cat archivo1.txt
Por supuesto, no solo puedes mostrar el contenido por la salida estándar, sino que también puedes redirigir la salida a un archivo. Para esto, ejecuta la siguiente instrucción,
cat archivo1.txt > archivo2.txt
Indicarte que con la opción anterior reemplazarás todo el contenido del archivo2.txt
con el contenido del archivo1.txt
. Si lo que quiere es añadir el contenido del archivo2.txt
al archivo1.txt
, tendrás que ejecutar la siguiente instrucción,
cat archivo1.txt >> archivo2.txt
Algunas de ver el contenido
Por supuesto, como cualquier herramienta que se precie, cat
, te permite una serie de opciones realmente interesantes, que te van a facilitar la previsualización del contenido. Algunas de estas opciones son las siguientes,
- Te permite mostrar los números de línea de un archivo. Para ello, simplemente,
cat -n <nombre-del-archivo>
- Si no quieres que se numeren las líneas vacías, en lugar de utilizar la opción
-n
, tienes que utilizar la opción-b
. - Puedes omitir las líneas vacías que estén repetidas. Es decir, si hay dos o mas líneas vacías consecutivas, solo se mostrará una. Para ello,
cat -s <nombre-del-archivo>
- Mostrar un símbolo para cada tabulación, lo que te va a permitir distinguir entre espacios y tabulaciones. Por ejemplo,
cat -t <nombre-del-archivo>
- Si lo que quieres es mostrar un símbolo indicando el final de línea, lo puedes hacer fácilmente siguiendo el ejemplo que te muestro a continuación,
cat -E <nombre-del-archivo>
Concatenar archivos
Pero cat
no solo te permite mostrar el contenido de un archivo, sino que además te permite unir varios archivos y mostrarlos por la salida estándar o bien guardarlo en un nuevo archivo. Así para mostrar varios archivos concatenados por pantalla, la instrucción que tienes que ejecutar es,
cat archivo1.txt archivo2.txt
Igual que has hecho anteriormente, si lo que quieres es combinar esos archivos en un archivo nuevo, la instrucción a ejecutar sería,
cat archivo1.txt archivo2.txt > salida.txt
De la misma manera que antes, con esta solución estas sobreescribiendo el contenido del archivo salida.txt
, si lo que quieres es añadir el contenido de los archivos archivo1.txt
y archivo2.txt
al contenido del archivo salida.txt
, la instrucción a ejecutar será,
cat archivo1.txt archivo2.txt >> salida.txt
Crear archivos
Y si todo lo que has visto hasta el momento te parece poco, decirte que con cat
también puede crear archivos. Si, como lo has léido, también puedes crear archivos de texto.
Esto te puede resultar realmente cómodo cuando copias el contenido de un archivo y lo quieres pegar en un archivo nuevo. Es mucho mas rápido, sencillo y sobre todo práctico que utilizar cualquier otro editor de texto.
Para crear un archivo de texto simplemente ejecuta,
cat > nombre-del-archivo.txt
Una vez terminado de editar lo que necesites, simplemente utiliza el atajo de teclado Ctrl+D
para salir.
Ten en cuenta que si el archivo nombre-del-archivo.txt
existe, utilizando cat
de esta manera lo vas a sobreescribir.
Si por el contrario, lo que quieres, no es sobreescribir el archivo, sino añadir contenido al final, en lugar de utilizar la instrucción anterior, lo que debes ejecutar es la siguiente instrucción,
cat >> nombre-del-archivo.txt
Tanto la instrucción anterior como esta instrucción, no son mas que una aplicación práctica de todo lo que tienes a tu alcance en el tutorial sobre el terminal en partícular, en el capítulo sobre redirigir entrada y salida en Linux.
También puedes crear archivos desde un script, como por ejemplo,
cat > archivo.txt <<EOF
#/bin/bash
echo Hola
EOF
Conclusión
Desde luego si ya no conocías todas las posibilidades de cat
no te habrá sorprendido este artículo. Sin embargo, si solo has utilizado cat
para visualizar el contenido de archivos, habrás visto que aquí tienes una nueva posibilidad, no solo de concatenar archivos, sino también de crearlos de forma sencilla.
En particular, yo lo estoy utilizando para cuando copio algún script y lo pego directamente en el archivo. De esta manera, en muy pocos pasos, lo tengo preparado para probar. Eso si, si lo tengo que modificar, entonces, utilizo Vim.
Más información,
Imagen de portada de Tran Mau Tri Tam en Unsplash