Cuando abres un archivo en la terminal, tienes tres herramientas en mente y la elección correcta depende de una sola pregunta: ¿el contenido cabe en una pantalla? La respuesta determina todo lo demás.
cat es la abreviatura de concatenate. Su propósito original —el que justifica su nombre— es unir varios archivos y enviar el resultado a la salida estándar (stdout). Que también muestre un archivo individual en pantalla es casi un efecto secundario de ese diseño. less es un paginador interactivo: toma el contenido que recibe, lo presenta pantalla a pantalla, y te deja moverte en cualquier dirección. more es el ancestro de less, con las mismas capacidades básicas pero sin la posibilidad de desplazarse hacia arriba; en la práctica, en un sistema moderno no tienes razón para usarlo si less está disponible —y en Debian siempre lo está.
El diseño de cat sigue la filosofía Unix: hacer una sola cosa bien. Por eso no tiene opciones de navegación, no tiene búsqueda, no tiene colores. Vuelca el contenido y termina. less, en cambio, mantiene un proceso activo con su propio contexto de pantalla hasta que pulsas q. Esa diferencia de diseño es exactamente lo que te indica cuándo usar cada uno.
La regla práctica es simple: si el archivo cabe en una pantalla, usa cat. Si no cabe —un log, un archivo de configuración largo, la salida de un comando— usa less. Donde más se equivoca la gente es en el patrón cat archivo.txt | grep algo: estás lanzando un proceso extra para alimentar a otro que podría leer el archivo directamente. Eso es lo que se conoce como useless use of cat (UUOC). grep algo archivo.txt hace exactamente lo mismo sin el proceso intermedio.
# ── Uso correcto de cat: concatenar y crear ────────────────────────── # Concatenar dos archivos en uno nuevo cat /etc/hostname /etc/debian_version > info_sistema.txt # Mostrar el resultado (archivo pequeño, cabe en pantalla) cat info_sistema.txt # Crear un archivo con heredoc — este es uno de los usos legítimos más útiles cat > recordatorio.txt << EOF Actualizar el sistema el lunes Revisar logs de nginx Rotar certificados antes del 30 EOF # Verificar que se creó bien cat recordatorio.txt # ── Useless use of cat — evitar estos patrones ──────────────────────── # MAL: cat abre el archivo solo para pasarlo a grep # cat /etc/ssh/sshd_config | grep Port # BIEN: grep puede leer el archivo directamente grep Port /etc/ssh/sshd_config # ── less para archivos que no caben en pantalla ─────────────────────── # Abrir un log del sistema (puede tener miles de líneas) less /var/log/dpkg.log # Dentro de less, estos son los atajos que usarás siempre: # Espacio o PgDn → avanzar una pantalla # b o PgUp → retroceder una pantalla (more no puede hacer esto) # G → ir al final del archivo # g → volver al principio # /patrón → buscar hacia adelante # n → siguiente coincidencia # N → coincidencia anterior # q → salir # less también funciona con pipes: útil cuando la salida es larga dpkg -l | less # ── more: por qué casi nunca lo necesitas ──────────────────────────── # more avanza pantalla a pantalla pero NO puede retroceder # En Debian, less siempre está disponible y es estrictamente superior # El único caso real donde aparece more es en scripts muy antiguos # o en sistemas embebidos mínimos sin less instalado more /var/log/dpkg.log # funciona, pero no puedes subir con 'b'
Fíjate en el bloque del heredoc: cat > recordatorio.txt << EOF usa cat para recibir texto desde el propio script o sesión interactiva y redirigirlo a un archivo. Aquí cat cumple exactamente su rol —tomar una entrada y enviarla a stdout, que en este caso está redirigido a un fichero—. Es un patrón que verás constantemente en scripts de aprovisionamiento y en respuestas de Stack Overflow.
La concatenación con cat /etc/hostname /etc/debian_version > info_sistema.txt muestra por qué la herramienta se llama así: recibe dos archivos como argumentos, los vuelca en orden a stdout, y la redirección > los junta en uno solo. No hay magia adicional.
Cuando ejecutas less /var/log/dpkg.log, el proceso queda activo y puedes buscar con /configure para localizar todos los eventos de configuración de paquetes. Después pulsas n para saltar al siguiente resultado sin salir del paginador. Eso es lo que hace inútil a more en el día a día: si encuentras algo interesante y quieres volver unos párrafos atrás, more no puede. less sí.
La línea dpkg -l | less ilustra el otro uso habitual: cuando la salida de un comando es larga, en lugar de dejar que se desborde por el terminal, la pasas a less. El paginador no necesita que el contenido venga de un archivo; cualquier cosa que llegue por stdin funciona igual.
N° 29