¿Cuándo aprender la versión de línea de comando de una herramienta de programación? [cerrado]

12

Casi todas las herramientas de programación tienen una versión de línea de comando; muchos de los cuales también tienen una versión gui. Se necesita mucho tiempo y esfuerzo de memorización para aprender los diferentes comandos y varias opciones / interruptores de la versión de línea de comandos.

Entonces tengo un par de preguntas (que no son necesariamente mutuamente excluyentes):

1) ¿Cuándo se molestaría en aprender / memorizar los comandos en la versión de línea de comandos de una herramienta que también viene en una versión gui?

2) ¿De qué herramientas debo aprender la versión de línea de comando? .... compiladores? sistema de control de versiones? etcétera etcétera

explorest
fuente
Si la herramienta que está utilizando proporciona una interfaz de línea de comandos, pero no tiene una documentación decente, entonces sería cauteloso al usar dicha herramienta. Si lo hace, entonces RTFM. No es tan difícil, y si llega a ese punto, haga una pregunta en StackOverflow.com. Si necesita descubrir cómo hacer algo desde la línea de comandos, tengo fe en que puede hacerlo. Si no está seguro de si necesita resolver algo, entonces probablemente no lo haga. La vida está llena de cosas interesantes fuera del trabajo, aunque sólo hubo tiempo suficiente ...
Trabajo

Respuestas:

21

Puedo ver dos razones por las cuales deberías aprender las opciones de línea de comando de un programa:

  1. Cuando necesite automatizar el programa de alguna manera: cree scripts, procesamiento por lotes, etc.

  2. Cuando necesite optimizar el comportamiento del programa, reduzca la huella de memoria, etc.

En cuanto a qué herramientas debe aprender, bueno, eso depende totalmente de lo que quiera hacer a continuación.

ChrisF
fuente
1
Siempre desea poder escribir un programa para poder automatizarlo ...
1
@ Thorbjørn: ¿no es eso lo que dije? ¿O no estaba claro?
ChrisF
3
Si. Solo hice hincapié en la parte de la automatización: no entender que al principio causará dolor más adelante cuando intente adaptar las metodologías actuales en algo programable.
9

Muchas buenas respuestas ya. Añado un punto de vista adicional más.

Reemplaza la GUI con herramientas de línea de comando, cuando quieres sacar al humano de la ecuación / proceso. Algunas razones y / o beneficios para hacer esto:

  • Te deshaces del error humano (al repetir el comando)
  • Excelente para todo tipo de automatización, por ejemplo, implementación, construcción o ejecución de pruebas con entradas aleatorias.
  • Tienes la oportunidad de ser realmente un poder usuario. Te da la opción de subir en la escalera de la meta programación. No tiene que realizar todas las acciones (haga clic en la GUI) usted mismo, ¡puede escribirlo fácilmente!
  • Puede encadenar herramientas (piense en tuberías Unix).
  • Haga que las computadoras hagan el trabajo: ¡usted no escala, las computadoras lo hacen!

Cuando hacerlo Cuando te encuentres repitiéndote.

Por supuesto, hay lugar y tiempo para la GUI. Pero si realmente desea aprovechar el poder de las computadoras y navegar la ola de la Ley de Moore, debe aprender a programar sus tareas.

Editar : bonificación extra. Puedes ponerte esta camiseta :)

Maglob
fuente
7

Las minas son:

1) Para ser más productivo . Para mí, es más rápido hacer cosas en un shell que simplemente hacer clic. Estoy hablando de usar una herramienta, no configurar un servicio / herramienta / etc., porque a veces es más rápido tener un asistente y simplemente hacer clic en Next Next Next, aunque esos asistentes también existen en versiones de línea de comandos :)

2) Para usar la versión de línea de comandos en sus aplicaciones. Por ejemplo, supongamos que desea convertir un PDF a un archivo de texto . Si usa la versión GUI, está bien. Pero si también proporciona una interfaz de línea de comandos donde puede hacer algo como: ./pdf2text input.pdf output.txtentonces, si necesita desarrollar una aplicación que lea texto de un PDF, puede usarlo fácilmente, sin usar ninguna API o hacer algunos ajustes. .

3) Aprender las cosas generales de una aplicación. Por ejemplo, si tiene diff instalado en Windows y un front-end para comparar dos archivos. Eso es perfecto. Pero, ¿y si necesita usarlo en Linux ? Puede encontrar el mismo front-end para Linux, pero ¿qué pasa si no existe? Tendrá que aprender nuevamente cómo usarlo en Linux, instalar un nuevo front-end y acostumbrarse a trabajar con él. Si ha aprendido a usar la versión de línea de comandos, no la habría necesitado;)

Aproximadamente 3) ... algunas personas tienen muchos problemas para acostumbrarse a trabajar con Git en Windows. Dicen que no hay buenos front-end en Windows, pero si solo aprende la línea de comandos, no tendrá problemas. Funciona de la misma manera. Por supuesto, el problema es que a veces las personas tienen miedo de la línea de comandos ;)

