Когда я читаю скрипт makefile, я встречаюсь со следующей командой linux script:
mv obj/*.o . 2>/dev/null
Что означает эта команда? Я понимаю, что mv obj/*.o .
означает, что все файлы с суффиксом o
в папке obj
будут перемещены в текущую папку. Что значит 2>
? Когда они объединены вместе, какова цель? Спасибо!
Вы смотрите перенаправление вывода (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."
Кстати, иногда вы можете запретить отображение на экране, но можете записать его в файл. Если это так, вы можете сделать что-то вроде этого:
mv obj/*.o . > move.log 2>&1