Danielside

informática softwarelibre divagaciones música

Hay vida en la línea de comandos

Hace unas semanas me he empezado a interesar por el uso de Linux sin entorno gráfico. He ido de más a menos, siendo el último CrunchBang -excelente- que ya es un entorno de por sí minimalista. Pero, yendo más allá me pregunto ¿es posible vivir sin un entorno gráfico?

Los que llevamos un tiempo en esto hemos crecido como mínimo con alguna versión primeriza del MS-DOS, para ir haciendo la transición al horror del Windows 3.1 ¡para trabajo en grupo! y luego ir pasando por los horrores subsiguientes, hasta ser salvados por Linux.

Estando acostumbrado pues a teclear, la respuesta es que vivir en la línea de comandos de un Linux moderno es como un DOS ultravitaminado y mineralizado. Y he descubierto que hay un submundo linuxero que gusta de vivir exclusivamente sin GUI.

Creo que es muy difícil vivir sin GUI, porque por ejemplo ahora no podría estar escribiendo este post, pero sí es verdad que he descubierto que se pueden hacer montones de cosas. Las ventajas son varias: ahorro de energía -una batería del Asus eee 901 que compré hace 5 años me ha durado 4 horas– y el aprendizaje. Al estar forzado a hacer las cosas con comandos es muy interesante si quieres aprender realmente GNU/Linux. Y finalmente destacaría que, al no tener un bonito navegador web, es posible que la capacidad de concentración mejore un poco. Estás menos sujeto a distracciones youtuberas y facebookeras.

Y sin más, vamos allá con lo que he encontrado.

Iniciar el sistema sin GUI

En GNU/Linux los usuarios se conectan a lo que se llaman los tty, vestigios de los teletipos. Con el equipo iniciado, podemos cambiar de tty con la combinación Ctrl+Alt+Fx. Desde F1 hasta F6 tenemos 6 teletipos en modo de línea de comandos y F7 suele corresponder al entorno gráfico. Así que vamos con Ctrl+Alt+F1. Nos pedirá usuario y contraseña y ya estamos dentro. El truco más básico para la «multitarea» es jugar con estos 6 tty conmutando entre ellos.

Poniendo una fuente agradable

El tipo de letra por defecto seguramente no será muy atractivo. Para cambiarlo utilizamos setfont. Para saber qué fuentes hay disponibles nada como un man setfont, RTFM!! Yo tengo la fuente Uni3-Terminus20x10 que me parece bastante agradable y fácil de leer. Para dejar los cambios hechos de manera fija, tenemos que editar el archivo ~/.bashrc y dejar las dos líneas:

force_color_prompt=yes
setfont Uni3-Terminus20x10

La primera viene comentada por defecto, conviene descomentarla para destacar el prompt. La segunda es la que añadimos para configurar la fuente.

Conectarse a la red

Si hemos iniciado en entorno gráfico y hemos cambiado de tty seguramente el gestor de la red nos haya dado ya una conexión. Pero si no es el caso, el mismo network manager que nos ayuda a conectarnos desde el escritorio tiene una buena interfaz por consola. Si ya tienes conexiones guardadas (wireless, cableadas, por GSM, etc.) las puedes activar perfectamente. No puedes, con este programa, crear conexiones nuevas o introducir contraseñas de redes inalámbricas, pero sí puedes usar las que tenías guardadas.

nmcli con

Te debe enseñar todas las conexiones configuradas. El primer campo es el ID. Suponte que tienes una red llamada NSA_stay_away, entonces:

nmcli con up id «NSA_stay_away»

Hay otro programa que intentará llevarte online con los mismos criterios que sigue el gestor de la red, que suele ser la última que usaste y si no va probando con el resto de redes que tengas guardadas, simplemente teclear nm-online.

Para configurar redes nuevas, está el programa wicd-curses, que todavía no he probado. El gestor de conexiones wicd es una alternativa a network-manager, así que para que funcione supongo que habrá que quitar network-manager, dejar que wicd gestione la red y usar wicd-curses o el applet gráfico de wicd.

Correo electrónico: Alpine

Cuando ya tenemos conectividad, una tarea muy común es consultar el correo electrónico. Aquí aparece un gran programa que bien podría convertirse en sustituto de mi cliente de correo estándar 🙂 pero todavía me quedan cosas por aprender: Alpine.

Lector de correo Alpine

Lector de correo Alpine

Rápido como el rayo y repleto de funcionalidades, aunque más difícil de configurar. Para crear una nueva cuenta debemos ir a Setup y luego pulsar L de Collection List. Cada cuenta que tengamos se modela como una Collection List. Pulsamos A para añadir una colección -todos estos comandos están en la parte inferior de la pantalla- e introducimos los datos que nos piden. Para Nickname pondremos un nombre cualquier con el que identificaremos esa cuenta. La parte que ha sido más laboriosa de averiguar y tener bien configurada es la de Server. Este es un ejemplo para un servidor seguro:

<servidor>/novalidate-cert/tls/user=<usuario>

