Anda di halaman 1dari 17

Flujos, Tuberas y Buscadores

Flujos
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.

Redirecciones
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

Redireccin
Para realizar redirecciones son necesarios los
operadores que permiten esta labor.
Operador
>

>>
2>
2>>
&>

<>

<

<<

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.
Crea un fichero con la salida de error estndar. Si el fichero no existe, se crea.
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
Acepta el texto de las siguientes lneas como entrada estndar.

Redireccin
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 <:
super@linux> cat < fichero.txt > fichero2.txt
Lee el fichero .txt y el contenido lo redirige al fichero2.txt

Tuberias
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.

Tuberas y redirecciones
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 >.

Buscadores
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

Whereis
Este comando busca archivos ejecutables, pginas del manual
y el directorio poniendo la ruta donde se encuentre.
Su uso es igual que which: whereis <programa>
$ 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

Which

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
<programa>.
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

Locate

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).

Find
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

Anda mungkin juga menyukai