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
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
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
Locate
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
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