05. flujos hh

17
 Flujos, Tuberías y Buscadores

Upload: anderzhltoo-poeh

Post on 07-Oct-2015

7 views

Category:

Documents


0 download

DESCRIPTION

nj

TRANSCRIPT

  • Flujos, Tuberas y Buscadores

  • Entrada Estndar (stin): Es el flujo utilizado para recoger informacin, normalmente por el teclado. Ejemplo: Flujo entrante = Parmetros de un comando entrante.

    Salida Estndar (stout): Es el flujo usado para enviar informacin al exterior, normalmente la consola(o ventana xterm). Ejemplo: Flujo Saliente = Respuesta de un comando.

    Error Estndar (stderr): Es el flujo utilizado para llevar los mensajes de error y de alta prioridad, en algunos casos se suelen redirigir a ficheros, (p.ej. los ficheros de log que recogen errores del sistema), para su estudio posterior. Tambin se puede mantener el mostrar estos mensajes por la salida a la vez que se redirige una copia a un fichero.

    Flujos

  • Al redireccionar un flujo lo que hacemos es modificar el comportamiento natural del sistema. Ejemplo: Enviar la salida de un programa a un fichero, tomar la entrada para un programa de un fichero.

    # ls > resultado_ls

    Se redirecciona la salida del comando ls al archivo resultado_ls

    Redirecciones

  • Para realizar redirecciones son necesarios los operadores que permiten esta labor.

    Redireccin

    Operador Efecto

    > Crea un fichero que contiene la salida estndar. Si el fichero existe, se sobrescribe.

    >> Aade al fichero la salida estndar. Si el fichero no existe, se sobrescribe. 2> Crea un fichero con la salida de error estndar. Si el fichero no existe, se crea. 2>> Aade a un fichero la salida de error estndar. Si el fichero no existe, se crea. &> Crea un fichero que contiene tanto el error estndar como la salida estndar. Si

    el fichero existe, se reemplaza. El fichero especificado se utiliza tanto para la salida estndar como para la

    entrada estndar. < El contenido del fichero especificado se enva para utilizarlo como entrada

    estndar

  • Operador >:

    super@linux> echo envio frase a fichero > fichero.txt super@linux> cat fichero.txt envio frase a fichero

    Operador >>:

    super@linux> echo envio segunda frase a fichero >> fichero.txt super@linux> cat fichero.txt envio frase a fichero

    envio segunda frase a fichero

    Redireccin

  • Operador 2>:

    super@linux> ls carpeta_no_existe >> fichero.txt 2>errores.txt super@linux> cat errores.txt ls: no se puede acceder a carpeta_no_existe: No existe el fichero o el directorio

    Operador 2>>:

    super@linux> ls hoja_inexistente >> fichero.txt 2>>errores.txt super@linux> cat errores.txt ls: no se puede acceder a carpeta_no_existe: No existe el fichero o el directorio

    ls: no se puede acceder a hoja_inexistente: No existe el fichero o el directorio

    Redireccin

  • Operador &>:

    Super@linux> ls carpeta_no_existe Descargas/ &> fichero.txt super@linux> cat fichero.txt ls: no se puede acceder a carpeta_no_existe: No existe el fichero o el directorio Descargas/: gbbm12.jpg gbbm25.jpg gbbm26.jpg

    Operador cat < fichero.txt > fichero2.txt

    Lee el fichero .txt y el contenido lo redirige al fichero2.txt

    Redireccin

  • Una tubera en Linux no es ms que una forma prctica de redireccionar la salida estndar de un programa hacia la entrada estndar de otro. Esto se logra usando el smbolo | (pipe).

    Por ejemplo, podramos ver los procesos que estn corriendo en el sistema usando ps y le redireccionamos la salida a sort para que los ordene por PID:

    $ ps -a | sort Tambin podemos redireccionar la salida estndar del

    comando cat y pasarla como entrada estndar del comando wc para contar las lneas y palabras de un archivo:

    $ cat archivo.txt | wc Tanto las redirecciones como las tuberas son conceptos

    fundamentales que sin duda debes manejar para empezar a sentirte cmodo con la terminal.

    Tuberias

  • Las tuberas y redirecciones suelen utilizarse juntas para un mejor aprovechamiento de los comandos, ejemplo:

    /home/diego/$ ls | sort r > /home/diego/respuesta_ordenada_de_ls.txt

    El comando primero nos muestra los archivos (ls), los ordena (sort) y el resultado lo guarda en el archivo llamado respuesta_oredenada_de_ls.txt

    Para poder ordenar la respuesta del comando ls us una tuberia \ y para guardar el resultado ordenado uso la redireccin >.

    Tuberas y redirecciones

  • En GNU/Linux, tenemos una serie de herramientas que nos permiten encontrar ficheros de una manera ms o menos rpida. El comando ms verstil para este propsito es find, aunque depende de lo que busquemos y de nuestra configuracin puede que no sea tan rpido como otros comandos.

    Los buscadores mas usados son: Find Which Whereis locate

    Buscadores

  • Este comando busca archivos ejecutables, pginas del manual y el directorio poniendo la ruta donde se encuentre. Su uso es igual que which: whereis $ whereis ssh

    $ ssh: /usr/bin/ssh /usr/share/man/man1/ssh.1.gz

    Sus opciones de busqueda son:

    -b Buscar solamente el archivo binario.

    -m Buscar solamente la pgina manual.

    -s Buscar solamente el cdigo fuente.

    $ whereis -m whereis

    $whereis: /usr/share/man/man1/whereis.1.gz

    Whereis

  • Si lo que queremos buscar son programas, lo ms probable es que se encuentren en algn directorio de nuestro PATH. PATH es una variable de entorno que contiene los directorios donde el shell (intrprete de comandos) buscar los programas (y comandos) cuando los queramos ejecutar.

    Pues bien, si queremos buscar un programa que creemos que est en el PATH, en vez de usar find o locate, que nos tardarn ms, podemos usar: which .

    As, por ejemplo, podramos querer saber donde est instalado el comando awk; haramos esto: # which awk

    #/usr/bin/awk

    Y nos dira el directorio donde se encuentra el programa, o bien nos informara de que el programa no se encuentra en el PATH.

    Si which no encuentra la ubicacin del comando, pruebe con whereis o con el comando locate

    Which

  • locate es un comando de bsqueda de archivos, bastante parecido al find. La diferencia de locate es que la bsqueda la hace en una base de datos indexada para aumentar significativamente la velocidad de respuesta. Esto quiere decir, que locate realmente no busca en el disco del sistema, sino que en un archivo con la lista de todos los archivos que existen en el GNU/Linux. Generalmente todas las distribuciones de GNU/Linux ejecutan a una hora determinada (generalmente cerca de las 4:00am, ya que tarda algn tiempo realizar esta tarea) un comando para actualizar la base de datos que utiliza locate, dicho comando se llama updatedb. Su sintaxis es:

    locate PATRN

    Donde PATRN corresponde al mismo tipo de patrn que en el comando find. Ejemplo:

    $ locate locate

    /usr/bin/locate

    /usr/lib/locate

    /usr/lib/locate/bigram

    /usr/lib/locate/code

    Como se puede observar en el ejemplo, locate ha listado todos aquellos archivos que posean la palabra locate en su nombre (los directorios estn incluidos).

    Locate

  • Se utiliza este comando para buscar archivos dentro de una jerarqua de directorios. La bsqueda, como veremos mas adelante, se puede realizar mediante varios criterios. La sintaxis de este comando es:

    find [camino...] [expresin] La expresin se conforma de opciones, pruebas y

    acciones. Ejemplo: find CAMINO -name ARCHIVO find CAMINO -name ARCHIVO -perm MODO

    Find

  • Bsqueda de un archivo. find . -name *.txt Nos devolver todos los archivos con extensin txt que haya en el directorio y

    recursivamente en todos sus subdirectorios. El comando find distingue entre maysculas y minsculas, as la instruccin

    anterior no nos devolver los ficheros que acaben en TXT. Para que no distinga entre maysculas y minsculas tenemos la opcin -iname.

    find . -iname *.txt Podemos ejecutar ordenes que afectaran a los ficheros encontrados. find . -name "*.bak" -exec rm {} \; Esta instruccin borrara todos los ficheros

    acabados en .bak, esto lo hace a travs de la opcin -exec acompaada de la instruccin a ejecutar, los corchetes {} se refieren a los ficheros que la instruccin find ha encontrado y la barra invertida \; indica el final de la instruccin.

    find . -type d -exec ls {} \; Otro ejemplo de este uso, lista el contenido de todos los directorios y

    subdirectorios de la ruta actual. find ~/confidencial/* -type f -exec md5 {} >> MD5 \;

    Find

  • Tambin podemos hacer bsquedas condicionadas. find . ! -iname *.pdf ! -name *.jpg Que nos devuelve todos los archivos menos los acabados en .pdf o .jpg. find . ! -iname *a* -iname *.jpg Nos devolvera todos los jpg que no tengan en su nombre la letra a. Find, por defecto omite los enlaces (links), si queremos que la bsqueda

    siga los enlaces tendremos que aadir la opcin -follow. find . -follow -name *empresa* Tenemos que tener en cuenta que podemos caer en una especie de bucle,

    en el que los links nos hagan volver a pasar por un mismo directorio por el que ya hemos pasado.

    Una opcin que nos puede ayudar a evitar eso, es -maxdepth n, la que indicamos el nmero mximo de niveles a los que queremos que find llegue.

    find .-follow -maxdepth 5 -name *empresa*

    Find

  • ficheros a los que se ha accedido por ltima vez en los ltimos 10 minutos.

    find . -amin -10 ficheros a los que se accedid, por ltima vez, hace un

    ao exactamente. find . -atime 365 ficheros de tamao superior a 1000 kb find . -size +1000k ficheros vacios. find . -empty find . -empty -type f

    Find