GNU/Linux >> Tutoriales Linux >  >> Linux

¿Diferencia entre 2>&-, 2>/dev/null, |&, &>/dev/null y>/dev/null 2>&1?

Solo busco la diferencia entre

  • 2>&-
  • 2>/dev/null
  • |&
  • &>/dev/null
  • >/dev/null 2>&1

y su portabilidad con shells que no sean de Bourne como tcsh , mksh , etc.

Respuesta aceptada:

Para el fondo:

  • un número 1 =salida estándar (es decir, STDOUT)
  • un número 2 =error estándar (es decir, STDERR)
  • si no se proporciona explícitamente un número, entonces número 1 es asumido por el shell (bash)

Primero, abordemos la función de estos. Para referencia, consulte la Guía avanzada de secuencias de comandos de Bash.

Funciones

2>&-

La forma general de este es M>&- , donde “M” es un número de descriptor de archivo. Esto cerrará la salida para cualquier descriptor de archivo al que se haga referencia, es decir, “M” .

2>/dev/null

La forma general de este es M>/dev/null , donde “M” es un número de descriptor de archivo. Esto redirigirá el descriptor de archivo, “M” , a /dev/null .

2>&1

La forma general de este es M>&N , donde “M” &“N” son números descriptores de archivo. Combina la salida de los descriptores de archivos “M” y “N” en una sola transmisión.

|&

Esta es solo una abreviatura de 2>&1 | . Se agregó en Bash 4.

&>/dev/null

Esta es solo una abreviatura de >/dev/null 2>&1 . Redirige el descriptor de archivo 2 (STDERR) y el descriptor 1 (STDOUT) a /dev/null .

>/dev/null

Esta es solo una abreviatura de 1>/dev/null . Redirige el descriptor de archivo 1 (STDOUT) a /dev/null .

Portabilidad a non-bash, tcsh, mksh, etc.

No he tratado mucho con otros shells fuera de csh y tcsh . Mi experiencia con esos 2 en comparación con los operadores de redirección de bash es que bash es superior en ese sentido. Consulte la página man de tcsh para obtener más detalles.

De los comandos sobre los que preguntó, ninguno es compatible directamente con csh/tcsh. Tendría que usar diferentes sintaxis para construir funciones similares.


Linux
  1. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  2. ¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

  3. ¿Cuál es la diferencia entre /sbin/nologin y /bin/false?

  4. ¿La diferencia entre /opt y /usr/local?

  5. ¿Cuándo usar /dev/random Vs /dev/urandom?

¿Qué son los archivos /dev/zero y /dev/null en Linux?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Diferencia entre /etc/crontab y crontab -e

Diferencia entre /bin y /usr/bin

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr