El excesivo amor por el terminal

Actualización (30/12). Dado el revuelo que ha creado esta entrada, debido quizá a un título poco afortunado, me veo en la necesidad de añadir esta nota aclaratoria.

La entrada no es una crítica al terminal en sí. De hecho, en varias ocasiones queda patente mi opinión de que es una herramienta maravillosa, aunque yo no la use más que para lo preciso.

La crítica del artículo ve encaminada a dos puntos: la visión de que es imprescindible saber usar el terminal para manejar GNU/Linux, y los tutoriales que recomiendan comandos sin una explicación sobre los mismos.


Es un tema que me ha llamado la atención desde que empecé en estos mundillos libres: el gusto que muchos usuarios de GNU/Linux muestran por su línea de comandos. Particularmente, lo que he denunciado más de una vez es la costumbre de guiar al usuario novato con comandos del terminal (preferiblemente sin aclaraciones de qué hace cada comando) en lugar de indicar cómo realizar el proceso desde una interfaz gráfica.

Antes de pasar a valorar la recomendación incontrolada de comandos en tutoriales para novatos, voy a comentaros mi experiencia personal respecto a este asunto, puesto que me ha causado más de un disgusto a lo largo de los años, el último bastante reciente. Hay personas que ven ya no necesario sino imprescindible aprender a usar el terminal, piensan que es la base del sistema operativo, y mi postura choca radicalmente con este planteamiento.

Yo llevo ya casi diez años usando el sistema del ñu y el pingüino y os puedo asegurar que he necesitado el terminal en contadas ocasiones. No empleo nunca (o casi nunca, por aquello de no afirmar categóricamente) comandos considerados básicos como cd, ls, rm y tantísimos otros. No sé configurar mi wifi desde el terminal si no es con un tutorial por delante, ni uso nano para editar mis archivos de texto, y mucho menos me he puesto a aprender vi o emacs a pesar de las grandísimas ventajas que todos pregonan de ellos (particularmente de emacs y su org-mode, entre otros).

La razón es bien simple. Para hacer cd, mkdir, ls, rm tengo mi flamante gestor de archivos (llámese Dolphin, Nautilos, Caja, Thunar o coso se quiera), para configurar mi wifi tengo el widget en el panel, para editar mis archivos de texto plano tengo Kate, Mousepad, Leafpad, Gedit o el que toque. No tengo la más mínima necesidad de salir de ellos más allá que por el puro ejercicio intelectual (totalmente respetable, dicho sea de paso) que hasta ahora no me ha cautivado lo suficiente.

La tesitura de encontrarme un día sin entorno gráfico hace años que no se da (desde que tengo una tarjeta gráfica que no es Nvidia), e incluso si se diera tengo otras pantallas para buscar una solución. Los únicos comandos que utilizo muy puntualmente son el del gestor de paquetes, SSH para hacer alguna gestión en el servidor y alguno para convertir archivos en masa. No necesito más.

Esta situación me parece normal y deseable. En mi día a día no necesito para nada el terminal, y lo mismo puede ocurrirle a cualquier novato que instale una distribución sencilla.

El problema viene cuando busca cualquier tutorial en internet y, en lugar de indicarle que abra su gestor de software y busque el paquete que toque, se le indica que escriba sudo apt-get install, en muchas ocasiones, ya digo, sin explicar para qué es ese paquete. Mil guías para después de instalar una distribución he visto que recomiendan instalar paquetes en un comando inmenso.

No hablamos de un problema con la tarjeta gráfica, con la tarjeta wifi o con el sonido, donde pegar un simple comando es mucho más simple, rápido y aclaratorio que cualquier interfaz gráfica. No. Hablamos de un gesto cotidiano como instalar un programa, un gesto que el usuario debería aprender a hacer con interfaz gráfica que su distribución le proporciona, simplemente por evitar el miedo al cursor parpadeante de la terminal; un miedo que existe, por mucho que los amantes de la consola no quieran ver.

