Redirección

Section header image

Redirección 20

Agregar contenido a archivos en Linux puede hacerse de varias maneras. Linux posee algunos editores de texto que pueden usarse para agregar contenido a un archivo. Sin embargo, este método requiere cierta familiaridad con los comandos del editor de texto de Linux.

Nota

Los editores de texto de Linux están cubiertos en la siguiente sección de este curso.

En Linux, se puede agregar contenido a un archivo rápidamente usando una función de línea de comandos llamada redirección de entrada/salida (E/S) (input/output; I/O). La redirección E/S (I/O) permite enviar la información de la línea de comandos a archivos, dispositivos y otros comandos. La entrada o salida de un comando se redirige desde su destino predeterminado a una ubicación diferente. La redirección E/S es como una serie de vías de tren, donde se puede habilitar un conmutador para dirigir la salida de un comando a una vía diferente que vaya a otro lugar en el shell. En esta sección, escribiremos a archivos a través de la redirección de la salida de un comando hacia otro archivo.

Cuando se trata de comandos de entrada y salida, existen tres rutas, o “vías”. Estas rutas se denominan descriptores de archivos. El primer descriptor de archivo es la entrada estándar, abreviada como STDIN (standard input). La entrada estándar es la información que el comando recibe y procesa cuando se ejecuta, esencialmente lo que un usuario escribe en el teclado. El segundo descriptor de archivo es la salida estándar, abreviada como STDOUT (standard output). La salida estándar es la información que muestra el comando, la salida del comando. El último descriptor de archivo es el error estándar, abreviado como STDERR (standard error). STDERR, son los mensajes de error generados por comandos que no se ejecutan correctamente. Los siguientes son ejemplos de cómo aparecerán los descriptores de archivos en la terminal:

Entrada estándar (STDIN)

sysadmin@localhost:~$ ls ~/Documents

Salida estándar (STDOUT)

sysadmin@localhost:~$ ls                                                        
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

Error estándar (STDERR)

sysadmin@localhost:~$ ls fakefile                                               
ls: cannot access fakefile: No such file or directory

Esta sección cubrirá uno de los tres descriptores de archivos, STDOUT, y cómo redirigir STDOUT desde donde normalmente aparece en el terminal, a un archivo en el sistema de archivos. Para ejecutar la redirección, simplemente use el símbolo “mayor que” > junto al nombre del archivo:

[COMANDO] > [ARCHIVO]

Para demostrar cómo funciona la redirección, usaremos la salida del comando cat. Sin redirección, la salida del comando cat se mostrará en el terminal:

Siga leyendo

Utilice el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents
sysadmin@localhost:~/Documents$ cat food.txt                                    
Food is good.

Ahora utilice el carácter > para redirigir el STDOUT del comando cat food.txt anterior a un nuevo archivo llamado newfile1.txt:

sysadmin@localhost:~/Documents$ cat food.txt > newfile1.txt

Como puede ver, no se muestra ninguna salida ya que el STDOUT se ha redirigido al archivo newfile1.txt. Compruebe que el STDOUT del comando cat food.txt se encuentra en newfile1.txt:

sysadmin@localhost:~/Documents$ cat newfile1.txt                     
Food is good.

Esta función es útil si necesita copiar contenido de un archivo importante a otro archivo para editar su contenido sin modificar el archivo original. Sin embargo, ¿qué sucede si desea agregar un comentario o una nota a un archivo ya existente? Para hacer esto, puede usar el comando echo. El comando echo se utiliza para imprimir una salida en la terminal:

sysadmin@localhost:~/Documents$ echo "Hello"           
Hello                                                                   

Imprimir comentarios en la pantalla es una función curiosa, pero el comando echo puede ser más útil cuando se usa con la redirección. Mediante el comando echo, puede agregar contenido al archivo newfile1.txt:

sysadmin@localhost:~/Documents$ cat newfile1.txt         
Food is good.     
sysadmin@localhost:~/Documents$ echo "I like food." > newfile1.txt
sysadmin@localhost:~/Documents$ cat newfile1.txt             
I like food.                                           

Observe que el STDOUT del comando echo ha reemplazado el contenido original del archivo. Esto se debe a que el carácter > sobrescribe cualquier contenido de un archivo existente. Para añadir contenido a un archivo, en lugar de sobrescribir, utilice el símbolo “mayor que” dos veces >>:

sysadmin@localhost:~/Documents$ echo "This food is good." >> newfile1.txt
sysadmin@localhost:~/Documents$ cat newfile1.txt              
I like food.                                                      
This food is good.                                 

Importante

Para redirigir la información a un archivo existente, el usuario debe tener permisos de escritura para ese archivo.