Las llamadas tuberias y redirecciones [SH]

Iniciado por Erik#, 25 Septiembre 2008, 20:11 PM

0 Miembros y 1 Visitante están viendo este tema.

Erik#

Nosotros, podemos unir más de 1 función usando el caracter |, no tiene mucha "magia", por ejemplo, este es el tipico ejemplo que sale en todas las webs:

Código (bash) [Seleccionar]
ls | sort

Eso lo que haria, que yo sepa, muestra todos los ficheros en orden alfabetico.
Tambien podemos hacer que tal función entre en contacto con un archivo que queramos, por ejemplo:

Código (bash) [Seleccionar]
ls | sort>ls.txt

Con eso, creariamos un registro de ficheros ordenados alfabeticamente dentro de un archivo llamado ls.txt, pero tambien podemos hacer que ese fichero se muestre en pantalla, imaginaos que hemos hecho:

Código (bash) [Seleccionar]
ls>ls.txt

Y ahora queremos mostrarlo en pantalla ordenado alfab.
Pues haremos:

Código (bash) [Seleccionar]
ls>ls.txt
sort<ls.txt


Y finalmente, tambien podemos enviar funciones y comandos a un fichero, sin sobreescribir el contenido anterior usando el >>, ponedlo en practica ;).

leogtz

En Windows es lo mismo, pero usando dir, que si bien no se si sera mas extenso o complejo que ls

dir | more
dir | sort
dir | sort > File.txt
sort < file.txt
more < file.txt

Un poco de teoria sacado de un libro que tengo de Unix:

Las tuberias del DOS contra las tuberias del UNIX

Como probablemente saben los usuarios experimentados del DOS, el DOs tambien le permite crear tuberias. Sin embargo, hay una diferencia en la manera en que el DOs y el UNIX manejan las tuberias.

En el DOS, el sistema ejecuta el primer comando de la tuberia y guarda su salida en un archivo temporal. Despues de que ha terminado el primer comando, el sistema ejecuta el siguiente comando de la tuberia, pasando el archivo temporal como entrada y guardando su salida en otro archivo temporal. Despues de que este segundo comando ha terminado, se ejecuta el siguiente comando de la tuberia, y asi sucesivamente hasta que se han terminado todos los comandos. Los archivos temporales que se crean en este proceso se borran cuando ya no se necesitan. Con este enfoque, el sistema solamente ejecuta un comando a la vez.

En el UNIX el sistema ejecuta todos los comandos simultaneamente. Los datos no se guardan en archivos temporales, sino que se entuban directamente de la memoria del comando que se esta ejecutando hacia la memoria de otro. Esto significa que se pueden obtener resultados mas rapidos, debido a que no se tiene que esperar a que un comando termine para que el siguiente comience a trabajar.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com