Я только что установил Arch с grub2. Когда я загружаюсь, он не запускает grub

Во-первых, все после > или >> - это имя файла; поэтому > 1 записывает в файл с именем 1 .

Числа в других формах, приведенных в вашем примере, являются дескрипторами файлов. По умолчанию программы запускаются с подключенными дескрипторами файлов 0 (стандартный ввод), 1 (стандартный вывод) и 2 (стандартная ошибка); когда вы запускаете программу из интерактивной оболочки, они подключаются к вводу и выводу терминала (вы можете увидеть это, запустив ls -l / proc / $$ / fd в Linux).

Указание числа перед > , >> или > & указывает дескриптор файла, которым вы хотите управлять; число должно быть прямо перед символом > . Таким образом,

echo Example 2> stderr

напечатает «Пример» и создаст пустой файл stderr (который будет содержать все, что отправлено в стандартную ошибку).

Вы можете думать о файловых дескрипторах как о записях в таблице, указывающих на файлы; таким образом, по умолчанию:

  • 0 указывает на / dev / tty
  • 1 указывает на / dev / tty
  • 2 указывает на / dev / tty

Указание 1> файл (или просто > файл ) обновляет дескриптор файла 1, чтобы он указывал на файл , открытый в режиме усечения (поэтому его содержимое заменяется). Указание 2> 1 обновляет дескриптор 2 файла, чтобы он указывал на файл с именем 1 , открытый в режиме усечения.

Дублирование файловых дескрипторов с использованием > & (или &> , что является предпочтительной формой) просто обновляет один файловый дескриптор, чтобы он указывал на то, на что указывает другой.В вашем последнем примере > файл обновляет дескриптор файла 1:

  • 0 указывает на / dev / tty
  • 1 указывает на файл
  • 2 указывает на / dev / tty

, а затем 2> & 1 обновляет дескриптор файла 2:

  • 0 указывает на / dev / tty
  • 1 указывает на файл
  • 2 указывает на файл

(порядок важен: > файл 2> & 1 производит вышеуказанное, 2> & 1> файл в конечном итоге перенаправляет только дескриптор файла 1).

Форма 1> & 9 работает, только если дескриптор файла 9 был открыт, например. , скопировав в него дескриптор файла 1 ( 9> & 1 ) или открыв файл ( 9> файл ). Этот тип конструкции может быть полезен для отслеживания исходного содержимого файловых дескрипторов при перенаправлении; таким образом, в сценарии вы можете безопасно скопировать 1 и 2, перенаправить стандартный вывод и ошибку для любых целей, а затем восстановить их ...

В руководстве Bash есть все подробности.

0
24.08.2015, 04:45
0 ответов

Теги

Похожие вопросы