8.3.3.6. Visualización de archivos de texto
Mediante el shell de Linux es posible visualizar documentos de texto plano de una gran variedad de maneras. En este apartado vamos a ver muchas de ellas junto con sus principales opciones.
La visualización básica de ficheros de texto se realiza mediante la orden cat, que muestra en el shell el contenido completo del fichero de texto que se le pasa como argumento. Si le pasamos varios argumentos, mostrará los ficheros de texto en el orden en que se lo indiquemos como si fuesen uno sólo, sin distinguir qué línea corresponde a qué fichero. Sus principales opciones son las siguientes:
- cat -n numera todas las líneas del texto, incluso las vacías. En concreto, pone un número delante de cada línea al mostrarlas por pantalla.
- cat -b numera todas líneas del texto que no sean vacías. Las líneas vacías las muestra pero no les pone ningún número delante.
Como podemos ver, la orden cat no dispone de demasiadas opciones en cuanto a la visualización de textos, por lo que es la manera más rudimentaria de verlos en el shell.
Otra forma de visualizar los ficheros de texto es con la orden more, que nos da algunas utilidades más a la hora de ver el texto. Concretamente, dicha orden nos permite avanzar por el documento línea a línea pulsando la tecla Intro o página a página mediante la barra espaciadora. Si le pasamos varios nombres de fichero como argumentos, la orden more nos los mostrará uno detrás de otro en el orden indicado, pero distinguiendo cada archivo de manera separada. Sus opciones más útiles son:
- more -X permite especificar el número de líneas que queremos que muestre por cada página. Por ejemplo, si queremos visualizar 6 líneas por página ejecutaríamos more -6.
- more +X comienza la visualización delfichero en la línea X. Por ejemplo, si queremos ver un fichero a partir de su línea 13 pondríamos more +13.
Si estamos visualizando un documento con la orden more y pulsamos la letra h veremos todas las opciones que nos ofrece durante la visualización.
Una orden similar a more pero más completa es less, que nos permite avanzar y retroceder línea a línea con las flechas de dirección o avanzar página a página mediante la barra espaciadora y retroceder una página mediante la tecla w. Al igual que con more, si visualizamos un fichero con less y preionamos la tecla h veremos una ayuda que nos indicará las teclas que podemos usar para desplazarnos por el documento. Si le pasamos varios ficheros de texto como argumentos, podemos movernos entre ellos pulsando :n para ir al siguiente documento o :p para ir al documento anterior. Una vez que estamos visualizando un fichero con less, si queremos salir de la visualización deberemos pulsar la tecla q.
Las principales opciones de less son las siguientes:
- less -e hace que se salga automáticamente de la visualización cuando se llega por segunda vez al final del fichero. La primera vez que se llega al final del fichero se permanece en la visualización. Es muy útil para no tener que acordarse de salir con la q.
- less -E es muy similar a la anterior opción, pero hace que se salga de la visualización cuando se llega al final del fichero por primera vez.
- less -F hace que se salga de la visualización automáticamente si el fichero puede ser mostrado en una sola página.
- less -N muestra un número de línea delante de cada línea de texto que contiene el fichero.
- less -w al avanzar una página nos señala cual es la primera línea que no estaba en la página anterior. Sirve para saber por donde nos habíamos quedado leyendo cuando cambiamos a la siguiente página.
Una curiosidad es que less es el método usado por defecto para mostrar las páginas de manual con la orden man. Es por eso que, cuando ejecutáis man podéis moveros por el manual libremente.
En ocasiones no queremos ver un fichero de texto completo sino sólo el principio o el final. Para ello, el shell de Linux dispone de 2 órdenes, head y tail, que muestran respectivamente las primeras o las últimas 10 líneas del fichero que le pasemos como argumento. Si en vez de mostrar 10 líneas queremos mostrar más o menos, ambas órdenes comparten las siguientes opciones:
- head -n X o tail -n X muestran las primeras o las últimas X líneas del fichero. Por ejemplo, si queremos ver las primeras 7 líneas de un fichero haríamos head -n 7.
- head -c X o tail -c X muestran los primeros o los últimos X bytes (normalmente un caracter equivale a un byte) del fichero. Por ejemplo, si queremos ver los últimos 20 bytes de un fichero haríamos tail -c 20.
Para imprimir un fichero de texto mediante nuestra impresora disponemos de la orden lpr. La forma de configurar la impresión es mediante las opciones siguientes:
- lpr -P nombredelaimpresora especifica el nombre de la impresora con la que queremos imprimir. En caso de no especificarse se imprimirá en la impresora por defecto. Si por ejemplo nuestra impresora se llama EpsonS22 haremos lpr -P EpsonS22.
- lpr -# X quiere decir que queremos X copias del documento, entre 1 y 100, por defecto 1. Por ejemplo, si queremos 3 copias haremos lpr -# 3.
Normalmente especificaremos ambas opciones, por lo que si queremos combinar los ejemplos anteriores haríamos lpr -P EpsonS22 -# 3.
En caso de que queramos ver las páginas que nos va a ocupar un documento antes de imprimirlo, disponemos de la orden pr, que nos muestra el documento separado en páginas de la misma forma que se haría al enviarlo a la impresora. Algunas de sus opciones son las siguientes:
- pr -d pone el documento a doble espacio.
- pr -l X especifica que la página tendrá X líneas. Por ejemplo, para poner páginas de 30 líneas sería pr -l 30.
- pr -h "texto" permite poner en la cabecera de cada página el texto que le pongamos entre comillas.
- pr -n imprime también el número de línea asignado a cada línea del texto.
Actividad 1: Desde el directorio /etc visualiza el contenido del fichero mtools.conf. ¿Cuántas líneas tiene? ¿Y cuántas sin contar las líneas vacías?
Actividad 2: Visualiza el contenido del fichero anterior de forma que dicha visualización comience en la línea 14 y muestre 3 líneas por página.
Actividad 3: Visualiza en contenido del mismo fichero de tal manera que salga automáticamente de la visualización cuando llegue al final del fichero. Ahora haz lo mismo pero para que salga a la seguna. Comprueba que lo hace.
Actividad 4: Muestra el contenido del fichero de forma que al avanzar una página nos indique cuál es línea que no estaba en la página anterior, para guiarnos en la lectura.
Actividad 5: ¿Cuáles son las primeras 15 líneas del fichero ntp.conf en /etc? ¿Y la última? ¿Y los últimos 20 bytes?
Actividad 6: Queremos imprimir el fichero /tmp/mtools a doble espacio. Muestra por pantalla cómo quedaría.
Actividad 7: En el mismo documento de antes, deseamos que como cabecera de página aparezca la palabra linux. ¿Cómo lo harías?