Hable sobre el shell "> /dev /null 2 ​​> &1"

  
 

Hoy me hicieron otra pregunta en uno de mis propios grupos de tecnología, así que lo expliqué de manera común e hice un registro. ¡Vamos a ver si la explicación es clara!

El shell puede ver a menudo: > /dev /null 2 ​​> &1

El resultado del comando se puede definir en forma de% >

Descomponga esta combinación: " > /dev /null 2 ​​> &1 " para cinco partes.

1: > Representa dónde redirigir, por ejemplo: echo " 123 " > /home/123.txt2:/dev/null para archivos de dispositivo vacíos 3: 2 > para el error estándar 4 de stderr: &significa equivalente, 2 > &1, lo que indica que la redirección de salida de 2 es equivalente a 15: 1 para la salida estándar estándar, el valor predeterminado del sistema es 1, por lo que " > /dev /null " es equivalente a " 1 > /dev /null "

Por lo tanto, > /dev /null 2 ​​> &1 también se puede escribir como " 1 > /dev /null 2 ​​> &1 "

Así La ejecución de la declaración en el título de este artículo es: 1> /dev /null: primero, la salida estándar se redirige al archivo de dispositivo vacío, es decir, no se envía información al terminal. En pocas palabras, no se muestra información. 2 > &1: A continuación, la salida de error estándar se redirige a la salida estándar porque la salida estándar se ha redirigido a un archivo de dispositivo vacío, por lo que la salida de error estándar también se redirige al archivo de dispositivo vacío.

¿Está claro, todo el mundo lo entiende?

Por cierto, ¡compare los beneficios de este uso!

Las formas más comunes son:

comando > archivo 2 > archivo y comando > archivo 2 > &1

¿Hay alguna diferencia?

El primer comando > archivo 2 > archivo significa enviar la información de salida estándar generada por el comando, y la información de salida incorrecta a file.command > file 2 > file De esta manera, stdout y stderr Se envían directamente al archivo, y el archivo se abrirá dos veces, de modo que stdout y stderr se sobrescriban entre sí. De esta manera, el FD1 y el FD2 se utilizan para capturar el archivo. El comando > file 2 > &1 enviará stdout directamente al archivo. Después de que stderr hereda la canalización FD1, se envía al archivo. En este momento, el archivo solo se abre una vez y solo se utiliza una canalización. FD1, que incluye los contenidos de stdout y stderr. Desde la eficiencia de IO, la eficiencia del comando anterior es menor que la del último. Por lo tanto, al escribir un script de shell, escribiremos el comando > archivo 2 > &1 más a menudo.

Copyright © Conocimiento de Windows All Rights Reserved