Le sugiero que aprenda versiones de línea de comandos de:

  • Compiladores como gcc
  • Depuradores como gdb
  • Git ;)
  • y muchas herramientas en GNU / Linux que puedes trabajar en Windows como egrep , awk , find , ...
Oscar Mederos
fuente
Yeahhhh +1 para git: D Aunque diff es el único ejemplo para el que no usaría el comando real; Prefiero vimdiff (aunque supongo que técnicamente eso también es terminal, así que lo que sea)
alternativa
@mathepic tienes razón, pero vimdifftambién es una herramienta de línea de comandos, ¿no?
Oscar Mederos
Al mismo tiempo, su ncurses (creo, no estoy seguro), así que hago una pequeña distinción.
alternativa
Sí, pero también los tomo como herramientas de línea de comandos :)
Oscar Mederos
@mathepic: La respuesta a su preocupación:gvimdiff
Lie Ryan
3

¿Por qué necesita confirmar la sintaxis del parámetro en la memoria? Por eso manexiste y --help( /?si estás en tierra winblowz).

Creo que puedo buscar las opciones para casi cualquier cosa en menos de un minuto. El objetivo es recordar lo que los comandos hacen , para que sepa lo que debe mirar hacia arriba!

Orbling
fuente
1

Pragmáticamente, todo se reduce a si la herramienta de interfaz gráfica de usuario no tiene una característica o no, o si es más rápida desde la línea de comandos.

Sin embargo, el beneficio adicional de usar una línea de comando es que es más probable que lea la documentación y descubra lo que realmente está sucediendo. Especialmente con su ejemplo de control de versiones, hacerlo desde la línea de comandos le enseñará bastante.

jdl
fuente
1
  • Compilador: será necesario para compilaciones automatizadas
  • Make o su sistema de compilación: las compilaciones automatizadas detectan errores
  • Control de versiones: creo que sí, pero es el menos importante de los tres. Pero luego puedo hacer otras operaciones de línea de comandos, por ejemplo, revisar los mensajes de cambio.

Pero no necesita memorizar las opciones para el compilador o make; una vez que estén configurados para el proyecto, no tiene que cambiarlos con frecuencia.

Brian Carlton
fuente
1

Creo que los beneficios de aprender una herramienta de línea de comandos superan con creces los beneficios de usar la GUI. Hay muchas veces que las características de GUI pierden, sin embargo, no sería justo decir que este es siempre el caso (es decir, mire cmake en Windows; no hay razón para usar la línea de comandos fuera de las circunstancias normales).

En lo que respecta a la memorización, no hay necesidad particular de recordar el conjunto de comandos de ese programa la primera vez que lo usa. Simplemente marque el manual (si usa el manual en línea, de lo contrario use "man" en * nix) y si necesita una funcionalidad particular (que no haya memorizado), simplemente consulte el manual. La memorización de estas cosas debería venir naturalmente por el uso. Por ejemplo, ejecuto "tar" y "gzip" desde la línea de comandos muy a menudo, pero tendría que hacer referencia al manual para realizar tareas que normalmente no hago.

Sobre todo, si está enviando un producto o enviando algún tipo de código fuente o de otro modo a otro desarrollador, es mucho más fácil incluir un esqueleto de comandos que escribir instrucciones detalladas sobre el uso de la GUI. Si el desarrollador no comprende las opciones de línea de comando que usó, simplemente puede buscarlas. Explicar una GUI a alguien no siempre es la solución más portátil.

Saludos,
Dennis M.

RageD
fuente
0

Todo, para que no dependas de X11 / Windows para el desarrollo. Es bueno poder desarrollarse completamente desde una terminal.

alternativa
fuente
Estoy de acuerdo contigo;)
Oscar Mederos
0

Respuesta corta: El mejor momento para cambiar (es decir, usar la línea de comandos) es AHORA . Los hombres de verdad usan el teclado. Los hombres de verdad NO hacen clic. Período.

Respuesta más larga: en una perspectiva a largo plazo, además de ser más productivo y, por lo tanto, más valioso (menos probable que sea despedido), el uso de la línea de comandos puede / lo hará / debería hacerlo más inteligente (debido a la práctica / memorización sustancial) y más saludable (porque usar ambas manos simultáneamente en la interfaz de línea de comandos en lugar de una con el mouse es más adecuado para la ergonomía).

Aquí hay un artículo / ensayo altamente recomendado, " Por qué Windows causa estupidez ", en http://www.over-yonder.net/~fullermd/rants/winstupid/1


fuente
3
Bromeando o no, esa mierda de hombres de verdad no va a ganar ningún premio, aunque estoy 100% de acuerdo en que usar CLI es mucho más productivo, el ruido machista es simplemente tonto.
ocodo
0

No estoy seguro de que alguna vez intentes memorizar los interruptores en una herramienta de línea de comandos. Si está creando un script de shell o lo que sea para automatizar alguna tarea, será mejor que busque todas esas cosas; pase los treinta segundos ahora, para evitar horas de dolor descubriendo qué salió mal más tarde. Si está utilizando la misma herramienta de línea de comandos una y otra vez, tal vez debería hacer un script de shell ...

mjfgates
fuente