¿Por qué necesito aprender la línea de comandos en Linux, cuando puedo trabajar en GUI?

Si el trabajo le paga, no por hora, querrá usar la mayor cantidad de CPU y menos tipeo y limpieza. Las secuencias de comandos y otras formas de aprovechar la potencia de la CPU para iterar y ramificar dan como resultado una mayor productividad. Algunas actividades no requieren mucho de este tipo de cosas, pero casi cualquier persona puede beneficiarse al agregar eficiencias hasta cierto punto.

Es un error pensar en mi humilde opinión que fácil de aprender es la única medida del valor del software. Ha sido una práctica común de marketing hacerlo durante décadas, porque las personas son fácilmente seducidas por el bajo costo de entrada y no ven la imagen más grande a más largo plazo. El nivel de productividad para una gran cantidad de trabajo orientado a la GUI alcanza un techo bastante bajo con bastante rapidez en comparación con el uso de herramientas que pueden requerir una cantidad modesta de esfuerzo de aprendizaje, pero que se pagan con creces cuando se aplican juiciosamente.

Hay muchas otras buenas razones como la reproducibilidad (los scripts se pueden ejecutar una y otra vez), la verificabilidad (los algoritmos se pueden examinar y verificar), la transportabilidad (puedo enviarle mi script por correo electrónico o publicarlo en Quora), entre otros.

Respuesta adaptada de estos enlaces:

  • Interfaz de línea de comando Vs GUI
  • Diferencia entre GUI y línea de comando
  • ¿Por qué aprender la línea de comandos y shells de Unix / Linux?

Las líneas de comando son casi lo mismo que la GUI: se trata de decirle a una computadora qué hacer. Si lo que intenta hacer es simple, las imágenes y las palabras son casi lo mismo. Si lo que intentas hacer es complejo, entonces las palabras te permiten explicar mejor.

Ejemplo:

encontrar . -mtime -60 -name ‘* .txt’ -exec sed -i.bak ‘s / fish / carrot / g’ {} \;

  • Buscar en la estructura del directorio actual
  • para todos los archivos modificados en los últimos 60 días,
  • llamado ‘* .txt’
  • reemplace la palabra ‘pescado’ con ‘zanahoria’ en todos ellos.
  • dejando una copia de seguridad con el sufijo .bak .

¿Cómo ilustraría esto gráficamente usando una GUI?

Otro caso de uso:

Bien, acabo de enviar un archivo a un usuario. Ahora, ¿cómo repito eso y solo tengo que cambiar el ID de usuario, o solo el nombre del archivo, sin tener que “completar el formulario” nuevamente (posiblemente cometiendo errores u olvidando exactamente lo que completé en el formulario anterior)?

En una línea de comando, hago una copia de seguridad de una línea (una pulsación de tecla) y cambio “usuario1” a “usuario2” o “archivo1” a “archivo2” y presiono el botón de retorno. Si me doy cuenta de que quiero hacer esto mucho, guardo esa línea en un archivo de script y paso el ID de usuario o el nombre del archivo como parámetro, por lo que solo necesito escribir “./mailusers user3” o “./mailfiles file3”.

Digamos que es mañana y no puedo recordar exactamente qué archivos envié a quién. El historial de mi línea de comando me dice exactamente lo que envié y a quién, y me permite repetir lo que hice exactamente, solo cambiando los pequeños fragmentos que quiero cambiar.

Digamos que es el próximo mes y me doy cuenta de que siempre estoy enviando estos correos electrónicos a las mismas personas, así que recopilo las líneas de comando que lo hacen y las coloco en un archivo de script que hace que todo suceda: “./doall”

Digamos que es el próximo año y me doy cuenta de que siempre estoy haciendo estas cosas al mismo tiempo todos los meses, así que pongo una entrada en mi crontab que ejecutará automáticamente mi script “doall” el día 15 de cada mes.

Digamos que quiero que mi amigo en Eslovenia pueda hacer exactamente lo que hago. Le envío mi archivo de script.

