¿Debemos aprender las líneas de comando (por ejemplo, Make, Bash o -o)?

No, no debes. Pero tenga en cuenta que muchas cosas son realmente solo interfaces que convierten los clics del mouse y el contenido de los campos en comandos en un nivel inferior que es transparente para usted. Si desea comprender algo bien y utilizarlo en todo su potencial, a menudo es mejor entender su idioma nativo. Dicho esto, algunas cosas apestan al tratar de hablar en este lenguaje fundamental, razón por la cual Photoshop es mucho mejor para hacer la edición básica en una sola imagen que ImageMagick (nota, yo digo una sola imagen).

En lo que respecta a la fabricación , hay muchos entornos de compilación más avanzados que ocultan totalmente la dependencia y los detalles de la compilación condicional (se esconde de forma predeterminada, en realidad puedes hacer todo lo posible con ellos) y manejarlos en segundo plano ( algo). Xcode por ejemplo. Pero, el cielo te ayudará si todo no siempre funciona de la forma que esperas. Y si alguna vez has programado algo, sabes con qué frecuencia no sucede lo que esperas que suceda. Tener un conocimiento íntimo de cómo funcionan las cosas debajo hace que la depuración de tales cosas sea mucho más fácil. De lo contrario, cuando las cosas no funcionan como se espera (y veo esto todo el tiempo), la gente simplemente toma apuñalamientos en la oscuridad en cuanto a cuál es el problema, iterando diferentes cosas posibles, cambiando esta opción, esa opción, reiniciando, etc. Cuando solo un conocimiento básico de cómo los componentes subyacentes trabajan juntos permitiría verificar sistemáticamente cada parte, probar hipótesis, descartar otras y, en última instancia, verificar que todo funciona como se sospecha. Las herramientas de compilación en Xcode son excelentes y de ninguna manera las estoy atacando, pero tener una comprensión íntima de lo que está pasando debajo de la superficie es invaluable. Con ese fin, a veces es más fácil aprender los conceptos básicos de la compilación y compilar con una herramienta mucho menos sofisticada como Make.


Si está interesado en ser un pirata informático o administrador de sistemas, definitivamente debería aprender bash. Especialmente si eres particularmente perezoso (como yo). Así es, aprender estas herramientas le permite pasar menos tiempo haciendo tareas repetitivas y aburridas, ese es el punto.

También hay otros beneficios para los sistemas de tipo de línea de comando, que le gustarán después de algún tiempo de uso de ellos.

  • Es realmente fácil hacer un seguimiento de lo que hiciste para conseguir algo donde está. A menudo, esto puede ser una sola captura de pantalla que no solo muestra los comandos que escribió, sino también los resultados de esos comandos. Una gran herramienta para esto es el comando de script . Según el archivo de hombre

    La utilidad de script hace un mecanografiado de todo lo impreso en su terminal …

  • Es muy fácil comunicar cómo hacer algo en una línea de comando a otra persona. ¿Alguna vez ha leído un tutorial sobre cómo hacer algo en una interfaz gráfica de usuario: desplazarse por las imágenes de los clics del mouse? ¿Sabes qué es peor? Escribir un tutorial sobre cómo hacer algo en una interfaz gráfica de usuario.
  • Es más fácil escribir cosas que se basan fundamentalmente en la línea de comandos. Secuencias de comandos del ratón y movimientos de clic en horriblemente tedioso. Además, no me hagas empezar con los iconos. Realmente no hay una manera intuitiva de inferir una línea de guión como: ” haga clic en el pequeño botón que parece una flecha tratando de escapar de una caja … o tal vez sea un paraguas en una mesa cuadrada … sí, haga clic en eso y luego una nueva caja mágicamente aparece, haga clic en la imagen pequeña en el cuadro que parece … “ . En ocasiones, las GUI tienen una interfaz de scripting con la que puede hablar directamente (Applescript llama a estas aplicaciones de Scripting), pero NUNCA están mejor documentadas que el software gui en sí. Y luego, imagínese, después de escribir tediosamente un manual sobre cómo hacer cosas en la interfaz gráfica de usuario para su aplicación, quien quiera escribir la documentación en la interfaz de secuencias de comandos que nadie usa de todos modos. Preguntas acerca de las secuencias de comandos, no hay nada más fácil de escribir que una aplicación de línea de comandos.
  • Los patrones de configuración y las tareas comunes, incluso las complicadas, se pueden aplicar muy rápidamente. Puede simplemente cortarlos y pegarlos desde su “cuaderno”.

Dicho esto, algunas cosas son absolutamente desastrosas al hacerlas desde la línea de comandos. Pero, esa es la respuesta a una pregunta diferente.

Aquí hay un secreto: las interfaces de línea de comando son mucho más eficientes que las GUI si sabes cómo usarlas. No tienes que aprender el shell, no, pero no podrás competir con alguien que lo haya hecho. Lo siento, hay una curva de aprendizaje aquí. Es bastante empinada, pero las recompensas son significativas.

Sí, puedes escribirlo si eres bueno y cómodo con él. Pero la mayoría de las tareas se pueden realizar más rápido, sin mencionar el esfuerzo de depuración cuando se escriben scripts, se usan comandos … se toman tiempo para aprender, al igual que con el tiempo y el esfuerzo para aprender un lenguaje de programación o scripting.

Un ejemplo simple, necesita filtrar todos los archivos de música, por ejemplo, archivos mp3 (para copiar o eliminar o simplemente para ver): escribiría un guión, lo probaría o simplemente lo usaría

encontrar . -nombre “* .mp3”

Bueno, la cosa es: bash es un lenguaje de scripting. Es bastante fácil de aprender y es bastante bueno para las cosas en las que se especializa.

Claro, podrías volver a implementar los comandos de bash en C o algo sobre la marcha, pero si eso realmente suena más fácil que aprender bash, eres bastante inusual, de hecho.

Lo mismo ocurre con otras herramientas de línea de comandos, en realidad. Hay muchas interfaces gráficas para muchos, pero si desea automatizar las cosas, las herramientas CLI, combinadas con un lenguaje de scripting como bash, son realmente el camino a seguir.

El problema es que los shells modernos como bash incorporan funciones de edición de líneas y otras cosas como el historial de comandos para uso interactivo, pero su verdadero poder radica en el hecho de que son lenguajes de programación / scripting completamente equipados con una especialización en la interacción con el sistema operativo.

En resumen: si desea realizar la automatización del sistema, los lenguajes de scripting son el camino a seguir, y el shell POSIX sigue siendo el más útil para el propósito de los sistemas similares a UNIX.

Si no tiene problemas para aprender nuevos idiomas, pero las interfaces de la línea de comandos lo desaniman: piense en bash, make & Co. como lenguajes geniales de scripting que son muy especializados para sus tareas, y haga que estas tareas específicas sean mucho más fáciles de automatizar que un lenguaje de propósito general podría …

Ni siquiera es un truco psicológico, realmente lo son.

Yo diría que vale la pena. Recientemente empecé y finalmente estoy empezando a ver lo poderoso que es. Yo personalmente comencé con este recorrido y me ayudó a comenzar el viaje.

Espero que ayude un poco.