
makefile のスクリプトを読むと、次の Linux スクリプト コマンドに遭遇します。
mv obj/*.o . 2>/dev/null
このコマンドはどういう意味ですか? フォルダー内のmv obj/*.o .
サフィックスを持つすべてのファイルが現在のフォルダーに移動されるという意味だと理解しています。これはどういう意味ですか? これらを結合する場合、目的は何ですか? ありがとうございます!o
obj
2>
答え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