Imagen conceptual de un terminal Linux lleno de texto en un portátil.

La línea de comandos tiene casi 50 años, pero no está desactualizada. Los terminales basados ​​en texto siguen siendo la mejor manera de realizar muchas tareas, incluso en la era de los equipos de escritorio gráficos y los dispositivos de pantalla táctil.

De hecho, la línea de comandos se está volviendo más respetada que nunca con Microsoft creando una nueva y poderosa aplicación de Terminal de WindowsEl entorno PowerShell de Windows 10 es sorprendentemente poderoso, pero Microsoft aún hizo todo lo posible para agregar soporte para básicamente el entorno completo de línea de comandos de Linux a Windows 10.

La línea de comandos fue una vez la única opción

En algún momento, si deseaba interactuar con una computadora, escribía. Eso fue todo. No había nada más. Eso puede sonar restrictivo y arcaico, pero como un paso adelante de tener que usar tarjetas perforadas o cintas de papel perforadas, la mecanografía fue radical y transformadora. Y la migración de teletipos  con sus rollos de papel a terminales con pantallas de tubos de rayos catódicos (CRT) fue otro cambio fundamental en las interacciones entre humanos y computadoras.

Ese paso allanó el camino para que el shell interactivo realmente se hiciera realidad. Ahora puede enviar instrucciones a la computadora y ver rápidamente las respuestas en su pantalla. No más clac-clac-clac mientras esperaba que la impresión en papel saliera ruidosamente de su teletipo.

Muy bien, pero eso fue entonces, esto es ahora. La informática es un juego de pelota completamente diferente. Aparte de los casos obvios de bloqueo, como usar una computadora que no tiene un entorno de escritorio gráfico instalado, o usar una computadora remota a través de SSH a través de una conexión de bajo ancho de banda, o controlar un sistema integrado o sin cabeza, ¿por qué usar la línea de comandos en un escritorio gráfico?

Jerga explicada

Algunas personas usan términos como línea de comando, ventana de terminal y shell de manera casi intercambiable. Esa es una jerga incorrecta. Todos son bastante diferentes. Están relacionados, pero no son lo mismo.

Una ventana de terminal es una ventana en un entorno de escritorio gráfico que ejecuta una emulación de un terminal de teletipo.

El shell es el programa que se ejecuta dentro de la ventana del terminal. Toma su entrada y, dependiendo de lo que haya escrito, intenta interpretar y ejecutar las instrucciones en sí, pasarlas a algunas de las otras utilidades que componen el sistema operativo o encontrar un script o programa que coincida con lo que ha escrito.

La línea de comando es donde escribe. Es el mensaje que presenta el shell cuando está esperando que ingrese algunas instrucciones. El término "línea de comando" también se usa para referirse al contenido real de lo que escribió. Por ejemplo, si habla con otro usuario de la computadora sobre una dificultad que tuvo al intentar ejecutar un programa, es posible que le pregunte: "¿Qué línea de comando usó?" No preguntan qué caparazón estaba usando; quieren saber qué comando ha escrito.

En conjunto, estos se combinan para formar la interfaz de línea de comandos (CLI).

¿Por qué utilizar la línea de comandos en 2019?

El CLI puede parecer retrógrado y confuso para aquellos que no están familiarizados con él. Seguramente no hay lugar en un sistema operativo moderno para una forma tan anticuada y geek de usar una computadora. ¿No renunciamos a todo eso hace décadas cuando aparecieron ventanas, iconos y ratones y se pusieron a disposición los entornos de escritorio gráficos con interfaces gráficas de usuario (GUI)?

Sí, la GUI ha existido durante décadas. La primera versión de Microsoft Windows se lanzó en 1985 y se convirtió en la norma de escritorio de PC con el lanzamiento de Windows 3.0 en 1990.

El sistema X Window, utilizado en Unix y Linux, se introdujo en 1984Esto trajo entornos de escritorio gráficos a Unix y sus muchos derivados, clones y brotes.

Pero el lanzamiento de Unix es anterior a estos eventos en más de una décadaY como no había otra opción, todo tenía que ser posible a través de la línea de comandos. Toda la interacción humana, toda la configuración, cada uso de la computadora tenía que poder realizarse a través del humilde teclado.

Entonces, ipso facto , la CLI puede hacer todo. Una GUI todavía no puede hacer todo lo que puede hacer la CLI. E incluso para las partes que puede hacer, la CLI suele ser más rápida, más flexible, se puede programar y es escalable.

Y hay un estándar.

Están estandarizados gracias a POSIX

POSIX es un estándar para sistemas operativos similares a Unix, básicamente, todo lo que no sea Windows. E incluso Windows tiene el Subsistema de Windows para Linux (WSL). Abra una ventana de terminal en cualquier sistema operativo compatible con POSIX (o casi compatible) y se encontrará en un shell. Incluso si el shell o la distribución proporcionan sus propias extensiones y mejoras, siempre que proporcionen la funcionalidad principal de POSIX, podrá utilizarlas de inmediato. Y sus scripts se ejecutarán.