¿Qué interfaz gráfica de usuario existente me permite hacer ese tipo de cosas? Para resumir:

  • guarda automáticamente lo último que hice
  • me da un historial de búsqueda de palabras clave de lo que hice
  • me permite editar cualquier pedacito de lo que hice y repetirlo
  • me permite guardar y parametrizar lo que hice para que en el futuro solo tenga que especificar los pequeños bits que cambian
  • me permite agrupar una serie común de cosas que hago en una secuencia de comandos repetible para que sea fácil hacer todas esas cosas en ese orden
  • me permite ejecutar cualquier cosa desatendida (a través de crontab u otro sistema de programación en segundo plano)
  • me permite pasar mis acciones guardadas y personalizadas a otro usuario, que también puede personalizarlas y modificarlas aún más

TL; DR

Puede realizar fácilmente tareas repetitivas, combinar varios comandos para realizar una tarea que de otro modo no sería posible con la GUI y la capacidad de compartir fácilmente esta automatización con otros.

Para más ejemplos: Introducción a la línea de comando

Pregunta típica del usuario de Windows.

No proporciona ningún contexto para que alguien le dé una respuesta significativa.

La línea de comandos y las GUI tienen diferentes funciones y propósitos.

¿Qué tipo de usuario eres? Usuario promedio, usuario avanzado, programador, administrador de sistemas …

¿Verificas tontos Facebook / YouTube / Vimeo / Vine / Cualesquiera videos, juegas videojuegos, administras servidores, escribes guiones, ves pornografía …? ¿Para qué usas una computadora, amigo?

Para qué utiliza una computadora, responde a su pregunta .

Un usuario común (Joe promedio) puede hacer lo que quiera de una GUI en todos los sistemas operativos (OS X, Windows, Linux).

Un usuario avanzado necesita la línea de comando. ¿Por qué?

  1. Es mucho mas rapido . Por ejemplo: necesita eliminar 100 archivos, nombrados de acuerdo con este formato: filetest_xxx.txt . Con una GUI, debe seleccionarlos todos con el mouse y luego presionar DEL. Desde la línea de comandos, simplemente puedo ejecutar el comando ( suponiendo que ya estoy en la carpeta donde están los archivos ) rm -rf filetest * (UNIX / LInux), o del filetest * (Símbolo del sistema de Windows). ¿Hora? Una fracción de segundo .
  2. Los servidores normalmente no usan GUI : una GUI es una sobrecarga inútil en un servidor. RedHat y CentOS generalmente no ejecutan uno, especialmente si está alejado de un servidor mediante SSH.
  3. La piratería / pentesting / solución de problemas se basa en la línea de comandos : cuando pirateas una computadora (estoy hablando de piratería real, no de la basura que ves en CSI: Cyber u otros programas idiotas de ese tipo), todo lo que tienes es un comando línea. Sin explorador, sin carpetas, sin nada. ¿Cómo vas a navegar en una red, o una PC, entonces (por decir lo menos)?
  4. La programación necesita línea de comandos : hay herramientas IDE, pero también un montón de herramientas de línea de comandos, para Python, bash scripting, etc.
  5. No todo se puede resolver a través de la GUI : los problemas complicados se resuelven mucho mejor y más rápido a través de la línea de comandos y, a veces, esa es la única opción. Por ejemplo, ¿cómo puede verificar si está siendo pirateado desde la GUI? No puedes Debe ejecutar netstat -ano para ver sus conexiones de red y verificar si hay IP extrañas conectadas a su computadora o puertos abiertos inusuales.

¡Esta es la pregunta más simple que he respondido!

Debes aprender a trabajar con la línea de comandos porque la GUI se ha construido sobre el terminal y, por lo tanto, hay innumerables cosas que se pueden descubrir, a menudo también es necesario encontrarlas, solo a través de comandos / programas / utilidades disponibles en Una cáscara primitiva. Además de esto, la GUI tiende a consumir muchos más recursos en comparación con la línea de comandos y, por lo tanto, no es adecuada para ejecutar utilidades intensivas en recursos.

