Entonces, ¿cuál es la ventaja de usar el terminal? [cerrado]

61

Instalé Ubuntu hace unos días. Por lo que puedo decir, la terminal es una gran parte de cualquier distribución de Linux. Mi pregunta en este punto es por qué? Cuando busco algo al respecto, los comandos ingresados ​​en el terminal se hacen fácilmente a través de la GUI. Entonces, ¿cuáles son las ventajas de usar el terminal?

Editar: Gracias por las respuestas a todos. Después de hurgar un poco, y con la ayuda de sus respuestas, ahora puedo entender su uso. Puedo decir con orgullo que durante los últimos 3 días, lo he estado usando prácticamente para todo, y espero tener una mejor comprensión de los scripts.

    
pregunta LurkDog 21.02.2012 - 00:49

16 respuestas

79

La terminal en Unix es una herramienta maravillosa y poderosa. Cuando se hace una transición desde el mundo de Windows, es difícil apreciar esto porque el shell de Windows (cmd.exe) es más bien, como bien digo, deficiente. La mayoría de los shells predeterminados de * nix (% ​​co_de%, bash , etc.) tienen varias ventajas:

  1. Está estandarizado a través de POSIX y la especificación Single Unix, por lo que una secuencia de comandos que escriba para una computadora probablemente funcione en todas las máquinas compatibles con POSIX (suponiendo que se limite a comandos estándar, de los cuales hay lotes) ). Microsoft tiene la costumbre de incluir herramientas en algunas versiones y no en otras, lo que hace que la programación por lotes sea muy impredecible

  2. Debido a que Unix se creó desde la terminal, la mayoría de todo es configurable desde la línea de comandos. Windows fue así hasta cierto punto, pero optaron por dejar caer el subsistema de 16 bits y el DOS. Ahora la GUI es la única forma de cambiar algunas cosas en Windows.

  3. Porque es muy flexible. Los comandos se pueden juntar ( zsh ), se pueden capturar ( ls | grep filename ) y se pueden sustituir ( gcc program.c > ./standard_out 2> ./standard_error o ls /home/'whoami' )

  4. Porque las utilidades de UNIX están diseñadas para hacer una cosa y hacerlo bien. Basta con mirar ls /home/$(whoami) , awk , grep , sed o un host de otros. Por sí solos, logran una única tarea, pero dado el # 3 y el # 2, pueden integrarse en expresiones poderosas.

  5. Debido a la capacidad de automatizar tareas. Los scripts wget y bash permiten simplificar o automatizar por completo tareas largas, complicadas o repetitivas.

  6. Porque los humanos son propensos al error. Los scripts de shell relativamente cortos se pueden usar para cambiar la configuración de forma consistente. Se pueden incorporar controles de seguridad en los scripts, en lugar de confiar en que los usuarios sepan qué comandos son seguros para ejecutar en diferentes circunstancias.

respondido por el Huckle 21.02.2012 - 01:02
36

Hay una multitud de ventajas al usar el terminal. Los argumentos van desde la comodidad, la productividad hasta la nostalgia. Aquí hay algunos:

  1. Hay algunas cosas que usted (más que yo) simplemente no puede lograr usando una GUI. No es porque no sea factible, es simplemente porque nadie se molestó en escribir una GUI para estos comandos. Por ejemplo, si quería usar algún comando, di mdf2iso para convertir un montón de archivos en una carpeta. Puedo canalizar la salida usando el operador | y hacerlo de una sola vez.

  2. Para muchos de nosotros, así son las cosas. Tenga en cuenta que esto tiene poco que ver con la experiencia. No soy un experto en Linux, solo soy un usuario habitual, pero prefiero usar la línea de comandos siempre que sea posible. Esto no es tanto una discusión sobre por qué debería usarse, sino también por qué se usa.

  3. Scripts son poderosos. Puede usar las condiciones if y loops for etc. y hacer todo tipo de cosas combinando la potencia anterior. No hay límite en el poder de las secuencias de comandos. Puede automatizar tareas complejas que se adaptan a sus necesidades. Para tales cosas, a menudo es difícil encontrar una aplicación GUI que coincida con sus requisitos.

  4. Puede realizar tareas por inicio de sesión remoto, incluso con configuraciones de ancho de banda muy bajo.

  5. Ayudar, escribir tutoriales, etc. es mucho más fácil si puede especificar los comandos a la otra persona. De esta manera, no tienes que tomar capturas de pantalla. Esto tiene otra ventaja para la persona que también recibe ayuda, que nos lleva al próximo punto.

  6. El uso de la línea de comando generalmente le permite comprender mejor lo que está haciendo y lo que está sucediendo.

  7. Y, por último, es simplemente más rápido. Es mucho más rápido escribir algunas letras y presionar TAB que hacer clic a través de un sinfín de opciones de menú. Puede usar !mo para invocar el último comando que ejecutó que comenzó con mo (por ejemplo, montar) y así sucesivamente.