La línea de comando es el mínimo común denominador. Aprenda a usarlo y, independientemente de la distribución de Linux y el entorno de escritorio gráfico, podrá realizar todas las tareas que necesite. Los diferentes escritorios tienen su propia forma de hacer las cosas. Las diferentes distribuciones de Linux incluyen varias utilidades y programas.

Pero abre una ventana de terminal y te sentirás como en casa.

Los comandos están diseñados para funcionar juntos

Cada uno de los comandos de Linux está diseñado para hacer algo en particular y hacerlo bien. La filosofía de diseño subyacente es agregar más funcionalidad agregando otra utilidad que se puede canalizar o encadenar junto con las existentes para lograr el resultado deseado.

¡Esto es tan útil que Microsoft hizo todo lo posible para agregar soporte para la línea de comandos completa de Linux a Windows 10!

Por ejemplo, el sortcomando lo utilizan otros comandos para ordenar el texto en orden alfabético. No es necesario incorporar la capacidad de clasificación en cada uno de los otros comandos de Linux. Generalmente, las aplicaciones GUI no permiten este tipo de interfuncionamiento colaborativo.

mira el siguiente ejemplo. Esto usa el lscomando para listar los archivos en el directorio actual. Los resultados se canalizan al sortcomando y se ordenan en la quinta columna de datos (que es la). La lista ordenada se canaliza luego al headcomando que, por defecto, enumera las primeras diez líneas de su entrada.

ls -l | sort -nk5,5 | cabeza

Obtenemos una lista ordenada de los archivos más pequeños en el directorio actual.

lista de los diez archivos más pequeños en el directorio actual

Al cambiar un comando, usando en taillugar de, headpodemos obtener una lista de los diez archivos más grandes en el directorio actual.

ls -l | sort -nk5,5 | cola

Esto nos da nuestra lista de los diez archivos más grandes, como se esperaba.

lista de los diez archivos más grandes en el directorio actual

La salida de los comandos se puede redirigir y capturar en archivosLa salida normal ( stdin) y los mensajes de error ( stderr) se pueden capturar por separado.

Los comandos pueden incluir variables de entorno. El siguiente comando enumerará el contenido de su directorio de inicio:

ls $ INICIO

Esto funciona desde donde se encuentre en el árbol de directorios.

listado del directorio de inicio en la ventana de terminal

Si la idea de todo ese mecanografiado todavía le desconcierta, técnicas como completar tabulación pueden reducir la cantidad de escritura que tiene que hacer.

Los scripts permiten la automatización y la repetibilidad

Los seres humanos son propensos a cometer errores.

Los scripts le permiten estandarizar un conjunto de instrucciones que sabe que se ejecutarán de la misma manera cada vez que se ejecute el script. Esto aporta consistencia al mantenimiento del sistema. Las comprobaciones de seguridad se pueden integrar en los scripts que le permiten al script determinar si debe continuar. Esto elimina la necesidad de que el usuario tenga el conocimiento suficiente para tomar la decisión por sí mismo.

Debido a que puede  automatizar tareas usando cron Linux y otros sistemas similares a Unix, las tareas largas, complicadas y repetitivas pueden simplificarse o, al menos, resolverse una vez y luego automatizarse para el futuro.

Los scripts de PowerShell ofrecen una potencia similar en Windows y puede programarlos para que se ejecuten desde el Programador de tareas. ¿Por qué hacer clic en 50 opciones diferentes cada vez que configura una computadora cuando puede ejecutar un comando que cambia todo automáticamente?

Lo mejor de ambos mundos

Para obtener lo mejor de Linux, o de cualquier sistema operativo como usuario avanzado, realmente necesita usar la CLI y la GUI.

La GUI es insuperable para el uso de aplicaciones. Incluso los defensores más acérrimos de la línea de comandos tienen que salir de la ventana del terminal y usar suites de productividad de oficina, entornos de desarrollo y programas de manipulación gráfica de vez en cuando.

Los adictos a la línea de comandos no odian la GUI. Simplemente favorecen los beneficios de usar la CLI para las tareas adecuadas. Para la administración, la CLI gana sin lugar a dudas. Puede utilizar la CLI para realizar cambios en un archivo, un directorio, una selección de archivos y directorios o cambios completamente globales con la misma cantidad de esfuerzo. Tratar de hacer esto con la GUI a menudo requiere acciones repetitivas y prolongadas del teclado y el mouse a medida que aumenta el número de objetos afectados.

La línea de comando le brinda la mayor fidelidad. Cada opción de cada comando está disponible para usted. Y muchos de los comandos de Linux tienen muchas opciones. Para tomar solo un ejemplo, considere el lsofcomando. Eche un vistazo a su  página de manual y luego considere cómo lo incluiría en una GUI.

Hay demasiadas opciones para presentarlas al usuario en una GUI eficaz. Sería abrumador, poco atractivo y torpe de usar. Y eso es todo lo contrario de lo que pretende ser una GUI.

Son caballos para cursos. No te alejes del caballo CLI. A menudo es el corcel más rápido y ágil. Gánate tus espuelas y nunca te arrepentirás.