En este ejemplo estás definiendo un servidor de correo (por ejemplo micorreo.com) IMAP, que acepta peticiones por TLS y con el usuario con el que accedas a tu correo (por ejemplo pepito@micorreo.com). Además, se ha configurado para ignorar la validación del certificado para TLS del servidor. Con esto debería bastar consultar tu correo, carpetas incluidas.

Navegador web

En este campo hay bastantes opciones, yo he probado w3m, elinks y links2. El que me ha resultado de interfaz más fácil de usar y de aspecto más agradable ha sido links2 pero w3m soporta tablas y marcos, además de imágenes, lo que lo convierte en una opción muy interesante.

Comentar que para éste y otros programas, el ratón… ¡se puede usar! Simplemente instalar gpm y el cursor aparecerá cuando se mueva el ratón o trackpad. Tiene una funcionalidad básica de copiar/pegar. Si, desde cualquier programa, seleccionas un texto, luego podrás pegarlo en otro sitio pulsando el botón derecho del ratón.

Navegador web links2

Navegador web links2

Doy fe de que w3m muestra imágenes, pero no pongo la captura porque no han aparecido en ella. Es muy interesante navegar con un navegador de modo texto y ver como aparecen las imágenes en el framebuffer.

Lector de RSS: Newsbeuter

Lo único que hay que hacer es instalarlo y editar el archivo ~/.newsbeuter/urls para añadir la lista de fuentes. Cada línea será la URL a pelo de cada fuente suscrita.

Chat xmpp/jabber: mcabber

El más completo y fácil de usar de los que he ido probando, soporta grupos de chat. Está orientado al uso de comandos, que se ejecutarán sobre el contacto activo, por ejemplo un /room join sobre una sala. Muévete por los contactos con PágArr y PágAbj. En la línea inferior puedes introducir un comando comenzando con / (teclear /help) o enviar los mensajes si tienes una conversación activa en la página principal.

Cliente de xmpp/jabber mcabber

Cliente de xmpp/jabber mcabber

Navegador de archivos: Midnight Commander

No es que yo lo use porque al final me resulta más cómodo moverme con los comandos habituales, pero conviene echarle un vistazo al Midnight Commander, clon del legendario Norton Commander. Peter Norton ¿qué sería de nosotros sin él y sus libracos de ensamblador? 😉

Navegador de archivos Midnight Commander

Navegador de archivos Midnight Commander

OwnCloud/WebDAV: cadaver

Tengo un servidor de OwnCloud. A día de hoy todavía no se si se puede hacer funcionar el cliente oficial para linux desde la línea de comandos, lo que sí he descubierto es otra de las ventajas de los estándares, que no me cansaré nunca de promulgar. Como OwnCloud tiene interfaz WebDAV, la solución es sencillamente usar un cliente para este protocolo para línea de comandos ¡y funciona!

En concreto el cliente tienen el bonito nombre de cadaver. Cada instalación de OwnCloud tiene por defecto una ruta WebDAV en <servidor>/remote.php/webdav. Así que para conectarse haremos:

cadaver http[s]://<tu_servidor>/remote.php/webdav

Si lo has configurado por https -yo no contemplaría otra opción- te preguntará si quieres aceptar el certificado. Luego te preguntará por usuario y contraseña y ya estás dentro. La interfaz recuerda mucho a una sesión de ftp por consola. Hay comandos que operan sobre el directorio remoto (ls, cd, etc.) y los correspondientes que operan sobre tu equipo local (lls, lcd, etc.). Para enviar un archivo y que se sincronice haz un put <archivo_local> y para recuperarlo a tu disco local haz un get <archivo_remoto>. Hay más comandos que puedes ir probando, simplemente teclea help, aunque OwnCloud no implementa el estándar completo y algunos no funcionarán.

Visor de imágenes y de PDFs: fbi, fbgs, imagemagick

Simplemente instalarlo y ejecutar fbi imagen y ahí estás, viendo las imágenes en el framebuffer.

En el mismo paquete viene fbgs que se usa de la misma manera y sirve para ver documentos PDF. No es muy sofisticado, en el sentido de que hace una conversión automática a imagen. No sirve como lector general de PDFs, pero sí para echar un vistazo rápido a un PDF de no más de un par de páginas.

Visor de imágenes fbi

Visor de imágenes fbi

Finalmente una alternativa para convertir los PDF a imagen y verlos en toda su plenitud es instalar el paquete imagemagick. Utilizaremos la utilidad convert, que nos genera una imagen por cada hoja del PDF y luego las veremos con fbi.

convert documento.pdf documento.png
fbi documento*.png

Multimedia: mplayer, vlc, mocp

Para reproducir vídeo tenemos mplayer y vlc. Al principio mplayer se hace un poco más complejo de usar -básicamente aprenderse las combinaciones de teclas- pero es más flexible y cómodo. Para reproducir un vídeo:

mplayer -vo fbdev2 <archivo>

Hay que leer un poco el manual con man mplayer para aprender las combinaciones de teclas, pero merece la pena.

Reproductor de vídeo mplayer

Reproductor de vídeo mplayer