Estoy seguro de que hay mil razones más por las que no lo mencioné.

    
respondido por el ste_kwr 21.02.2012 - 01:05
18

¿Finalmente? Porque empiezas a crear scripts, y lo maravilloso de los scripts es este:

En lugar de cambiar la forma de hacer las cosas, puede cambiar la secuencia de comandos que las hace.

Puede escribir scripts para la terminal, y generalmente no puede hacerlo para programas gráficos, por eso la gente usa la terminal.

Pero siento un indicio de "¿Por qué debería usar la terminal?" en tu pregunta. No puedo responder eso por ti, siendo tú y yo no, tú, pero esta pregunta relacionada puede ofrecerte una idea:

¿Cómo / por qué las personas terminan usando ser usuarios de línea de comandos?

Creo que podrías identificar tres etapas: (1) uso renuente; (2) conocer el mínimo necesario para la comodidad; (3) encontrar uno disfruta scripting. Uno puede obtener el uso de la terminal en los tres niveles; descubre por ti mismo dónde se detiene tu curiosidad. Además, uno puede atravesar estas etapas muy rápidamente si uno simplemente decide que quiere aprender scripts de shell.

  1. "Necesito este programa, así que supongo que usaré la línea de comandos".

    Comienza, generalmente, porque las personas encuentran que necesitan algo especial o complicado, y el programa que Google / un foro / un amigo recomienda que el resultado sea un programa de línea de comandos. Entonces, abren un terminal, y escribe lo que las instrucciones les dicen que escriban, y así es como ellos vienen a usar la terminal. Ejemplos de tales programas que te hacen usar la línea de comandos:

    • LaTeX / TeX / ConTeXt (diferentes sabores del mismo sistema) toma un texto archivo, y lo convierte en un hermoso documento PDF. Consulte este presentación para obtener ejemplos; Me gusta 'pp' y 'LM-Volume-manuscrito'.
    • rename es un pequeño y encantador programa que te permite cambiar el nombre de toneladas de archivos de acuerdo a un patrón Un ejemplo simple: rename s/myfile([0-9]+).txt/-myfile.txt/ convierte todos los archivos con el nombre 'bond007.txt' en '007-bond.txt', no importa qué El numero es. Quizás quiera cambiar el nombre de algunos archivos de álbumes de música, verá.
    • Quizás quiera ejecutar un sitio web desde su computadora, y usted descubre que si quieres decirle al servidor web que se ejecute / detenga / actualice su configuración, debe emitir un comando de terminal.

    Tenga en cuenta que hay interfaces gráficas para muchos de estos sistemas, pero eso está al lado del punto: la invocación de línea de comandos es común y tradicional, muchos HOWTO asumen esto, y así es como comienza. Porque:

  2. "Está bien, ahora estoy un poco más cómodo".

    Una vez dentro de la línea de comando, la gente comienza a pensar: ¿No sería fácil? si pudiera ...

    • ... ¿cambiar directorios para buscar dentro de otro? ( cd mydir , para 'cambiar directorio')
    • ... recibe un recordatorio rápido de los archivos de texto en este directorio? ( ls *.txt , para 'list')
    • ... mover / cambiar el nombre de un archivo? copiar un archivo? ¿Eliminar un archivo? ( mv myfile newname , cp myfile mycopy y rm myfile , para 'mover', 'copiar' y 'eliminar')
    • ... ¿abrir este archivo para editar / ver? ( gedit myfile , o leafpad , o nano , o vim , o lo que sea).

    Una vez que las personas han aprendido estos cinco comandos, son esencialmente cómodo en la línea de comando: pueden moverse, mirar e interactuar. Incluso es un poco poderoso: puede operar en grupos completos de archivos en una vez con comandos como mv iceland-*.jpg My_Iceland_Pics/ , y no es genial?

    Ahora, mucha gente felizmente se detiene aquí. Saben cómo usar el terminal, lo usarán cuando lo necesiten, y eso es todo. Este es el nivel "el terminal es útil". Las personas que prefieren la terminal, sin embargo, generalmente lo hacen porque necesitan / quieren / sienten que no pueden prescindir del poder espectacular que ofrece la secuencia de comandos. Y eso generalmente comienza así:

  3. "¡Oye, un script es solo algunos comandos en un archivo!"

    Esta realización puede conducir a varios cambios adicionales, según la persona. Muchos simplemente van 'meh', por supuesto; no tiene sentido aprender lo que no necesitas. De todos modos, cosas como estas pueden suceder:

    • Empiezas a usar pequeños guiones para automatizar cosas aburridas. Algunos de ustedes escribete a ti mismo; algo que obtienes de otra persona; y eventualmente empiezas a modificar los guiones de otras personas.
    • Descubres esa gran categoría de cosas que solías hacer a mano, porque requería pensar en el medio, se puede automatizar usando estos dos constructos:
      • if something_is_true; then step1a; step2; else step1b; fi y
      • for file in list_of_files; do process1 $file; process2 $file; step3; done
    • Ante una tarea aburrida o compleja, descubres que preferirías escribir un script para ello que hacerlo a mano. Esto ni siquiera es para ahorrar tiempo o reutilizable, necesariamente, pero simplemente porque es más divertido.
    • Empiezas a usar mucho el flujo de trabajo 'usar script en el archivo fuente', porque se ajusta a tu forma de pensar.

