объяснение команды скрипта linux

объяснение команды скрипта linux

Когда я читаю скрипт 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

Связанный контент