La gran guía de supervivencia de la terminal de Linux
La terminal siempre ha sido objeto de controversia entre los usuarios de un sistema. Mientras que a algunos usuarios les parece algo muy complejo e incómodo de utilizar, a otros les parece una herramienta poderosísima a la que pocas veces (incluso siendo usuario avanzado) se le consigue sacar todo su potencial.
Tal vez sea cierto que no todos los usuarios están hechos para ella, pero si te apetece darte una vuelta por esta guía de supervivencia sin «X» (interfaz gráfica de Linux) y descubrir todo lo que se puede hacer desde una simple línea de comandos, ¡ponte cómodo y empecemos!
1. Explorador de archivos
GNU/Linux posee una larga colección de comandos y herramientas para moverte a través de las diferentes rutas, directorios o carpetas del sistema, como por ejemplo popd y pushd, explicados en 10 comandos para trabajar en Linux, sin embargo, es comprensible que prefieras un sistema más cómodo para moverte.
Ranger es un claro ejemplo, un sencillo explorador de archivos en modo texto, que nos permitirá navegar por el árbol de directorios utilizando las combinaciones de teclas del famoso editor VIM.
Flappy Bird visualizado desde una terminal de texto.
URL | Ranger (GitHub)
Además, basta con escribir ranger --copy-config=scope y tendremos ranger configurado para mostrar una previsualización de imágenes en formato ASCII a todo color mediante img2txt, el cuál también se puede utilizar desde línea de comandos directamente.
Otro gran clásico de los exploradores es Midnight Commander, el cuál se basa en el famoso Norton Commander de la época de MSDOS. Además de ser muy atractivo y organizado visualmente, nos ofrece un menu superior y unas teclas de acceso rápido que lo hacen algo muy cómodo de utilizar.
URL | Midnight Commander
Existen varios otros exploradores de archivos, como nffm o vifm. Sin embargo, si nos centramos en los visores de imágenes, podemos encontrar fbi (framebuffer viewer), el cuál nos permite reproducir gráficamente, desde nuestra terminal de texto archivos gráficos, realizando una conversión previa.
Antes también mencionaba img2txt, el cuál es un comando que incorpora las librerías libcaca, utilizadas para la conversión de gráficos en ASCII art coloreado. Esta librería incorpora varias herramientas como por ejemplo, cacaview, un visor de imágenes que permite zoom, variar gamma, antialias y otras opciones:
URL | Libcaca
Se pueden hacer cosas aún más potentes con esta librería, pero lo veremos más adelante. Si eres de Windows y buscas un explorador de archivos similar a los anteriores, puedes probar con Far Manager, incluido entre otros en el siguiente artículo:
URL | Alternativas al explorador de Windows
2. Gestor de ventanas en modo texto (multitarea)
Los exploradores de archivos son muy útiles, pero a veces se echa de menos el tener la flexibilidad que aportan los gestores de ventanas en los entornos gráficos. Si eres de los que abren varias terminales de texto o varias conexiones SSH al mismo equipo para hacer varias tareas a la vez, quizás sea porque no conoces tmux:
Puedes dividir la pantalla y trabajar moviéndote por las diferentes secciones.
URL | tmux (SourceForge)
El multiplexor tmux permite crear varias subterminales en la propia terminal, pudiendo cambiar entre ellas en cualquier momento. Sólo es necesario pulsar la combinación de teclas CTRL+B y luego la tecla de la acción a realizar, como por ejemplo % para dividir verticalmente, " para dividir horizontalmente o n y p para moverse entre pantallas.
De la misma forma, existen muchos otros programas similares que podrías probar, como por ejemplo dvtm (dynamic virtual terminal manager) o gnu screen con dtach. Además, estos gestores tienen una característica muy interesante: sobreviven a posibles desconexiones accidentales por SSH, pudiendo recuperarlas más tarde.
URL | 10 trucos y consejos para conexiones SSH vía Putty
3. Cliente de correo
Las operaciones de correo en un sistema GNU/Linux son todo un mundo a parte. Existen multitud de formas de configurar nuestro sistema para recibir o enviar emails, siendo uno de los usos más comunes el comando mail:
echo “Mensaje” | mail -s “Asunto” correo@gmail.com
Sin embargo, lo que más nos puede interesar a nivel de usuario, quizás, es una forma de revisar nuestro correo de Gmail con una interfaz cómoda y similar a lo que ya estamos acostumbrados.
Vmail es uno de esos programas. Se trata de un cliente de correo para Gmail desarrollado en Ruby y basado en el funcionamiento del editor Vim, convirtiéndolo en un sistema productivo para revisar nuestro correo.
URL | Vmail (GitHub)
Por otro lado, también tenemos Sup, que se define como un «cliente de correo para usuarios avanzados», especialmente diseñado para consultar nuestro correo de una forma óptima y rápida, y con la posibilidad de configurar cuentas de Gmail.
URL | Sup (GitHub)
Otros programas más genéricos podrían ser mutt (que también puede ser configurado para gmail) o alpine, una evolución del clásico pine.
4. Productividad y organizadores de tareas
La organización y gestión de nuestro tiempo (para conseguir ser productivos) es independiente de trabajar en una interfaz gráfica o una interfaz de texto. En una consola tenemos a nuestra disposición muchas utilidades interesantes.
En GNU/Linux contamos por defecto con el calendario cal, que nos muestra rápidamente el mes actual o las fechas especificadas por parámetro. Sin embargo, pal es un calendario mejorado que entre otras cosas, nos muestra el calendario de una forma más amigable, resalta los días festivos y nos muestra los eventos más próximos.
URL | PalCal (SourceForge)
Si preferimos algo más guiado y sencillo, tenemos calcurse, un gestor de citas y eventos mediante menús y accesos directos. Es compatible con el formato iCal, por lo que se pueden importar / exportar datos desde Google Calendar u otras utilidades similares de calendarios. Calcurse nos mostrará las tareas pendientes y permitirá organizar nuestro tiempo desde una terminal:
URL | Calcurse
Wyrd es un interfaz más cómodo del intérprete en línea de comandos remind, que sirve para gestionar calendarios y alarmas o recordatorios. Su gestión de horarios es muy cómoda y permite hacerse una idea rápida de como tenemos organizado el día sin movernos desde nuestra terminal de texto.
Existen varios proyectos como rem2ics o ical2rem, para exportar o importar datos a/desde otros programas que soporten el formato iCal.
URL | Wyrd
No quiero dejar de mencionar el tremendamente útil TaskWarrior, organizador y gestor de tareas desde línea de comandos. En su propia página tienes un tutorial de TaskWarrior para comenzar con los primeros pasos en su utilización.
Permite desde un uso simple y sencillo a todo tipo de opciones adicionales, como establecer prioridades a las tareas, establecer etiquetas, historiales, calendarios de tareas realizadas o exportar en formato CSV o iCal. Otro programa similar es when.
TaskWarrior y Tudu: dos gestores de tareas basados en terminal
Por su parte, tudu es un gestor de tareas minimalista y rápido, donde ponemos añadir las tareas pendientes y marcar las ya realizadas. Yokadi es otro gestor de tareas menos interactivo.
Si te interesa saber más sobre la optimización y gestión de tu tiempo y quieres trabajar más rápido, echa un vistazo a Cómo trabajar más rápido: El «método geek».
5. Redes sociales
Al contrario de lo que se cree, también es posible utilizar la línea de comandos para utilizar programas sociales. Chats, mensajería, Twitter, Facebook o incluso el novedoso Telegram son algunos ejemplos.
IRC / Mensajería
Aunque su uso ha descendido mucho desde las épocas doradas del IRC, los chats de IRC se siguen utilizando mucho actualmente por ciertos sectores de usuarios. Weechat es quizás uno de los más conocidos y popularizados:
URL | Weechat
Además, tiene una gran cantidad de plugins para extender las funcionalidades de Weechat, desde autocompletados para nicks hasta acortadores de enlaces, pasando por minijuegos. Otro cliente de IRC muy cómodo es ScrollZ, el cual está basado en ircII:
Sierramorbo y superdotadisimo. El tiempo pasa, pero el IRC no cambia.
URL | ScrollZ
Por su parte, no menciono a grandes ultraconocidos BitchX, Irssi o xchat, los cuales tienen sus propias implementaciones de texto para terminal desde hace bastante tiempo. Por otro lado, si lo que buscamos es un cliente más orientado a mensajería, tenemos BitlBee, CenterIM o Finch, este último la versión en línea de comandos del famoso Pidgin.
Si nos centramos en la red social de Twitter, también existen muchas implementaciones para la terminal. Sin embargo, desde el varapalo del cambio de API de Twitter, que tanto daño hizo a la comunidad de desarrolladores, algunas quizás no conserven todas sus funcionalidades originales.
Turses es una de las implementaciones más limpias y agradables para acceder a Twitter desde una terminal de GNU/Linux:
URL | Turses
Otros clientes dignos de mención podrían ser ttytter, tweetx, earthquake o twidge.
Si utilizas Twitter a menudo (ya sea de forma personal o profesional) quizás te interesen estas 15 cosas interesantes que quizás no sabías de Twitter.
Si tú eres más de Facebook, no te preocupes. FBCmd es una implementación de línea de comandos de Facebook que te permitirá usarlo desde una terminal de Linux. Permite una gran cantidad de acciones, como publicar estados, mensajes, crear álbumes y subir fotos, e incluso listar o guardar imágenes de tus amigos.
Por defecto, las imágenes no son mostradas, sino que puede elegirse entre mostrar los enlaces a las imágenes o a la web de cada imagen. Opcionalmente, se puede elegir descargar las imágenes en una carpeta.
Por último, mencionar también tg, una implementación de línea de comandos del famoso y novedoso Telegram, que aspira a desbancar (o hacerle mucho daño) a WhatsApp.
URL | 7 trampas en redes sociales poco éticas que deberías conocer
6. Gestores de descarga
¿Qué podemos hacer desde una línea de comandos si queremos descargar algún archivo concreto? Muy fácil. El comando wget es uno de los más potentes que existen, permitiendo incluso continuar descargas canceladas.
Descargar un archivo con él es muy sencillo. Basta con escribir la URL del archivo. Es muy útil para archivos pesados, como un PDF o MP3, por ejemplo, aunque en este ejemplo se utilice para descargar un GIF y reproducirlo posteriormente:
URL | GNU wget
Otras implementaciones como axel o puf permiten utilizar la clásica técnica de descargar los archivos de forma paralela para acelerar la descarga, mientras que snarf o CURL permiten realizar interacciones más complejas.
Por otro lado, PlowShare merece una mención especial por tratarse de un software muy útil para subir o descargar archivos de varias páginas de descarga directa. Incorpora varios comandos como plowdown para descargar archivos, plowup para subirlos y obtener el enlace, entre otras:
URL | PlowShare (GitHub)
De la misma forma, pero orientado a la descarga de videos de Youtube (o sitios similares) tenemos movgrab, youtube-dl o clive, que descargan el video en el formato especificado, como se puede ver en este artículo. También tenemos imguru para subir imágenes a imgur automáticamente.
Por último, si somos más de P2P, podemos utilizar transmission-cli o rtorrent para BitTorrent o MicroDC2 para Direct Connect.
7. Lectores de feeds RSS
Desde la popularización y extensión del RSS, cerca de 2005, los feeds RSS han sido una genial forma de mantenerse informado de una forma cómoda, organizada y sencilla.
La terminal de Linux tampoco es ajena a ese entorno. Mediante programas como raggle, se puede tener un listado de feeds y utilizarlo para leer noticias desde la propia terminal. Lo mismo desde NewsBeuter, donde se puede editar el archivo ~/.newsbeuter/urls y añadir en cada línea la URL de un feed RSS:
Raggle y NewsBeuter: Lectores de feeds RSS para la terminal de GNU/Linux.
URL | Raggle
URL | NewsBeuter
Si no te convencen los anteriores, puedes optar a otros lectores de RSS interesantes como rawdog, theyoke, snownews o canto.
8. Ofimática, visores y editores de textos
Lo he mencionado varias veces en este artículo, pero aún no lo había mencionado directamente. La importancia de VIM en GNU/Linux es enorme. No sólo se ha convertido en el editor por defecto de cualquier distribución, sino que su particular sistema de combinación de teclas junto a su potencia y flexibilidad, lo han convertido en una excelente forma de editar ficheros de forma productiva una vez se supera una pequeña curva de aprendizaje.
Sin embargo, VIM no es, ni mucho menos, la única alternativa para editar archivos. Tienes una gran selección que puedes encontrar en 15 editores de texto basados en terminal, donde encontrarás muchas alternativas como fte, emacs o le, entre otras:
Le, editor de textos para GNU/Linux enfocado en ser un editor muy sencillo de utilizar.
Pero, si lo que estamos buscando es un programa ofimático, podemos utilizar un procesador de textos más tradicional, al estilo de los antiguos WordPerfect de MSDOS, puedes utilizar WordGrinder: capacidad para abrir varios documentos, establecer márgenes, estilos o importar/exportar a formatos como OpenDocument (LibreOffice), HTML o LaTeX. Todo ello desde una interfaz muy intuitiva:
URL | Wordgrinder
Pero las necesidades ofimáticas no acaban aquí. Si necesitamos una hoja de cálculo podemos utilizar sc (spreadsheet calculator), una veteranísima y potente herramienta para crear tus propias hojas de cálculo al estilo VIM:
Para empezar, basta con escribir sc /usr/share/doc/sc/tutorial.sc, donde te aparecerá un pequeño y breve tutorial para saber como utilizar esta herramienta. Pero si por alguna razón no te convence, también puedes probar teapot.
Visto lo visto, ¿qué nos queda? ¿Un PowerPoint basado en terminal? Pues si eso es lo que necesitas, tienes a tu disposición tpp (en referencia a ppt). Se trata de un sistema de presentaciones de texto, basado en ncurses, en el que podemos hacer presentaciones a color, utilizando alineaciones, estilos, comandos interactivos de la shell y otras cosas:
URL | tpp
Sin lugar a dudas, muy útil para administradores de sistemas o usuarios que quieran realizar rápidamente presentaciones de herramientas o aplicaciones basadas en terminal.
9. Navegadores web
También es posible navegar por Internet desde una consola de texto. De hecho, muchas veces se recomienda para obtener una estimación (a grandes rasgos) del grado de accesibilidad o la correcta estructura que puede tener una web. Antiguamente, era incluso recomendado por Google por temas de posicionamiento, puesto que el robot del buscador no era capaz de interpretar javascript.
El navegador Lynx es uno de los más robustos y recomendados para los usuarios que crean scripts o utilizan los diferentes parámetros disponibles. Lynx tiene una extensa colección de funciones que nos permiten hasta hacer scraping (extracción de datos) desde una simple línea de comandos.
w3m (detrás) y Lynx, dos navegadores de terminal de GNU/Linux.
Por su parte, w3m suele ofrecer mejor soporte en la mayoría de las webs, mientras que Elinks incorpora un menú de acciones que lo hace muy cómodo y sencillo de utilizar para los usuarios que comienzan.
Merece la pena destacar surfraw, un comando que funciona al estilo de los bangs de Duck Duck Go y permite realizar búsquedas directamente en diferentes servicios de Internet, como por ejemplo surfraw rae palabra, surfraw youtube Sting o surfraw google emezeta, entre muchos otros.
Mencionar también la existencia de otros navegadores de texto para terminal menos populares como retawq o netrik.
10. Lectores de PDF
Contra todo pronóstico, quizás una de las tareas más complicadas de este listado es leer un PDF desde una terminal de texto. El formato PDF es muy variable, y depende de muchos factores que se pueda visualizar o no desde una terminal.
Cuando se trata de un PDF donde predomina el contenido textual, se puede utilizar el comando pdftohtml, el cual permite convertirlo a formato HTML, pudiendo examinarlo comodamente luego con el navegador elinks:
pdftohtml ebook.pdf ebook.html
elinks html.html
De la misma forma, también se puede utilizar el comando pdftotext, realizando una conversión más básica mediante una línea de comandos más directa y compacta:
pdftotext file.pdf - | less
No obstante, esto no suele funcionar cuando el documento PDF tiene contenido gráfico o visual. Para ello, lo recomendable sería utilizar el comando fbgs, que realiza la misma tarea pero convirtiendo a imágenes, y lanzando posteriormente un visualizador:
Nota: Salvo los gráficos ASCII art mencionados anteriormente, suele ser necesario framebuffer para la visualización de imágenes gráficas en una terminal de texto.
Si necesitas una herramienta para manipular archivos PDF, rotar, unir, dividir páginas, recortar zonas, etc... echa un vistazo a pdftk: 10 operaciones útiles con archivos PDF.
11. Reproductores de música
A los reproductores de música basados en terminal se les podría dedicar otro artículo entero por separado. Sin embargo, si tuviera que destacar alguno me quedaría, por ejemplo con mp3blaster, el cual tiene soporte para listas de reproducción, comandos clásicos de reproducción de canciones, mezclador integrado, etc:
Peyote es otro reproductor que bebe de la esencia del citado Midnight Commander, utilizando una réplica de su interfaz. Herrie por otra parte, está más orientado para aquellos que buscan un reproductor para fiestas, ya que incorpora una funcionalidad llamada party mode que se encarga gestionar la lista de forma que no se repitan las mismas canciones varias veces.
ViTunes y C*Music utilizan una interfaz de ventanas, manteniendo el estilo de combinación de teclas de VIM. Cmus incluso soporta streaming Shoutcast/Icecast.
ViTunes (detrás) y C*Music, dos reproductores de música basados en modo texto.
Existe también un amplio catálogo de clientes de música que utilizan un servidor MPD. Esto es útil tanto para el uso tradicional, en el propio equipo, como para crear estaciones musicales remotas, por ejemplo, un usuario que quiera tener toda su música en un equipo y varios reproductores diferentes que conecten a ese otro equipo para reproducirla.
Music On Console o MOC (también conocido como MOCP) es otro de los reproductores de terminal más exitosos. Utiliza un sistema de servidores muy similar al de MPD, aunque no ofrece soporte de red.
Si te interesan más los reproductores con interfaz gráfica, aquí tienes los 30 mejores reproductores de música gratuitos, para Windows, Mac o GNU/Linux.
12. Reproductores de video
Y ya que hemos dejado el tema multimedia para el final, vamos a terminar con los reproductores de video, un concepto que a priori puede parecer algo absurdo, pero como veremos, también es posible.
En el artículo 20 reproductores de video gratuitos hablé de VLC y mplayer. Ambos permiten la reproducción de videos desde terminal. El primero, VLC, es capaz de mostrar un menú mediante ncurses y framebuffer, reproduciendo vídeos con este comando:
vlc -I ncurses video.avi
El segundo, mplayer, es un reproductor de video minimalista que posee múltiples opciones, una de ellas, utilizar la librería que mencioné al principio de esta guía para la creación de ASCII art a partir de imágenes, consiguiendo el mismo efecto, esta vez sobre videos:
Mplayer utilizando libcaca para reproducir un video de Doctor Who en ASCII Art
Obviamente, esto no es más que una simple curiosidad y anécdota, si quieres seguir indagando en el mundo de las terminales, no te pierdas estas 20 divertidas curiosidades geeks para terminales GNU/Linux.