En realidad, existen dos tipos de programas a los que los usuarios pueden acceder: uno es el tipo “GUI” (“Interfaz gráfica de usuario”) y el otro es el tipo “Línea de comando”.
Un programa GUI generalmente tiene un montón de elementos de menú, tal vez algunos botones y algunas cosas para llenar formularios. Por lo general, debe cargar algunos archivos, realizar algunas operaciones a lo largo del tiempo, y luego proteger sus resultados. Espera ejecutar el programa durante un minuto más o menos u horas.
Todo lo que puede hacer dentro del programa está en los diversos menús y otras opciones.
- ¿Qué podría estar causando que mi computadora portátil HP se congele, incluso después de limpiar el disco duro? ¿Cómo rectifico esto?
- ¿Qué computadora portátil es mejor que la MSI Titan GT80?
- ¿Hay mejores computadoras que MacBooks?
- ¿Qué hace que un ventilador portátil funcione constantemente?
- ¿Debo comprar una PS3 o una buena computadora portátil de configuración para jugar?
Un programa de línea de comandos está diseñado para ejecutarse dentro de una ventana basada en texto llamada “shell”. El shell le permite escribir los nombres de los programas, qué opciones se les pasan, y generalmente los nombres de los archivos en los que van a operar. Los programas pueden hacer preguntas y cosas así, y tal vez incluso abrir una ventana de “GUI”, pero generalmente solo hacen su trabajo y salen. En general, ha terminado con un programa de línea de comandos en cuestión de segundos.
Las ventajas de una GUI son obvias: mucho menos escribir, una interfaz visual que le presenta todas las opciones que tiene, sin necesidad de leer un manual o incluso aprenderlo. La mayoría de las veces, puede abrir un programa que nunca ha usado antes y tener una buena oportunidad de hacer su trabajo.
Las ventajas de los programas de línea de comandos son un poco más sutiles.
Por lo general, un programa GUI es una cosa monolítica masiva, y hace exactamente lo que quieres, o estás jodido. Cada programa tiene que hacer TODO lo que necesita. Por ejemplo, si el programa enumera algunas cosas y los resultados están en orden alfabético, entonces si eso es lo que desea, está bien. Pero si desea los resultados en orden alfabético, pero con mayúsculas antes que minúsculas, entonces no puede elegir, o tiene que buscar en una montaña de cuadros de diálogo y pantallas de preferencias para encontrarlo. Cada programa ocultará esas opciones de manera diferente … algunos programas no ofrecerán la opción … las aplicaciones se vuelven GIGANTICAS porque cada una de ellas tiene que ofrecer todos esos tipos de características. Es un gran dolor.
Con las herramientas de línea de comandos, el mantra es que cada programa hace exactamente una cosa muy bien. Entonces, por ejemplo, un programa busca en los archivos patrones, muestra líneas que coinciden, otro ordena líneas de texto de acuerdo con un conjunto de reglas configurables, otro cuenta líneas, palabras o caracteres en un archivo, otro arroja líneas que son duplicados … allí Hay cientos de estos pequeños programas que hacen un solo trabajo. Luego, el programa de shell le permite conectarlos entre sí. Entonces, si quisiera encontrar cuántas líneas de un archivo en particular contienen la palabra “Hola” y contar cuántas de esas líneas son únicas, podría escribir:
grep Hola <archivo1 | ordenar | uniq | wc -l
… que usa el programa “grep” para encontrar todas las líneas en el archivo 1 que contienen la palabra “Hola” – luego pasa la salida al programa “ordenar” que las ordenará en orden alfabético – luego “uniq” eliminará cualquier duplicado y “wc -l” contará el número de líneas y mostrará el resultado.
O podría encontrar cuántos archivos “.jpg” hay en mi carpeta de inicio:
encontrar ~ -name \ *. jpg -print | wc -l
O (para elegir un ejemplo loco) podría hacer una lista de todos los errores que obtengo al compilar solo los archivos C ++ que edité en los últimos 45 minutos … y luego encontrar los que no contienen la palabra “wibble”, guarde la lista en un archivo llamado “temp”, luego ordénelos en orden alfabético inverso, muéstrelos en tres columnas y envíelos a la pantalla de 10 líneas a la vez:
encuentre ~ -amin 45 -name \ *. cpp -exec g ++ {} \; El | grep -v “wibble” | tee temp | sort -r | columna -c 3 | más -10
No hay absolutamente NINGUNA herramienta GUI que pueda hacer algo remotamente tan complicado … sin embargo, es bastante simple para cualquier persona con experiencia en línea de comandos.
Hay literalmente cientos de herramientas de línea de comandos para todo tipo de pequeños pasos: una vez que haya aprendido un número razonable de ellos, el poder que está a su alcance es fenomenal … sin embargo, debe escribir los comandos y tomarse el tiempo para aprenderlos. . Mejor aún, si eres un programador, puedes escribir tus propias herramientas, o si no lo eres, puedes construir cadenas de comandos y ponerlas en un archivo que pueda ser tratado como una sola herramienta a partir de ese momento.
Aunque las herramientas de línea de comandos requieren un esfuerzo considerablemente mayor para aprender y obligarlo a escribirlas en la computadora en lugar de hacer clic en las cosas con un mouse, la potencia que obtiene de ellas excede todo lo que obtiene de una herramienta GUI.
Con una herramienta GUI, obtiene fácil acceso a las cosas que el autor de la herramienta pensó que podría necesitar hacer, pero al precio de ser completamente incapaz, por un medio, de hacer cosas que no creía que necesitara hacer. hacer.
En la práctica, salto de un lado a otro entre las herramientas GUI y las herramientas de línea de comandos.