VLC tiene interfaz ncurses, que se inicia de la siguiente manera:

vlc -I curses

Reproductor multimedia VLC

Reproductor multimedia VLC

Finalmente mocp parece ser un buen reproductor de música.

Reproductor multimedia mocp

Reproductor multimedia mocp

Para controlar el volumen del audio, si utilizamos el sistema de sonido ALSA, tenemos el programa alsamixer.

La estrella de la muerte: emacs

De paso, estoy aprendiendo a usar el editor de textos definitivo, emacs. Desde que tuve mi primer contacto con él allá en mis años mozos de facultad, he estado queriendo hacerme con él, al menos su uso básico. Y no me arrepiento, porque hay muchas combinaciones de teclas, pero de alguna manera para mi tienen más sentido que las de vi o nano. Así que, en la batalla legendaria emacs VS vi, yo voy con emacs.

Emacs emplea el concepto de buffers, que es el texto que estás viendo en ese momento en la pantalla. Un texto en un buffer puede venir porque has abierto un buffer nuevo y empezado a teclear en él o bien porque lo has leído de un archivo en disco. Así que para mi la opción más básica es Ctrl-x Ctrl-f, que te permite abrir un archivo y mostrar su contenido. Puedes hacer modificaciones y guardarlo con Ctrl-x Ctrl-s. Cuando quieras salir, Ctrl-x Ctrl-c.

GNU emacs

GNU emacs

Emacs no se aprende en una semana, pero quizá su uso básico sí. En la tienda de la FSF tenéis un chuletario muy práctico y también el que podría considerarse manual oficial de GNU emacs: http://shop.fsf.org/category/books/.

Otros comandos de andar por casa

Para la operativa diaria hay comandos que vienen muy bien. Especialmente si operamos sin entorno gráfico en absoluto, al menos nos vendrá bien apagar y reiniciar.

Apagar el equipo

A la hora de apagar podemos hacer lo siguiente, que le dice al sistema que se pare y al equipo que corte la energía:

sudo shutdown -hP now

Batería en equipos portátiles: yacpi

El programa yacpi te da información sobre la batería del equipo. Aparece una pantalla con un resumen. También tiene un modo más simple que te da una salida textual que puedes usar con otros programas. Si miras muy atentamente la entrada ;), verás que he programado un script que usa yacpi y mediante un cron te avisa de si te queda menos del 10% de batería, con un desagradable sonido.

Uso de disco

El programa dfc te da una bonita salida del espacio total y libre de cada partición montada.

Montar un almacenamiento externo

Pongamos el caso. Estamos acostumbrados a enchufar el pendrive y que el entorno nos lo monte, pero ahora no hay ningún agente encargado de la tarea. Pero como mínimo se habrá detectado y creado el dispositivo. Lo primero que tenemos que hacer es averiguar qué dispositivo ha sido creado en /dev.

Si el dispositivo tiene una partición FAT32 y tiene LABEL, podemos hacer:

sudo blkid

Te lista los dispositivos de bloque conectados, por la LABEL podrás reconocer que tu dispositivo está conectado a /dev/sdXX. Otra manera sería:

dmesg | grep sd

Entre los últimos mensajes debería aparecer el dispositivo asignado. Ahora hay que montarlo. Podemos hacerlo cada vez de manera trabajosa:

mkdir pendrive
sudo mount /dev/sdXX pendrive -o rw,user

Y para la extracción segura:

sync
sudo umount pendrive

O bien podemos crear una línea en el /etc/fstab tal que así:

UUID=1234-5678    /home/<usuario>/pendrive    auto    rw,user,noauto    0    0

Teniendo esa línea metida en el fstab (El UUID de tu dispositivo lo ves con el comando blkid) cada vez que quieras montar será tan sencillo como:

mount pendrive

Y para la extracción segura:

sync
umount pendrive

Capturas de pantalla

Hay que abrir al menos dos sesiones en dos tty diferentes. Estando, por ejemplo, en /dev/tty2 haces:

sudo fbgrab -c 1 -d /dev/fb0 captura.png

Eso captura lo que se esté mostrando en la sesión en /dev/tty1.

Help!

Para iniciar la interfaz gráfica a.k.a. «entrar al modo cobarde» ;), nada más fácil: ejecutar startx.

Conclusiones

Todo esto no ha sido más que un leve acercamiento aunque parezca mentira. Hay muchas más vías por donde investigar. Por ejemplo, en lugar de iniciar sesiones en varias tty se puede instalar un gestor de terminales como screen. Por aquí hay un excelente artículo en inglés que te puede dar pistas de por donde seguir.

Hay infinidad de cosas que se pueden hacer mejor en el terminal y otra infinidad que no. Después de este tiempo frikeando a veces el ratón me llega a entorpecer para algunas cosas, pero está claro que hay territorios que difícilmente se podrán conquistar. La idea es acostumbrarse al terminal para hacer cosas rápido y con gran ahorro de energía e iniciar el entorno gráfico cuando sea necesario.


Archivado en categoría(s) Ecologismo, GNU/Linux, Software Libre

Enlace permanente



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.