explicación del comando de script de Linux

explicación del comando de script de Linux

Cuando leo un script de makefile, me encuentro con el siguiente comando de script de Linux:

mv obj/*.o .  2>/dev/null 

¿Qué significa este comando? Entiendo mv obj/*.o .significa que todos los archivos con sufijo oen la objcarpeta se moverán a la carpeta actual. ¿Que 2>significa? Cuando se combinan, ¿cuál es el propósito? ¡Gracias!

Respuesta1

estas mirandoredirección de salida (Bash). 2 significa 'stderr', la salida de error. Al redirigirlo a /dev/null, lo estás descartando al olvido. Sin embargo, la salida normal, 'stdout' o 1 todavía se muestra (en su terminal de forma predeterminada).

Básicamente, esto es simplemente silenciar la salida de error del mvcomando.

Un fragmento del enlace anterior lo explica de manera más general:

COMMAND_OUTPUT >
  # Redirect stdout to a file.
  # Creates the file if not present, otherwise overwrites it.

  ls -lR > dir-tree.list
  # Creates a file containing a listing of the directory tree.
[..]
1>filename
  # Redirect stdout to file "filename."
1>>filename
  # Redirect and append stdout to file "filename."
2>filename
  # Redirect stderr to file "filename."
2>>filename
  # Redirect and append stderr to file "filename."
&>filename
  # Redirect both stdout and stderr to file "filename."

Respuesta2

Por cierto, a veces es posible que desee evitar que se muestre en la pantalla pero que desee capturarlo en un archivo. Si ese es el caso, podrías hacer algo como esto:

mv obj/*.o . > move.log 2>&1

información relacionada