Es posible que no experimentes todas o ninguna de estas cosas.Sin embargo, cuanto más se apliquen a usted, mejor será la terminal para usted . Descubrirás por ti mismo cuánto terminas usándolo. ¡Diviértete!

Post scriptum. En la programación, los flujos de trabajo script -> run -> result y input -> process -> output son muy comunes, y el terminal es espectacularmente adecuado para estos flujos de trabajo. Agregue a esto el hecho de que el shell realmente no es más que otro lenguaje de programación, y verá por qué existe una gran superposición entre los usuarios de la línea de comandos y los programadores.

    
respondido por el Esteis 21.02.2012 - 18:06
15

Otro punto para agregar: ¡Es divertido usar la línea de comando! ;)

( enlace )

    
respondido por el red_trumpet 21.02.2012 - 01:11
12

Estaba respondiendo una pregunta similar como esta el otro día. Resultó que esta persona nunca usó métodos abreviados de teclado para hacer nada, por lo que resultó ser una larga discusión. Espero que estén familiarizados con eso ... haría mis puntos más comprensibles.

Considere usar un procesador de textos. Si guarda un archivo, puede usar un atajo de teclado como ctrl-s. Alguien podría decir: "Prefiero usar el menú. No me ahorra mucho tiempo usar el acceso directo. Y si tiene que guardar un archivo nuevo, tiene que navegar por el sistema de archivos hasta el directorio y luego escribir el nombre de todos modos ". Por lo tanto, este objetor es correcto, ya que cada atajo de teclado por sí solo no ahorra una cantidad significativa de tiempo. El verdadero ahorro está en encadenar atajos juntos, p. seleccionar todo, cortar, pegar. Incluso los fabricantes de procesadores de palabras se han dado cuenta de esto y han hecho más conveniente acceder a la estructura de archivos usando el teclado, p. poder acceder a las carpetas / ubicaciones recientes usando la pestaña y las teclas de flecha.

Por supuesto, seleccionar fragmentos de texto requiere muchas veces del mouse ... esta es la razón por la cual los programadores y las personas que hacen mucha edición prefieren usar un editor de texto que admita el uso completo del teclado para que nunca tenga que usar un mouse. El mouse no es lento , pero es propenso a errores; es particularmente fácil seleccionar o eliminar el texto incorrecto.

¿Qué tiene esto que ver con la línea de comando? Una ventaja de la línea de comandos es que evita usar el mouse lento y propenso a errores. En cambio, escribe y lo hace desde una ubicación; no tiene que buscar otro menú o hacer clic allí y luego aquí. Es la misma razón por la que a la gente le gusta usar los atajos de teclado del navegador web (para abrir nuevas pestañas / ventanas, para usar Gmail, etc.); Tendrán que escribir la URL (o el correo electrónico o lo que sea) de todos modos ... ¿por qué alejar su mano de las teclas?

