Con tanto Beryl, miles de interfaces gráficas con efectos y colores insuperables, animaciones hipnotizantes, y configuraciones tan poderosas que permiten sacar a pasear al perro con un doble click, ¿para qué se sigue usando la línea de comandos? Seguramente tener que escribir los nombres de los programas es ineficiente, ¿no?
No.
La línea de comandos (el “Shell”) es infinitamente poderosa; más aún en *Nix que lo que nunca fue en DOS o en Windows.
Windows está centrado en la interfaz gráfica, y ésta se usa de manera muy diferente a la línea de comandos. La interfaz gráfica hace difícil (si no imposible) que dos programas comuniquen sus entradas y sus salidas, entonces no se puede tener (como es estándar en *Nix) mil programas que se encarguen de tareas simples; se tiene que programar de manera que cada programa haga todo lo que necesite (y cada programa es enorme).
En casi cualquier instalación de Linux se puede encontrar sort, que ordena la entrada que se le da, wc que cuenta líneas, palabras y bytes de la entrada, y uniq, que elimina el contenido repetido. Esto sería inútil (o molesto, teniendo que grabar cada salida a un archivo) si no fuera por un caracter: ‘|‘, el pipe (caño o tubería). Al conectar dos comandos por un pipe, la salida de uno se transforma en la entrada del siguiente; por ejemplo, podemos hacer (un comando complejo a propósito):
curl "http://blog.tordek.com.ar/" | sed 's/[^a-zA-Z]/ /g | tr 'A-Z ' 'a-z\n' | grep '[a-z]' | sort | uniq | wc
En orden:
- curl baja el contenido del sitio,
- sed se encarga de eliminar todo lo que no sean letras,
- tr pasa todo a minúsculas,
- grep elimina todas las líneas sin contenido (tomando sólo las que tengan caracteres),
- sort lo ordena,
- uniq elimina los repetidos, y
- wc las cuenta.
Está bien que hay un par de trampas (las tildes, por ejemplo, no las toma como parte de una palabra), y puede parecer complicado a primera vista, pero ¿cómo lo harían en otro sistema?. No vale copiar y pegar en Word: no estoy contando palabras únicas. Además, se puede guardar ese comando, y con un par de modificaciones podemos llamarlo con una dirección y que el resto “pase solo”.
Las más complicadas son sed y grep, porque involucran expresiones regulares (nuevamente, un tema que merece su propio post), que, también son parte del poder de la linea de comandos.
La línea de comandos está lejos de ser compleja; cada uno de los programas es simple, hace UNA tarea, pero la hace bien. Si los comparamos con casi cualquier programa de Windows, estos son mucho más grandes y complejos; no son malos por ello, simplemente tienen… digamos… “capacidades diferentes”.
Domingo 13 de Mayo de 2007, 06:22
“¿Por qué usar la linea de comandos si mis ventanas son tan lindas?”
Porque la línea de comandos me ofrece características que las ventanas no me ofrecen, y al mismo tiempo, las características que me ofrece la línea de comandos no me quita las características que las ventanas me pueden ofrecer.
“La línea de comandos (el “Shell”) es infinitamente poderosa; más aún en *Nix que lo que nunca fue en DOS o en Windows.”
Con esta afirmación considero que no habría razón para comparar a la línea de comandos de un sistema operativo que se basa en ella, con la línea de comandos de un sistema operativo como DOS o Windows, ya que en el sistema operativo que está basado en la línea de comandos, la línea de comandos es la base de dicho sistema, mientras que en los otros sistemas operativos, la línea de comandos, no lo es.
“Windows está centrado en la interfaz gráfica, y ésta se usa de manera muy diferente a la línea de comandos.”
Esta afirmación valida a la afirmación anterior, ya que, un sistema está basado en la línea de comandos, mientras que el otro está basado en la interface gráfica.
“curl “http://blog.tordek.com.ar/” | sed ‘s/[^a-zA-Z]/ /g | tr ‘A-Z ‘ ‘a-z\n’ | grep ‘[a-z]‘ | sort | uniq | wc
¿cómo lo harían en otro sistema?.
”
Si se tuviera la necesidad, el deseo, o la obligación de hacerlo, se haría como se hace con cualquier otro programa, programándolo, con la condición que el programa tiene que estar adaptado al otro sistema.
“La línea de comandos está lejos de ser compleja; cada uno de los programas es simple, hace UNA tarea, pero la hace bien.”
Considero lógico que los programadores hayan querido que sus programas hagan lo que ellos quisieron que hagan y que lo hagan bien.
“Si los comparamos con casi cualquier programa de Windows, estos son mucho más grandes y complejos”
Si los comparásemos, estaríamos comparando a un programa que fué creado para que funcione por la línea de comandos, contra un programa que fué basado para que funcione sobre un interface gráfica, si se considera que la linea de comandos y la interface gráfica son distintos, no habría razón para compararlos, porque uno está hecho para que la línea de comandos sea la base y el otro para que la interface gráfica sea la base, y esa es la condición para crear un programa en uno u otro.
“no son malos por ello”
No habría razón para que sean malos, ya que los programas fueron creados para que funcionen en el entorno de trabajo correspondiente.
“simplemente tienen… digamos… “capacidades diferentes”.”
Exactamente por esa razón no habría razón para compararlos, ya que cada uno cumple su función, a su manera.
Si yo tuviera que aceptar la comparación, entonces tendría la capacidad de comparar a la casa de la muñeca Barbie con el edificio donde yo vivo, y decir que la casa de la muñeca Barbie tiene la ventaja de ser chico, liviano, y que puede ser transportable a todos lados por el espacio que ocupa y por lo que pesa.
También podría decir que las desventajas es que por ser de plástico se puede romper si lo pateo por haberlo dejado en el medio del camino, y también podría agregar que por ser chico yo no entro.
También podría decir que el edificio donde vivo está mal hecho porque ocupa mucho espacio, y pesa mucho y no lo puedo cambiar de lugar, pero la ventaja que tiene es que yo puedo entrar.
Viernes 19 de Septiembre de 2008, 04:22
[...] un link, así pase una vez al año… aunque hay casos que preferiría no recibirlos… En ¿Por qué usar la linea de comandos si mis ventanas son tan lindas?, alguien decidió repetir mi post entero, sin agregar nada a la conversación; acepté el [...]