Esto no quiere decir que la línea de comandos / terminal / shell sea superior a la GUI en todos los sentidos, de hecho. los dos no deberían compararse realmente porque la GUI utiliza la incorporación de “movimiento en el espacio de la pantalla” y la línea de comando toma “entradas clave”, sin tener en cuenta la necesidad de pantallas grandes por completo. Depende del usuario encontrar la forma más eficiente.

Porque, en mi experiencia, la gran mayoría de las computadoras que ejecutan Linux son servidores, muchas de ellas son máquinas virtuales, y la mayoría de ellas son básicamente sin cabeza, lo que significa que no tengo teclado, mouse o monitor conectado directamente a ellas para ejecutar una GUI en . Para la mayoría de ellos, uso ssh para llegar a ellos, o una pantalla de consola de hipervisor.

Los servidores rara vez tienen instalados escritorios X11; El hardware sin cabeza no puede ejecutarlo de todos modos, y se debe acceder a VM de forma remota para ejecutarlo, lo que no es tan rápido o efectivo como lo es una interfaz de línea de comando simple.

Mi jornada laboral consiste en administrar alrededor de 75 máquinas Linux, la mayoría de ellas máquinas virtuales, y solo una estación de trabajo Linux con un monitor conectado. Incluso los servidores con pantallas gráficas en ellos no tienen un monitor conectado mientras están en funcionamiento, todos están montados en bastidor.

Si tuviera que confiar en una GUI para administrar todos estos sistemas, no podría hacer el trabajo.

Puede trabajar en GUI si realmente lo desea también. Quiero decir, puedes pasar el mouse sobre un laberinto de menús, o enumerar un montón de carpetas y desplazarte por ellas hasta encontrar una.

También podría aprender la terminal y reducir el tiempo para hacer algo a la mitad o más. Esto no se trata solo de Linux, Windows también tiene una CLI, aunque prefiero usar Linux con bash.

Estoy trabajando en Linux durante los últimos dos años en el mundo real (S / w Company), vas a conectar el servidor Linux con masilla donde no hay GUI para la que tienes que aprender el comando. Y también Linux solo se conoce para el comando El trabajo realizado en el comando será más rápido que la interfaz gráfica de usuario. Si desea aprender Linux, debe buscar el comando que no está en la GUI para obtener una mejor ayuda en el crecimiento profesional y la comprensión.

Como la línea de comandos es más rápida, consume menos recursos y es fácil de automatizar.

More Interesting

Quiero registrar un nuevo dominio para los servicios de Magento. ¿Cuáles son algunas sugerencias para hacerlo?

Cuando rozo mi mano contra mi iPhone en carga, puedo sentir que vibra ligeramente. No siento esto cuando solo apoyo mi mano en mi teléfono, o cuando lo rozo cuando no se está cargando. ¿Por qué es esto?

Estoy estudiando para una licenciatura (segundo año) y quiero tomar el examen UPSC, pero soy muy pobre en inglés. Quiero tomarlo en el idioma inglés. ¿Cómo puedo mejorarlo lo antes posible?

Tengo 19 años y estoy considerando ingresar a la programación. Probablemente no podré hacer nada serio con esto hasta que salga de la universidad en 3-4 años. ¿Vale la pena aprender Ruby on Rails o ya estará desactualizado para entonces?

Estoy tratando de comprar un auto en Indiana y actualmente vivo en Ohio. Tengo la impresión de que tendré que traer mis propias placas y adjuntarlas al automóvil antes de conducirlo de regreso. ¿Es esto necesario? ¿Cuáles son las experiencias de otras personas al comprar un automóvil fuera del estado?

Tengo algunos archivos de video y necesito convertirlos en archivos de texto para mi publicación. ¿Alguien podría sugerirme un buen software para facilitar mi trabajo?

Odio aprender OOP +. ¿Está bien aprender programación de codificación?

Estoy considerando matarme a mí mismo. ¿Cómo puedo hacer esto de manera eficiente, mientras mi muerte tiene un impacto positivo en el mundo?

No sé lo que está pasando conmigo. He perdido todo mi interés de todo, ya sean estudios o cualquier otra cosa. ¿Qué está pasando conmigo?

Busqué en Google “una vez en una luna azul” y Google respondió dándome una conversión en Hz. ¿Qué significa esto?