Pero lo más importante es que, al igual que los atajos de teclado, son los más poderosos cuando comienzas a usarlos todos juntos (en lugar de solo uno o dos), puedes encadenar comandos para hacer cosas más poderosas que tomarían para siempre a través de la GUI o Ni siquiera podrías imaginarte haciendo nada. Por ejemplo, desde la línea de comandos, puede decirle a su navegador web, quiero actualizar esta página web cada 30 segundos, buscar un texto determinado y cuando eso suceda, envíeme a mí y a un grupo de contactos un correo electrónico diciendo que ha aparecido el texto en la página web. Como otro ejemplo, puede decirle a su computadora, quiero revisar TODOS los correos que escribí, buscar una referencia a este libro en particular, producir una lista de fechas en las que lo mencioné y a quién, ordenar la lista de acuerdo con frecuencia, y ponerlo en este correo electrónico Estoy escribiendo ahora.

    
respondido por el Chan-Ho Suh 21.02.2012 - 01:07
11

La CLI es rápida de usar cuando sabes exactamente lo que quieres hacer y cómo hacerlo. Puede ser mucho más eficiente que usar una GUI. Además, si desea conectarse de forma remota a su máquina, la CLI es mucho más fácil en un enlace lento. Si te sientes cómodo con la CLI, también puedes aprovechar los scripts.

Si google cli vs gui obtendrás toneladas de hits, por ejemplo:

enlace

Su pregunta no es específica de Ubuntu, Linux o incluso de la PC: se puede debatir sobre este tema desde cualquier sistema que admita gui y cli, p. configurar enrutadores Cisco.

    
respondido por el Amir 21.02.2012 - 01:01
10

Hay una serie de buenos puntos en las respuestas, pero aún tengo un punto adicional por hacer. A veces, después de instalar o actualizar una aplicación GUI no se inicia y te deja sin ningún mensaje de error. En estos casos, puede ser muy útil abrir una ventana de terminal e iniciar la p desde la línea de comando. Casi siempre se proporciona más información en el terminal que la presentada cuando se inicia desde la GUI.

    
respondido por el fragos 21.02.2012 - 09:21
8

Mi favorito es escribir menos . ¿Cómo puede ser que te escuche? Bueno, inicio de sesión, búsqueda inversa o flecha arriba) para un comando que escribí la semana pasada y presiono retorno de carro. La alternativa es mucho más clics del mouse (e intentar recordar).

Mi segundo favorito es que es más fácil responder preguntas sobre desbordamiento de pila; No se necesitan capturas de pantalla, solo texto.

    
respondido por el ctrl-alt-delor 21.02.2012 - 14:39
5

¿Qué ocurre cuando necesitas hacer algo como "raíz"? Iniciar sesión a través de la GUI como root es una mala idea (y ni siquiera creo que Ubuntu te permita hacerlo, por defecto).

Además, considere que la GUI de Linux (X11) es simplemente un programa en ejecución como todo lo demás. Si X11 se cuelga, te alegrará de que conozcas tu línea de comandos.

    
respondido por el Aaron 21.02.2012 - 01:05
5

Solo quiero contribuir con un ejemplo, que considero muy útil, de las instrucciones para agregar el PPA para VirtualBox. Cuando agrega un PPA, también debe registrar la clave pública, por lo que el método de GUI:

  • descarga la clave con Firefox (u otro navegador)
  • abre Synaptic (u otra GUI de APT)
  • busca el elemento de menú correcto
  • busque el archivo descargado
  • finalmente confirma

¡Explicar esto en una guía del usuario puede ser costoso! En cambio, se puede hacer con un solo y amp; línea de comando simple:

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
    
respondido por el Pisu 21.02.2012 - 21:28
3

La línea de comando funciona bastante bien, como lo hace en Windows. ¿Recuerda que el cuadro de entrada de texto de msdos con el fondo negro?

Le da al usuario un medio de emitir comandos directamente a la computadora sin la pérdida de recursos de la computadora que trae una GUI. También es una forma de emitir comandos potentes para hacer cosas que no se pueden hacer a través de una GUI.

No estoy afectando la utilidad de la forma de trabajar de la GUI, pero en manos de un operador experto, la línea de comandos puede ser extremadamente rápida y eficiente. En manos de un verdadero mago, la línea de comando hace milagros. Apenas he arañado la superficie de las posibilidades, aprendí algo nuevo todos los días. Nunca seré un mago, demasiado viejo, pero me gustaría ser un trabajador promedio un día ...

Bienvenido a Ubuntu y a Ask Ubuntu. ¡Este es un gran lugar!

    
respondido por el Vic 21.02.2012 - 01:13
3

Para un principiante, la terminal es una tarea difícil de usar, pero si comienzas a aprender a usarla, se vuelve más fácil. Una vez que se sienta cómodo, le dará la sensación de que puede manejar las cosas cuando salen mal.