Algunas guías van más allá y no se conforman con recomendar un apt-get install sino que citan cómo instalar el paquete en varias distribuciones distintas, en lugar de usar expresiones como «el paquete está disponible en los repositorios de distribuciones como Ubuntu, Debian y OpenSuse y en el AUR de Arch» (dios mío, a un usuario de Arch no hace falta que le pegues el comando de yaourt, sabe él solito; ha instalado Arch). Tan solo sería necesario especificar si se usan repositorios específicos como un PPA.

El caso que me llevó al último disgusto fue un tutorial en un blog en español (con razón muchos amigos veteranos de las redes libres reniegan de ellos), supuestamente con tutoriales básicos para usuarios novatos, indicaba escribir mkdir y cd para luego realizar otra acción simple. Acciones que se pueden realizar en un gestor de archivos.

Si yo soy un novato poco avispado que ve un tutorial en la red y me doy cuenta de que lo que he hecho ha sido crear y entrar en un directorio con el terminal, formateo mi disco duro y vuelvo a la comodidad del Siguiente, Siguiente, Siguiente.

Hay explicaciones mucho más universales y amigables para un usuario novato. «Busca el paquete en tu gestor de paquetes» (ya el usuario elegirá si usa Synaptic, apt-get o lo que toque), «crea un directorio y entra en él» (y que el usuario elija si hacerlo en el terminal o no) y, si es un tutorial para un problema, explicar para qué sirve el comando («con este comando veremos qué tenemos conectado a nuestro USB para comprobar si detecta nuestro periférico»).

Personalmente me parece este proceso mucho más universal, explicativo y sencillo que dejar que el usuario novato primero encuentre mil tutoriales con mil comandos sin explicaciones y segundo que se limite a pegarlos sin saber qué hacen (claro está, si el talante del novato es leer el tutorial), con lo cual puede ocasionar un problema mayor.

Si se va a hacer un tutorial para el terminal, pues se especifica, copón, que tampoco cuesta trabajo. Y por supuesto no será para novatos; en todo caso, para novatos en el terminal, que puede ser un usuario que lleva diez años en GNU/Linux.

Por supuesto (esto sobraría, pero ya me conozco el panorama), con esto no quiero decir que el terminal tenga que desaparecer. Es es una herramienta que añade (y mucho) más que resta, y su presencia es un componente importante para instalar GNU/Linux dado que propicia un control muy superior sobre el sistema operativo que el que ofrecen las interfaces gráficas (no voy a negar lo evidente). Lo que defiendo aquí es que se recomiende su uso con un poco de cabeza: invitar a usar nuestro sistema a usuarios novatos guiándole sin aclaraciones por un montón de comandos solo conseguirá que GNU/Linux sea por siempre el sistema de frikis a los que les gusta el terminal.

Dejemos la iglesia de Emacs a Stallman y a San Ignucio o, al menos, no prediquemos entre los recién llegados. Ya tendrán tiempo.

Categorías:

