Por qué los usuarios de Windows deberían retomar la línea de comandos
Las Interfaces de Línea de Comandos (CLI) suelen ser repudiadas por muchos usuarios de Windows, que las perciben como antiguas, arcaicas y anacrónicas. Esta cultura empezó a asentarse, posiblemente, tras la llegada del kernel NT a los sistemas operativos de escritorio orientados a las masas, más concretamente a partir de Windows 2000 y XP. Sin embargo, desde el lanzamiento de Windows 10, la compañía ha decidido vitaminar la CLI, potenciando un PowerShell que por entonces ya contaba algunos años y desarrollando cosas como WinGet, un gestor de paquetes inspirado en aquellos disponibles para Linux.
Puede parecer que aquellos que emplean la línea de comandos son personas que intentan demostrar algún tipo de superioridad moral, pero nada más lejos de realidad. La razón de por qué la consola sigue siendo muy usada en sectores como la programación es debido a que es más transparente y mucho más rápida que ir golpe de clics, además de ser más eficiente una vez se domina. Esto ha sido una constante desde que las interfaces gráficas existen.
Sin embargo, esto no quiere decir que haya que retroceder 50 años en el tiempo, ya que las interfaces gráficas (GUI) son más fáciles de aprender y superiores en flexibilidad, personalización y la administración de la multitarea. Lo inteligente al final no es enfrentar las GUI con las CLI, sino saber usar la mejor interfaz según las circunstancias.
No hace falta irse por las ramas para encontrar ejemplos en los que el uso de una de las interfaces es más conveniente que la otra. Un oficinista a buen seguro trabajará con una suite ofimática que funcionará mediante una GUI, y es que un software de ese tipo podría ser complejo de manejar con una línea de comandos o una interfaz semigráfica.
Por otro lado, un desarrollador de Ruby on Rails, un framework para la creación de aplicaciones web, verá la línea de comandos como una mejor herramienta gracias a la precisión y la transparencia que ofrece a la hora de realizar ciertas acciones (como el uso de los generadores), si bien es probable que edite el código mediante alguna aplicación gráfica como SublimeText o Visual Studio Code.
¿Sabías que la interfaz de línea de comandos puede ser útil para ti?
La interfaz de línea de comandos es vista desde hace mucho como algo orientado a usuarios avanzados, pero la realidad es que también puede ser muy útil para los usuarios que no tienen profundos conocimentos. Sí, como estás leyendo.
No se trata de aprender a usar una línea de comandos, sino más concretamente de beneficiarse de una de sus principales virtudes: la velocidad. Empleando Linux, vamos a poner un ejemplo de por qué el uso de la línea de comandos puede ser beneficioso para el usuario que no tiene profundos conocimientos de computación.
Desde hace años existen distribuciones Linux que funcionan de forma gráfica y que son muy amigables, pero posiblemente debido a la lenta maduración de las GUI y los automatismos, las personas habituadas a dicho sistema nunca han perdido la costumbre de usar la línea de comandos.
Donde los usuarios de Linux ven más rápido el uso de la línea de comandos es en la configuración inicial del sistema operativo, y para ello vamos a exponer el caso de Fedora Workstation, una de las ediciones de la distribución comunitaria patrocinada por Red Hat. Este sistema puede ser configurado de forma gráfica si se ven los comandos como listas de paquetes, pero por mucho que uno corra con DNFDragora no va alcanzar nunca la velocidad que se obtiene con la terminal.
Aquí ponemos un ejemplo de la instalación del soporte multimedia en Fedora 35 Workstation copiando y pegando el principal comando de instalación:
Y aquí buscando los paquetes a través de DNFDragora, el gestor gráfico de paquetes disponible para el sistema:
En el primer caso, el usuario solo tiene que copiar el comando, pegarlo en la consola, pulsar intro y confirmar los cambios, mientras que con el gestor gráfico de paquetes la tarea es más complicada al tener que seleccionar primero la arquitectura y luego introducir al menos parcialmente el nombre de los paquetes, ir seleccionándolos uno a uno, volver a realizar otra búsqueda para seleccionar otra vez, y así sucesivamente hasta tenerlo todo y pulsar después sobre ‘Aplicar’. Si las imágenes no han hablado por sí solas, seguro que la explicación lo ha hecho debido a que la instalación mediante interfaz gráfica es bastante más enrevesada que con la línea de comandos.
Llegados a este punto, posiblemente algunos empiecen a ver que el excesivo apoyo de muchos usuarios de Windows en las GUI les ha vuelto menos eficientes a la hora de realizar ciertas tareas específicas. A esto se suman las graves inconsistencias que al menos ha arrastrado Windows 10, lo que entorpece la navegación entre las opciones avanzadas a aquellos que tienden a usar los sistemas operativos por instinto (como este servidor).
Las interfaces gráficas son más cómodas, pero en un tutorial complejo en formato texto aumentan la posibilidad de que el usuario se equivoque a la hora de lidiar con un menú o una ventana, y eso sin contar los constantes cambios que Microsoft introduce en Windows desde la versión 10, los cuales pueden hacer que los tutoriales acaben obsoletos de un día para otro. Aquí la línea de comandos vence al ofrecer una interfaz más consistente y aparentemente menos cambiante en el tiempo.
Dicho de manera más explícita, los usuarios de Windows, incluso aquellos que no tienen conocimientos avanzados, deberían de tener más tutoriales hechos a base de copiar y pegar comandos y menos de ir fijándose en las ventanas, ya que los tutoriales mediante CLI son más rápidos de ejecutar, más consistentes a nivel de interfaz y en teoría más duraderos en el tiempo.
¿Qué interfaces de línea de comandos existen para Windows?
Microsoft pone a disposición para Windows dos interfaces de línea de comandos: Símbolo del Sistema (más conocido como CMD) y PowerShell.
CMD es un intérprete de línea de comandos disponible para los sistemas operativos OS/2, eComStation, ArcaOS, Windows (familias NT y CE) y ReactOS, aunque es importante tener en cuenta que no todas las implementaciones de CMD funcionan igual. Se trata de un desarrollo bastante veterano al haberse iniciado en el año 1987 y es el sucesor del COMMAND.COM usado por defecto en MS-DOS, Windows 95 y 98, Windows 98 SE y Windows Me.
CMD es mayormente compatible con COMMAND.COM y emplea, al menos básicamente, los mismos comandos internos, así que quien sepa usar la consola de MS-DOS sabrá usar esta interfaz incorporada a Windows NT. Sin embargo, el Símbolo del Sistema ofrece algunas extensiones adicionales, como unos mensajes de error más detallados, soporte para navegar a través del historial de comandos mediante las teclas de cursor superior e inferior, completación de la línea de comandos para rutas de ficheros y carpetas, el tratamiento del carácter caret (^) como uno de escape y el soporte de expansión de variable retardada con ‘SETLOCAL EnableDelayedExpansion’.
A pesar de su gran veteranía y a la existencia de un sucesor, CMD sigue siendo preinstalado en Windows y todavía es muy utilizado como CLI por parte de algunos usuarios del sistema de Microsoft.
Por su parte, PowerShell es bastante más reciente que CMD. Habiendo “nacido” en el año 2006, la intención de Microsoft con su creación fue la de aportar un intérprete de comandos orientado a objetos que fuese más moderno para la administración de los sistemas y la automatización de las tareas.
PowerShell tiene una estrecha relación con el framework .NET debido a que el primero es compilado con las herramientas del segundo. PowerShell está orientado a la automatización de las tareas y diseñado no solo para interaccionar estrechamente con Windows, sino también con otros destacados productos de Microsoft como SQL Server, Exchange e IIS.
En resumidas cuentas, PowerShell es un intérprete de línea de comandos de última generación que pretende ajustarse mejor a las demandas actuales a la hora de administrar un sistema operativo y ciertas herramientas, principalmente aquellas que son parte estrecha del gigante de Redmond.
Si bien PowerShell fue exclusivo de Windows durante sus primeros 10 años de existencia, Microsoft tomó en 2016 la decisión de volverlo Open Source y multiplataforma, por lo que desde ese año también está disponible para Linux y macOS. La compañía se ha guardado algunas cartas en la apertura de la tecnología, pero ha mantenido la estrecha relación con .NET incluso más allá de su propio sistema operativo.
Desde que Satya Nadella llegó al puesto de CEO de Microsoft, no es extraño ver a destacados productos de la compañía tener versiones para Linux y macOS. La sorprendente liberación del código de la parte del servidor de .NET fue el pistoletazo de salida para una tendencia que se ha mantenido firme gracias a la gran aceptación que ha tenido, por ejemplo, Visual Studio Code.
Conclusión
Llegados a este punto, uno se plantea si ciertos usuarios de Windows son realmente más modernos cuando se aferran a las interfaces gráficas o si bien se han vuelto menos eficientes a la hora de configurar o arreglar ciertas cosas concretas en sus computadoras.
Muchos tutoriales serían más sencillos, claros, fáciles de seguir y más rápidos de ejecutar si, en lugar de mostrar una gran cantidad de pantallazos, solo se tuviera que copiar una serie de comandos de CMD o PowerShell. Y es más, en realidad los tutoriales en los que la consola es necesaria en Windows nunca han terminado de desaparecer, pero la cultura extendida entre los usuarios del sistema de Microsoft ha terminado haciendo que un alto porcentaje de ellos rechacen de plano las CLI.
¿Deberían los usuarios de Windows recuperar el hábito de usar la línea de comandos? Es obvio que el uso de una CLI para las tareas comunes es absurdo, pero dicha interfaz todavía tiene mucho que decir en nuestros tiempos debido a las ventajas que retiene frente a las GUI.