Linux スクリプト コマンドの説明

Linux スクリプト コマンドの説明

makefile のスクリプトを読むと、次の Linux スクリプト コマンドに遭遇します。

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

このコマンドはどういう意味ですか? フォルダー内のmv obj/*.o .サフィックスを持つすべてのファイルが現在のフォルダーに移動されるという意味だと理解しています。これはどういう意味ですか? これらを結合する場合、目的は何ですか? ありがとうございます!oobj2>

答え1

あなたが見ているのは出力リダイレクト (Bash). 2 はエラー出力である「stderr」を表します。 にリダイレクトすると/dev/null、エラー出力は破棄され、失われます。ただし、通常の出力である「stdout」または 1 は、(デフォルトではターミナルに) 引き続き表示されます。

基本的に、これはコマンドのエラー出力を黙らせるだけですmv

上記のリンクからの抜粋では、より一般的な説明がされています。

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

答え2

ところで、画面に表示しないようにしたいが、ファイルにキャプチャしたい場合もあるでしょう。その場合は、次のようにします。

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

関連情報