En el mundo moderno de hoy en día de aplicaciones basadas en navegador de varios gigabytes podemos llegar a estar abrumados por entornos gráficos que nos interrumpen continuamente. A veces es bueno reducir el tamaño y enfocarse al estilo VT100. Aprovechemos la potencia de la terminal para hacer las cosas con una selección de aplicaciones, utilidades y un par de juegos para la consola de Linux.
|
etiquetas: abstinencia , gráfica , entorno gráfico , gui , terminal , tui , vt100
Las consolas se usaban (y muchos las seguimos usando) porque tienen un ancho de banda brutal en la dirección humano->maquina y no necesitas mirar a la pantalla si tienes practica. El autocompletar está vivo y vive en Mayorca. Las paginas de manual tienen información util y al grano, y muchas veces puedes crear macros para comandos que usas constantemente. Los GUI no se hicieron para trabajar mejor, se hicieron para bajar el liston de habilidad necesaria para bajar, y para dar una cantidad brutal de ancho de banda maquina->humano a costa de quitarnos un monton de flexibilidad. No son un paso adelante si pretendes trabajar, la verdad.
Yo desde luego, en todas las sesiones de escritorio, tanto en el trabajo como en equipos domésticos siempre tengo una ventana de terminal abierta.
De la misma maneras es bastante absurdo usar el terminal para navegar por internet, realizar edición fotográfica o de vídeo, o tareas parecidas en el que el uso del ratón es intensivo.
La consola no es binario, es un lenguaje que ha evolucionado hasta permitir logica, bucles, alias... y que permite cosas muy importantes para la productividad como es la memoria muscular y el uso sin mirar constantemente a la pantalla. Intenta tu usar un GUI mientras prestas atención a un proceso productivo o a otra cosa importante, como por ejemplo leer los datos que quieres introducir. Unas risas.
Además X Window es remoto desde el inicio, es decir permite mostrar gráficos en un terminal de un programa que se ejecuta en un servidor, algo que a día de hoy sigue sin permitir MS Windows. (No es Remote Desktop).
Si en Unix la consola sigue vigente es porque es más eficiente para muchas tareas, no porque no haya otra cosa.
Que la consola no deja de ser una evolución de los interruptores no hablas con la maquina directamente si no que usas binarios que hacen cosas limitándote ese ancho de banda que tanto mencionas va ser que somos demasiado analógicos para ese nivel de comunicación.
Y ahí me di cuenta que no tienes ni p*** idea de lo que dices.
No digo que sea mejor para todo, pero tiene mucha utilidad y flexibilidad, y segun para que cosas efectivamente va mejor.
Cuando entré en mi primer curro se reían de mí porque usaba Vim. Las risas pronto se tornaron en bocas abiertas.
En lo que Eclipse tardaba en arrancar, yo ya había hecho un par de commits
Los interfaces graficos no son para trabajar mejor, son para aprender mas rapido como funciona un proceso. En algunos casos de uso tal vez es deseable que tu aplicación sea para tontos, pero no siempre es asi.
Tu cafetera necesita un botón porque no han creado una que predica que la vas usar no que el botón sea el mejor método para controlarla.
El coche se usa en esencia para ir de A a B y por eso hay gente intentando crear coches que se conduzcan solos.
La consola con teclado es un método para comunicarse con la maquina no es efectivo pero si el mejor respecto a otros en muchas situaciones hasta que alguien cree un sistema mas eficaz.
Se agradece comentarios de cajón como el tuyo.
Y por no hablar que para trabajar desde casa los días que quiero solo necesito el ancho de banda del SSH y no pasar toda lammierda gráfica. Mis compañeros se queja. De que no les va bien y yo encantado.
El interfaz gráfico es muy bonito e intuitivo, pero no es nada potente para la mayoría de cosas que la gente con conocimientos suelen hacer. La consola no ha sobrevivido hasta nuestros días como una reminiscencia del pasado, hace gala de su valor todos los días.
De hecho, cada vez que ves a alguien buscar en google, linuc s'a roto k'a pasao? La solución se suele reducir a una o dos líneas de código mientras que su equivalente gráfico son 4 minutos buscando por botones y pestañas. Y esto no sólo es aplicable a Linux, Powershell es de las cosas más potentes que se han parido y no es precisamente antiquísimo.
Pero si, hay muchas otras tareas que es absurdo empeñarse en seguir haciéndolas con el terminal, entre ellas destaco el puto VIM para editar texto que está diseñado por el mismísimo demonio...
El otro día en un training deje en bragas al presentador pidiéndole que me dijera como hacer por CLI todo el ventaneo que se había tirado media hora para hacer.
>_
Como interfaz. Mucho más intuitivo. Y si te hubiese tenido que deletrear comando por comando por que el lumbreras no se le hubiese ocurrido pensar que comandos como "prntRsltIng: allrslt(0-10)" es fácil de leer y memorizar ya habría sido la hostia.
Por cierto, señalar que en el comando anterior hay una "i" mayúscula. Ahora imagínate leyendo eso de unas instrucciones impresas o escritas.
En resumen: que haya interfaces de mierda no quiere decir que el concepto de interfaz gráfica sea peor que el de línea de comandos. Sobre todo cuando no son excluyentes y puedes tener una interfaz que integre la interfaz gráfica para tareas poco repetitivas donde no quieres tener que recordar el comando y todos sus parámetros y una interfaz de comandos para tareas repetitivas donde puedes usar macros y lo que te salga del pirulo.
en.wikipedia.org/wiki/C_shell
El terminal "es" scripting. El intérprete usado puede ser bash, csh, zsh... y por encima si quieres python, php...
Otra cosa es que uses scripts de orden única.
Generalmente administro una cantidad de servidores importante, la mayoría remotamente y sin terminal todo sería mucho mas lento. Es un dolor tener que administrar windows por el GUI.
Supongo que fuera del ecosistema osx no hay forma de hacer funcionar cosas de automator.
Nunca te acostarás sin saber una cosa más.
Existe igualmente la opción de hacerlo por el tipo "mime", pero es menos eficiente buscando pero mas certera con el tipo de archivo.
La consola está bien cuando tienes un margen de "creatividad" a la hora de realizar determinadas tareas, en especial si son sensibles a colocarse en un script. En general muchas cosas que utilizamos sólo los informáticos. Un ejemplo de mi día a día es Git, que aunque suelo usar Sourcetree para la interfaz (porque es más cómoda), en ocasiones hay que remangarse y abrir el terminal. Y yo creo que en muchas ocasiones así es como debería ser todo: funcionalidad básica en interfaz (la pueden utilizar perfiles no informáticos también! Trabajo en videojuegos y los artistas usan SourceTree), pero luego el modo avanzado por línea de comandos.
Puedes tener perfectamente un interprete Python gráfico y que te permita hacer esas tareas.
Sin ir mas lejos, OSX tiene/tenia una utilidad llamada "automator" (o algo así) con un lenguaje propio que te permitía hacer esas cosas.
Que las cosas como son, yo usaría la consola por comodidad y tradición.
$ find /Volumes/Mac/Users/luser/imágenes -name "*.[jJ][pP][gG]" -size +40k -mtime +30 -exec mv {} /Volumes/Mac/Users/luser/imágenes_antiguas ;
Nota: Antes del ; final va la barra tumbada a izq. que el filtro html elimina al ponerla.
Claramente ese es el camino mas productivo.
Yo no concibo el asunto sin tuberías (pipes), expansión de parámetros, expresiones regulares, etc.... tecnologías muy probadas y que son iguales en osx, linux, hpux, etc....
Lo que usted propone es machacar el botón del magic mouse cientos de veces y siempre tardando mas que con script en consola.
Un ejemplo de como lo resuelve apple:
github.com/apple/swift/tree/master/utils
Es lo que he dicho.
Salu2
No, tanto en la interfaz gráfica como en la consola tienen que dejarte hacer. Otra cosa es que en una aplicación de terminal puedes meter un comando para cambiar trescientas opciones de configuración en plan "set config option: value" y que hacerlo en una GUI sea algo más complicado pero solo hay que entrar en about:options en Firefox para ver que también posible.
Otra cosa es que me hables de una aplicación con trescientos formularios, con funcionalidad a la que solo se puede acceder a través menús contextuales que no aparecen indicados en ninguna parte y donde cada formulario siga su propia guía de diseño y demás... pero eso es lo mismo que una aplicación de consola con trescientos comandos distintos sin ningún tipo de jerarquía ni de orden ni de coherencia entre ellos.
Y, por cierto, saber de informática o de diseño o de bases de datos o de redes no es conocerte los comandos de una herramienta .
- Descargar acciones ya creadas para añadirlas a automator.
- Crear acciones que ejecuten scripts de JavaScript o shell script.
- Usar Xcode para crear tus propias acciones.
Así que, por un lado, tienes las acciones que vienen con el sistema. Por otro lado tienes las acciones que instalan algunos programa para que puedas trabajar con ellos (como Outlook, por ejemplo), después tienes en Internet multitud de acciones que han hecho otras personas, puedes crearte tus propias acciones "nativas" y puedes hacer una acción con código script que interactue con las demás.
Cuando puedes administrar un directorio activo de Windows desde PowerShell será por alto
Sin embargo, para una persona que se encarga de un servidor que solo va a tocar un par de veces al año tener una interfaz gráfica para administrarlo es una bendición.
Ahora en serio, donde este nano que se quite vi/vim
Además, de que si tienes que trabajar en remoto, con la consola reduces un montón de recursos y aumentas la velocidad si te conectas a una consola envez de a un escritorio remoto.
La consola te permite automatizar y unir comandos de una manera asombrosa. La GUI, reduce la dificultad de trabajo, pero también tiene consecuencias como menos flexibilidad, menos control de tu máquina.
Edito :Sí, se puede escapar, poniendo: \\ (para hacer esto he puesto 4 \ )
Eso, sí, si editas el comentario, tienes que volver a escaparlas Sino se te queda 1 y las pierdes.
De hecho si lo miramos todo tan estrictamente como decís algunos, si os creéis tan buenos programadores deberías escribir todo en ensamblador o incluso código máquina, y no en lenguajes de alto nivel. Por eso usar la consola y luego programar con lenguajes de alto nivel demuestra bastante hipocresía y cinismo para luego poner a parir o creeros mejor que las personas que usan la interfaz gráfica, porque no quieren poner comandos o perder el tiempo (por ejemplo copiar una serie de archivos de una carpeta con seis-siete niveles de subcarpetas) cuando con la interfaz gráfica, antes que se acabe de poner los comandos necesarios y más en linux, que no se quien se le ocurrió la genial idea de poner C: como dev/hda1/...dev/sda1... para complicarlo todo más, acabas antes.
Y sobre el tema de los manuales, está claro que muchos creadores de productos están más pensando en el dinero que van a ganar que en hacer bien su producto incluido los manuales que o son incompletos o son una mierda enorme. Esto hablando de los manuales de uso, ya no digo los técnicos...
Pero bueno viendo lo que algunos entienden de diseño, seguridad, optimización de un software, aplicación, juego... tampoco podemos pedir peras al olmo.
Llevo usando línea de comandos desde el nacimiento del CP/M y MSX-DOS 1.0 y sigo sin ver esa ventaja que decís algunas personas que hay. Y por cierto el buffer de comandos o memoria donde se guardan, no es infinito.
Salu2
No comparemos servidores de oficina con servidores de internet o supercomputadores... es como comparar patinetes de xiaomi con ferraris o camiones...
Ventaja principal: Scripting, concatenación de comandos, volcado de salidas, etc.... lo scripteas una vez y lo tienes para siempre.
Lo de la "genial idea" de llamar a C: como /dev/sda1, etc, es para poder distinguir discos en unidades Raid o LVM, en los que tu "c:" puede ser mezcla de 4-5 o mas discos duros fisicos diferentes, de diferentes tamaños actuando como uno único (¿magia verdad? Y si supieras que puedes usar la RAM como disco.... hay que ver que cosas se pueden hacer con algo de conocimiento y el sistema adecuado)
www.youtube.com/watch?v=-AAZmfd0rtE
Las TTY sí que son Linux, pero éstas son conectadas al emulador de terminal que crea el proceso de intérprete de comandos correspondiente, como GNU Bash.
Pero cuando los conoces, eso es una maravilla. Con un comando puedes, por ejemplo, convertir un vídeo de un formato a otro y extraer capturas de pantalla cada x minutos. Lo escribes y listo. Y lo puedes aplicar a toda una serie de vídeos, para a continuación subirlos a un servidor, hacer un backup, y enviar las capturas por correo a 6 emails distintos. Y mucho más.
Eso por GUI es más engorroso. De hecho no creo que ningún programa GUI permita convertir un vídeo, extraer capturas y que éstas se manden por correo.
Ya me contarás. cuando administrs 50 equipos...
Si cambias la ip desde el terminal sabes administrar el sistema. Si necesitas una GUI, no tienes ni puta idea del sistema.
Hay cosas que un usuario normal también hace como renombrar conjuntos de ficheros. Eso con comandos script se arregla rápido.
Te olvidaste mencionar GNU, ¿o querías decir GNU al mencionar a Linux?
- encontrar en un árbol de directorios todos los ficheros que se llamen de una determinada manera: find
- ver si contienen una determinada linea: find + xargs + grep
- sustituir ciertos caracteres de esa linea por otros: sed? tr? Dependerá de la complejidad de la sustitución, de los ficheros, etc., pero en principio puede valer.
- quedarme con el path de los ficheros modificados: salida de find + xargs + grep -l
Tienen nano grabadora de macros y plugins? porque igual lo pruebo si es así
Pero es que entonces no es Linux sino POSIX
Glib por otra parte es la biblioteca de GNOME, no sirve para lo mismo que musl.
Musl con Linux o Musl{/,-,+}Linux o sistemas Musl.
No hay forma corta de denominarlos.
Lo que define el SO es la API del mismo. Dicha API tiene su parte de espacio no privilegiado y de espacio privilegiado.
Hay por tanto dos componentes fundamentales: la biblioteca de C y el núcleo. La inclusión de OpenSSH no cambia el sistema operativo.
En la imagen adjunta hay un esquema del equivalente en Darwin en su variante (distribución) macOS. macOS es una distribución de Darwin + Cocoa y otras bibliotecas de Apple. Además de la de Apple sólo conozco otra variante de Darwin que es GNU Darwin. En el caso de GNU con Linux tienes variantes como Debian, Ubuntu, Fedora, Red Hat aunque todas comparten cosas como SystemD o GLib. De hecho es irrelevante porque todas admiten cambiar dichos componentes. Si quisieras cambiar la biblioteca de C o el núcleo tendrías que modificar un buen puñado (sino todos) los paquetes de sus repositorios y recompilarlos (todos) ...