
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 o
en la obj
carpeta 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 mv
comando.
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