Red de conocimiento informático - Problemas con los teléfonos móviles - Redirección de entrada y salida del shell ¿Qué hace?

Redirección de entrada y salida del shell ¿Qué hace?

Los comandos de Unix de forma predeterminada toman información del dispositivo de entrada estándar (stdin) y envían los resultados al dispositivo de salida estándar (stdout) para su visualización. Normalmente, el dispositivo de entrada estándar es el teclado y el dispositivo de salida estándar es el terminal o monitor.

Redirección de salida

La salida del comando no solo puede ser la visualización, sino que también se puede transferir fácilmente a un archivo, lo que se denomina redirección de salida.

La sintaxis para la redirección de salida del comando es: $ comando gt; archivo

De esta manera, la salida del contenido al monitor se puede redirigir al archivo.

Por ejemplo, el siguiente comando no mostrará ningún resultado en el monitor: $ who gt users

Al abrir el archivo de usuarios se mostrará lo siguiente: $ cat users

oko tty01 12 de septiembre 07:30

ai tty15 12 de septiembre 13:32

ruth tty21 12 de septiembre 10:10

pat tty24 12 de septiembre 13 : 07

steve tty25 12 de septiembre 13:03

$

La redirección de salida sobrescribe el contenido del archivo; consulte el siguiente ejemplo: $ echo line 1 gt;

$ usuarios cat

línea 1

$

Si no desea sobrescribir el contenido del archivo, puede usar gt ; gt; para agregarlo al final del archivo, por ejemplo: $ echo línea 2 gt; usuarios

$ cat usuarios

línea 1

línea 2

$

Redirección de entrada

Al igual que la redirección de salida, los comandos Unix también pueden obtener entrada de archivos. La sintaxis es: comando archivo

.

De esta manera, los comandos que requieren entrada desde el teclado se pueden leer desde un archivo.

Nota: La redirección de salida es un signo mayor que (gt;) y la redirección de entrada es un signo menor que (lt;).

Por ejemplo, para contar el número de líneas en el archivo de usuarios, puedes usar el siguiente comando: $ wc -l usuarios

2 usuarios

$

O puede redirigir la entrada al archivo de usuarios: $ wc -l lt; usuarios

2

$

Nota: El Los resultados de los dos ejemplos anteriores son diferentes: el primer ejemplo generará el nombre del archivo; el segundo ejemplo no, ya que solo sabe leer desde la entrada estándar.

Explicación detallada de la redirección

En términos generales, cada comando de Unix/Linux abrirá tres archivos cuando se ejecute:

Archivo de entrada estándar (stdin): el descriptor del archivo. de stdin es 0 y los programas Unix leen desde stdin de forma predeterminada.

Archivo de salida estándar (stdout): el descriptor de archivo de stdout es 1, y los programas Unix envían datos a stdout de forma predeterminada.

Archivo de error estándar (stderr): el descriptor de archivo de stderr es 2 y los programas Unix escribirán información de error en la secuencia stderr.

De forma predeterminada, el comando gt;file redirige stdout a un archivo, mientras que el comando lt;file redirige stdin a un archivo.

Si desea que stderr sea redirigido a un archivo, puede escribir: $command 2 gt; file

Si desea que stderr se agregue al final del archivo, puede puede escribir: $command 2 gt; file

2 representa el archivo de error estándar (stderr).

Si desea combinar stdout y stderr y redirigirlos al archivo, puede escribir: $command gt; file 2gt;amp 1

o $command gt;gt; 2gt; amp; 1

Si desea redirigir stdin y stdout al mismo tiempo, puede escribir: $command lt; file1 gt; y salida estándar al archivo2.

Lista de todos los comandos de redirección disponibles

Comando

Descripción<

comando gt; Redirige la salida a un archivo.

comando lt; file redirige la entrada a un archivo.

comando gt; gt; file Redirige la salida a un archivo en modo agregar.

n gt; file redirige el archivo con el descriptor n al archivo.

n gt;gt; file Redirige el archivo con el descriptor de archivo n al archivo como un anexo.

n gt;amp; m fusiona los archivos de salida my n.

n gt;amp; m fusiona los archivos de salida my n.

n lt; amp; m fusiona los archivos de entrada my n.

lt;lt; tag toma el contenido entre la etiqueta inicial y la etiqueta final como entrada.