Upload
anderzhltoo-poeh
View
7
Download
0
Embed Size (px)
DESCRIPTION
nj
Citation preview
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