Descriptores de archivo

Linux

Un descriptor de archivo es un entero sin signo utilizado por un proceso para identificar un archivo abierto.

# descriptores de archivo

exec 3<> testfile # estamos aplicando un descriptor de archivo con el identificador del numero 3, el cual esta creando el archivo file, este tiene capacidad de lectura y escritura

< : capacidad de lectura
> : capacidad de escritura

whoami >&3 # con esto estamos enviando el output del comando whoami al descriptor de archivo, no veremos nada al dar enter pero todo el output estara en testfile, todo esto lo almacena en formato append, por lo que todo lo que agreges ira a la linea de abajo

exec 3>&- # cerramos el descriptor de archivo, no se borrara el archivo pero ya no podremos trabajar con el descriptor de archivo, si lo intentas te dira "bad file descriptor" ya que no existe ahora

# tambien podemos crear copias de descriptores de archivo

exec 5<> data
whoami >&5
exec 8>&5 # estamos creando sobre la marcha el file descriptor ocho y copiando el del cinco al archivo del ocho, es como si fueran compartidos los dos descriptores pueden cambiar el archivo data y si se cierra uno, por ejemplo el cinco, el ocho puede seguir trabajando con el archivo data

exec 5<> data2
whoami >&5
exec 6>&5- # el mismo proceso anterior pero matamos el file descriptor cinco e iniciamos el seis junto al archivo data2


echo "hola" > file.txt # redirigimos el output del comando anterior al archivo file.txt

pero si volvemos a ejecutar otra instruccion y metemos el output dentro del mismo archivo va a remplazar el otro contenido y no agregarlo en formato append. Para solucionar esto podemos hacer esto en la siguiente cadena que queramos meter

echo "probando denuevo" >> file.txt
# esto lo agregara en formato append

Last updated