Por ejemplo, cuando un programa GUI se niega a iniciarse y usted no tiene idea de lo que está mal, puede ejecutar el comando en un terminal y, a menudo, ver el motivo del problema en la salida del terminal. Luego, puede copiar algo de eso en una búsqueda y encontrar la respuesta, si es necesario.

Puede ingresar un comando con "--help" y obtener una lista de opciones de línea de comando que pueden ser útiles para algunos casos especiales.

Si algo sale mal y la GUI ni siquiera se ejecuta, a menudo puede abrir un terminal virtual o posiblemente solo una línea de comando desde el inicio y solucionar el problema editando un archivo de configuración o ejecutando un programa de línea de comando. .

    
respondido por el Marty Fried 21.02.2012 - 22:48
2

En pocas palabras, tiene más de cien claves que pueden controlar / hablar / ordenar la computadora en lugar de un solo mouse con dos o tres botones. Cuantos más controles tenga, más rápido podrá ser.

Para cualquiera que no sepa tipear, un teclado en pantalla podría verse genial. Por más rápido que pueda usar el mouse, no puede escribir más rápido que con el teclado.

Si está usando mouse / windows, es como la computadora que lo controla y dictando lo que puede hacer. Cuando te acostumbras al mundo de la línea de comando, puedes sentir todo el sistema bajo tu control esperando tu orden. Necesita experimentarlo para comprender la diferencia.

    
respondido por el balki 24.02.2012 - 17:35
1

Ni siquiera veo el punto de marcar una respuesta jajaja. De todos modos. El terminal es como tu CMD en Windows. Antes, antes de que apareciera GUI, las personas programaban y trabajaban en modo DOS, prácticamente Terminal. La GUI está hecha para hacer la tarea más simple y fácil, pero a veces el uso de la GUI en realidad requiere más trabajo.

Por ejemplo, como desarrollador, si solo quiero compilar un programa C ++, no tengo que usar IDE sofisticado. IDE es una interfaz GUI que tiene muchas características avanzadas que un editor de texto simple no ofrece. Entonces, en lugar de descargar un IDE realmente grande para una tarea simple, puedo escribir lo siguiente y ejecutará mi programa C ++, cuyo archivo ejecutable se llama main .

g++ -o main main.cpp
chmod 777 main
./main

Si interpreta un idioma de interpretación como Python, puede ingresar al shell interactivo de Python. Sí. Hay capas interactivas que están envueltas en una buena GUI, pero es más lenta y con errores (¡oh, piensa en IDLE ...)

A veces, cuando la GUI está rota, puede intentar usar Terminal para abrirla. A veces, algunos softwares en Linux no ofrecen una buena GUI o es muy difícil encontrar dónde está el iniciador de la GUI, simplemente vaya a Terminal y escriba, por ejemplo:

xpdf homework.pdf

Esto abrirá la tarea.pdf para ti.

En otras situaciones, GUI no ofrece suficiente poder y magia para realizar su tarea. Algunas funciones de búsqueda son muy básicas y no puede aplicar la búsqueda de profundidad o el patrón de búsqueda complicado. Pero a través del terminal, se puede emitir un comando con un patrón realmente muy complicado y largo.

La GUI es agradable, pero a veces a través de comandos también puedes simplificar las cosas. A veces simplemente no tienes opción: tienes que usar comandos a través de terminales.

    
respondido por el CppLearner 21.02.2012 - 21:38
1

Agregaría un punto que parece no mencionarse, incluso si no es una verdadera ventaja.

Piense en el hecho de que la GUI es como un "panel" que da acceso a las funciones que tiene el programa real. Muchos programas, especialmente si se encuentran en una versión anterior, no tienen una GUI y solo pueden ejecutarse desde la terminal. Y, como otros señalaron, incluso las aplicaciones que tienen una GUI, a veces no tienen interfaces para todas las funciones; para esas funciones, debes usar la terminal.

    
respondido por el clabacchio 23.02.2012 - 11:19
0

Todo el mundo ha descrito las ventajas, me gustaría agregar que, aparte de la transparencia, donde se puede ver todas las dependencias enumeradas, su velocidad. Después de la desaparición de la sináptica de Ubuntu, el centro de software es demasiado lento, especialmente en máquinas más lentas, aquí la instalación desde la terminal es mucho más rápida.

    
respondido por el Arup Roy Chowdhury 21.02.2012 - 14:44

Lea otras preguntas en las etiquetas