explicação do comando de script linux

explicação do comando de script linux

Quando leio um script do makefile, encontro o seguinte comando de script do Linux:

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

O que esse comando significa? Entendo mv obj/*.o .que todos os arquivos com sufixo ona objpasta serão movidos para a pasta atual. O que 2>significa? Quando eles são combinados, qual é o propósito? Obrigado!

Responder1

Você está olhandoredirecionamento de saída (Bash). 2 significa 'stderr', a saída de erro. Ao redirecioná-lo para /dev/null, você o descarta no esquecimento. A saída regular, 'stdout' ou 1 ainda é mostrada (no seu terminal por padrão).

Basicamente, isso apenas silencia a saída de erro do mvcomando.

Um trecho do link acima explica isso de forma mais geral:

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."

Responder2

A propósito, às vezes você pode querer impedir a exibição na tela, mas pode querer capturá-la em um arquivo. Se for esse o caso, você pode fazer algo assim:

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

informação relacionada