19 respuestas

  1. Hola Adrián,

    La terminal o shell es una herramienta imprescindible actualmente para trabajar con GNU Linux. De hecho, una vez la conoces y sabes trabajar con ella, es mucho más rápido solucionar problemas que desde el escritorio. Añadido que muchos programas no se encuentran en los repositorios de la distribución de turno, y no tienes más remedio que usar git o wget para descargarlo, y apt, zypper, dnf, etc para instalarlo. Esto es así, de momento. Quizás llegue un día que con unos cuantos clicks tengamos las aplicaciones instaladas y funcionando, seguro que sí. ¿En el 2016?

    Un saludo

    1. Yo diría que es mucho menos que imprescindible. Muy útil sí (como dices, se solucionan problemas mucho más eficientemente), pero no imprescindible. En distribuciones sencillas como Ubuntu u OpenSuse te dan herramientas gráficas para solucionar problemas, y tienen repositorios externos para instalar cualquier programa. Otra cosa es que el usuario sea un ansioso y no dé tiempo a que se empaquete.

    2. Considero que la terminal es imprecidible o no dependiendo del tipo de usuario que esté frente a la distribución y el uso que le dé.

      Existen muchos perfiles de usuario que con aquellas configuraciones y programas que ya trae la distro, sea instalados o en repositorios les alcanza y no necesitan recurrir a nada más. No son usuarios exigentes.

      Un perfil de estos que se me ocurre para ejemplificar sería:
      * Un usuario raso que utilizará el equipo para navegar (redes sociales, correos, etc), escuchar música y ver videos que descargue.
      * Un usuario corporativo que tiene la PC para trabajar con ofimática y cliente de correos unicamente.

      En ambos casos, con una distro amigable como Ubuntu, Mint o OpenSuse jamás necesitarán abrir un terminal.

  2. Yo uso la terminal porque me encanta, pero sobre todo por costumbre.

    Pero igualo hay mucha herramientas con GUI que las prefiero a su equivalente en terminal, caso del todopoderoso Synaptic de Debian.

    La verdadera fuerza está en el equilibrio de ambas opciones.

    Un saludo

    1. Yo no critico la terminal, critico la evangelización a los nuevos usuarios y el guiarlos sin ton ni son. El terminal está ahí, es maravillosa y quien quiere puede aprender y disfrutarla, pero no es imprescindible.

  3. Acabo de ver el debate en GNU Social y me ha dado ganas tratarlo (junto con otro al que le tengo echado un ojo). En general me alineo con David: hay cosas que solo se entienden si se entiende cómo funciona la terminal. Hablo, por ejemplo, del clásico caso en el que en un sistema basado en Debian hay dos versiones de Java incompatibles y hay que resolverlo con un update-alternatives (si no, no funcionan ciertas cosas; entre ellas, OpenOffice.org/LibreOffice, por ejemplo) o para detectar ciertos problemas que pueden suceder con sistemas de archivos. Ahora bien, es totalmente cierto que en los blogs hay que ser más claros y explicar mejor qué hace cada paso porque un novato no dejará nunca de serlo si no comprende cómo funciona el sistema (y esto vale para todos los sistemas operativos, incluso iOS); yo intento dar la mayor cantidad posible de información, pero siempre se puede mejorar.
    Creo que escribiré ahora una entrada ;)

    1. En el caso que mencionas de Java hay que usar el terminal sí o sí, es imprescindible y para nada criticable.

      Espero leer tu entrada :)

  4. Yo entiendo que la mejor manera de que un novato no pierda interés en aprender, es enseñarle los dos mundos a la vez, para que este habituado, cómodo y con la experiencia como para sentirse con la confianza de resolver los problemas que pueda tener su informática más adelante, ademas de entender los pasos a seguir si no supiera como resolverlo; sin tener que recurrir a la migración a otro S.O. Recordemos que los usuarios no solo somos geek de barba y sin ella. Haciendo encajar a todos por igual, sería mucho más comunitario y mucho más variado.

    1. Concuerdo a medias, ya que para lo que mencionas es necesario que el novato esté interesado y desee aprender. He visto muchos casos donde el novato simplemente «le tocó» usar alguna distribución y solamente desea que funcione y si aparece un inconveniente, que se resuelva de la forma más sencilla posible. Lo he visto mucho en el ambiente laborar, donde se usan distros en vez de windows por temas económicos y los empleados no eligen realmente.

  5. Lo que pasa es que pensamos que nuestra forma de trabajar es posible de generalización para todos y eso no es así. Yo por ejemplo uso bastante el terminal, pero cuando migro personas a ubuntu (no me peguen porque instalo ubuntu, yo uso Chakra jajaja) siempre les enseño a usar las herramientas gráficas, luego si tengo que usar la linea de comandos con ellos, intento explicar cada término de él, cosa que entienda que en sus primeros pasos no es importante para su día a día, pero si quiere aprender de ella y usarla, ahí está.

  6. Undefined

    Este es uno de esos casos en los que estoy parcialmente de acuerdo con todo el mundo y con nadie al 100%

    Ciertamente la terminal me parece tremendamente útil e importante, pero no imprescindible. Es bueno saber manejarte bien en ella y eso ayuda mucho a tener un mayor control sobre tu sistema, conocer bien para qué sirve cada cosa y saber lo que haces. Para algunas tareas como instalar paquetes o programas, realizar operaciones en bucle, etc es incluso más rápido así. Y hacerlo todo o casi todo por comandos puede ser una buena idea como ejercicio intelectual por pequeñas temporadas (como las «semanas negras» de El Binario). De esa manera se va ganando práctica en caso de necesitarlo alguna vez o verse enfrentado a un problema grave que impida el arraque en modo gráfico.

    Pero vamos, de ahí a hacerlo todo o casi todo por comandos SIEMPRE, hay una gran diferencia. Y sobre todo me parece mal que en los tutorias destinados a gente novata se den las instrucciones a base de comandos sin ni siquiera explicar bien qué hace cada cosa. Estoy totalmente de acuerdo contigo en esta parte.

    En mi caso, ahora mismo estoy en un término medio, tal vez más cerca de los comandos que del «todo gráfico». Uso un escritorio muy minimalista y ligero (Openbox en Manjaro), y cosas como instalar paquetes lo hago siempre por terminal. También le doy un uso frecuente a algunas aplicaciones vía comandos como wget, youtube-dl y plowdown para descargar cosas, porque me resulta más cómodo y automático y además evita el consumo exagerado de recursos de muchos servicios de descargas y contenido multimedia. De vez en cuando también uso Links como navegador «en modo texto pero no demasiado» en combinación con Firefox como «navegador normal», según el tipo de web que visite o el según el momento (cuando te pasan un enlace vía Jabber por ejemplo es más cómodo y rápido abrirlo en Links).

    Pero hay cosas que me parecerían muy tediosas e incómodas de hacer vía terminal. Como escuchar música, ver vídeos, gestionar el correo y los feeds, los chats (básicamente Jabber y ocasionalmente IRC), configurar el wifi, etc. Para esas cosas suelo tirar más de aplicaciones gráficas que sean un buen término entre ligeras y funcionales. Audacious y SMPlayer (para música y vídeos respectivamente) me parecen una pasada, por ejemplo.

    Y vamos, de momento estoy muy a gusto en ese término medio entre comandos e interfaces gráficas, y de hecho llevo ya un par de años sin hacer «distrohopping» ni cambios radicales de escritorio o aplicaciones xD.

    Aunque creo que me he desviado un poco del tema que tratas en el artículo y esto parece mas bien una parrafada personal xD.

    Un saludo :)

  7. Es sorprendente y un tanto descorazonador que a día de 2015 todavía estemos con estos temas. Opino que la discusión, cuyas raíces tienen 20 años o más, de lo imprescindible o conveniente del terminal lleva implícita otras cuestiones que habría que tratar en su lugar.
    Libertad: todo el tema del software libre se podría resumir en la frase «Usa lo que quieras siempre que su uso no restrinja la libertad de los demás a elegir también lo que quieran usar». Bastaría aplicar ese principio general al tema de la consola para zanjar el debate. Pero no veo que ni novatos ni expertos lo tengan claro (el alcance de la palabra «libertad» en el tema del software libre), influenciados por su…
    Zona de confort: moderno nombre para la natural tendencia del ser humano a no cambiar, a acomodarse, a adocenarse. Seguida por la también inevitable tendencia a considerar la zona de confort propia como correcta y la de los demás como equivocada. Es acostumbrarse a Windows, a Gnome o a la consola… y empezar a ver los errores de los demás al no usar aquello a lo que nos hemos acostumbrado _nosotros_. Si el software libre significa algo es dejar atrás el acomodarse y abrazar la libertad y sus posibilidades. Y la libertad siempre cuesta.
    Si tanto el «experto» que hace tutoriales para novatos como el novato que los lee tuviesen claras estas cosas, el experto dejaría claro que la manera en que explica como se hace algo es _UNA_ de entre varias. Y si no lo expecifica (por comodidad u olvido) el novato tendría claro que seguro que hay alguna otra manera de hacerlo (quizá a golpe de ratón). Y ya está.
    Teniendo esto en cuenta, quizá se podría hablar de las características que definen a cada interfaz (gráfico o texto) y las potencialidades y particularidades que surgen de ahí. Que por cierto, me sorprende que un profesor de Lengua y Literatura «reniegue» de la consola: la consola tiene la riqueza del lenguaje articulado humano (verbos, preposiciones) y a partir de ahí, sus potencialidades: ser universal, portable (no se puede hacer copia-pega de 20 clics de ratón), perdurable (ese «mkdir» y «cd» del que protestas funcionaría hace 30 años… y seguirá funcionando dentro de 30), repetitivo (bucles), etc. Si los humanos nos comunicamos con palabras y frases y no con iconos será por algo. Lo de que una imagen vale más que mil palabras… muchas veces es al revés. Acuardate de esto no solo cuando enseñes Lengua y Literatura, si no también cuando hables de la consola.
    Una prueba de todo esto que digo es que no hace falta irse al entorno gráfico para que surja ese «choque» de acomodados: estoy harto de ver foros, tutoriales y consejos con el puñetero «apt-get». Los hay que llevamos con el rpm (y el urpmi) más de 15 años… y no vamos a cambiar ahora. A mucha honra. Se olvidan… no del entorno gráfico, si no de una característica de la consola que «apt-get» no tiene: la universalidad. No amigos, «apt-get» no es universal. No todo el mundo usa Debian o Ubuntu. Supongo que lo que sentiste al ver «mkdir y cd» es parecido a lo que siento yo cuando veo «apt-get».
    ¿»Excesivo amor»?. Las actitudes acomodaticias y la restringida oferta de opciones siempre nos parecen excesivas. En los demás.

  8. Estoy de acuerdo contigo en parte acerca del hecho que a veces los usuarios de sistemas Unix (por ser un poco más general) caemos en esa, llamémosla «autocomplacencia» que genera el manejo de la linea de comandos.

    Es más que evidente que la terminal es la interfaz (a nivel de aplicación claro está) mas potente entre usuario y sistema operativo, aunque puede no ser la más cómoda para el no iniciado, pero también es cierto que dado el amplio abanico de posibilidades y alternativas que existen en estos sistemas operativos en materia de gestores de paquetes, sistemas de arranque, entornos de escritorio, etc (lo más alabado por la capacidad de elección y criticado al mismo tiempo debido a la fragmentación) se hace evidente que la linea de ordenes es el medio más eficiente a la hora de guiar al usuario en su interacción con el sistema ya que permite abstraernos según cada caso de las particularidades del sistema del usuario, ya que si hubiera que explicar como realizar una secuencia de pasos a base de pantallazos a través de plasma, gnome, unity, cinnamon, etc …

    En cuanto a lo que dices de explicar los comandos, si que es cierto que en algunos tutoriales/recetas los autores podrían dar alguna explicación rápida y sencilla pensando en los usuarios más inexpertos, aunque claro, tal vez el primer comando que habría que explicar a los no iniciados es el más poderoso que existe, ni más ni menos que man .

    Saludos.

  9. […] en las redes libres de GNU Social. Discutían sobre una tema que abrió Adrián Perales en su blog personal y que luego siguió hablando Eugenio en su gran blog llamado /etc/cron.d. Luego yo escribí esta […]

  10. Nader

    Entiendo que para algunos que usáis Chrome, Spotify y el VLC para usar el PC con Linux os de tedio siquiera abrir la terminal, pero en otros escenarios, que os aseguro que son muchos, y no precisamente de usuario avanzado, la terminal es imprescindible guste o no. Me explico:

    Hay herramientas que no tienen GUI o que desarrollarla es un trabajo de terceros, ó un esfuerzo que, mal que pese, no es necesario en muchas ocasiones, por lo que muchas aplicaciones potentes solo tienen versión por línea de comandos.

    Las aplicaciones ejecutadas desde la terminal tienen un nivel de logueo que no tendrá jamás una aplicación lanzada directamente desde el entorno de escritorio. ¿Cuántas veces instaláis un programa y por falta de alguna librería que no venía en dependencias, directamente ni se abre? Y en ese caso, ¿lo das por perdido sin saber qué narices pasa?

    Y si una máquina con recursos limitados (No digo vieja, ojo), tiene que usarse para dar un servicio concreto, ¿por qué tienen que coparse recursos con un entorno «amigable» para la comodidad de unos pocos?

    Y si hay doscientas distribuciones, cada una con un entorno de escritorio diferente, de su padre y de su madre… ¿al escribir un tutorial de como instalar un paquete hay que escribirlo cinco veces para cada convenio que hayan escogido los creadores de por ejemplo Gnome, KDE, XFCE…? ¿Y si Pepito usa Synaptic en vez del Software Center? La terminal ofrece algo que no tienen los entornos gráficos, y es la universalidad en mayor medida de operaciones que muchas veces se tornan comunes.

    Supongo que tu gráfica será una Intel, o usas drivers libres, porque a día de hoy como seas de usuarios de rama en pruebas de Debian, o de Ubuntu, o de Arch, tienes una alta probabilidad de que al actualizar un día el kernel con el GUI de actualizaciones de Ubuntu, por poner un ejemplo, tu driver de la gráfica no compile y arranques con una pantalla en negro. Y si es así, ni Gedit ni Atom te lo van a arreglar.

    Supongo también que solo utilizas software de PPAs o de repositorios oficiales, porque no conozco ninguna herramienta para compilar un proyecto de, por ejemplo, GitHub, por interfaz gráfica, ver las librerías que faltan para la compilación, etc.

    Entiendo que los tutoriales de Linux en español que circulan por la red sean de dudosa calidad, mal traducidos en muchos casos… (otras muchas entradas de blogs archiconocidos se centran en como cambiar el fondito de pantalla y los iconos a Faenza, ojo), pero creo que esa es otra historia diferente a lo que intentas exponer en un principio. Si eres usuario habitual tras todo el tiempo que llevas, me cuesta creer que no hayas tenido que recurrir realmente a una consola y no hayas sabido apreciar la versatilidad, eficacia y velocidad, pero como bien dicen arriba, todo esto al final se trata de usar lo que a uno le salga de la p., por lo que cada cuál a su manera.

    Tampoco yo creo que un usuario novel tenga que empollarse un manual de grep o de ifupdown, o lo que sea, ni es necesario. Pero el día que lo haga será muy feliz y se preguntará como podía estar siendo idiotizado por navegar por doscientas ventanas para cambiar un ajuste cuando con un comando podía tenerlo hecho.

    Respect!

    1. Ruben alfonsin

      Totalmente de acuerdo. Los que se alarmaron es porque no entendieron bien.
      Es permanente ver indicaciones de consola innecesarios a usuarios obviamente novatos que luego preguntan: Qué es una terminal??

      Hace ya algún tiempo leí unas largas indicaciones de consola dirigidas a alguien que decía ser nuevo en linux;
      …al final de todos los comandos ponía: -Lo mismo puedes hacer con 2 clicks usando tal programa gráfico !!! …pero pensé que así aprendes más

      Yo me pregunto: Habrá llegado el usuario al final? lo dudo

  11. […] a archivo, queremos hacer una instalación rápida, tiraremos de la terminal Linux. Va por ti Adrián Perales […]

  12. […] año ha sido el año de soltar lastre. Una pequeña polémica al final del año pasado fue la gota que colmó un vaso que estaba ya lleno. Todo lo que había […]

  13. […] en tu equipo sin explicar absolutamente nada (aunque de este tema prefiero no hablar mucho, que ya la lié hace años y aún me dura el trauma) y piden enfrentarse a una configuración que requiere leer mucha […]

Deja una respuesta

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