linux

0

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

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

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

    
por feelfree 03.05.2013 / 09:47

2 respostas

3

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

Basicamente, isso é apenas uma saída de erro do comando mv .

Um snippet do link acima explica 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."
    
por gertvdijk 03.05.2013 / 09:51
0

Btw, às vezes você pode querer evitar a exibição na tela, mas pode querer capturá-lo em um arquivo. Se esse for o caso, você pode fazer algo assim:

mv obj/*.o . > move.log 2>&1
    
por Psicofrenia 03.05.2013 / 10:44