Так как Вы сказали, "неважно, как hacky"...
Получите внешнюю звуковую карту, которую можно подключить к ноутбуку через USB. Включите аналоговый разъем в это. Включите свою внешнюю звуковую карту, когда Вы хотите соединиться, аудиоразъем и иметь Ваш сценарий удара обнаруживают, подключена ли внешняя звуковая карта через USB.
Найдено это для menuentry:
Опция -класса может быть использована любое количество раз для группировки пунктов меню в классы. Темы меню могут отображать различные классы, используя различные стили.
Для использования необходимо посмотреть на grub-темы .
Другие опции:
.
Опция --users предоставляет определенным пользователям доступ к определенным пунктам меню. См. раздел "Безопасность".
Опция --unrestricted предоставляет всем пользователям доступ к определенным пунктам меню. См. раздел Безопасность.
Опция --hotkey ассоциирует горячую клавишу с пунктом меню. клавиша может быть одной буквой или одним из псевдонимов "пробел", "табуляция" или "удалить"
.IOW Я всегда задавался вопросом, означает ли
>/dev/null
, чтоcat mybigfile >/dev/null
фактически обрабатывает каждый байт файла и записывает его в/dev/null
, который его забывает.
Это не полный ответ на ваш вопрос, но да, вот как он работает.
cat
считывает именованные файлы или стандартный ввод, если файлы не названы, и выводит в стандартный вывод содержимое этих файлов до тех пор, пока он не встретит EOF на (включая стандартный ввод) последнем файле с именем. Это его задание.
Добавляя >/dev/null
, вы перенаправляете стандартный вывод в/dev/null. Это специальный файл (узел устройства), который выбрасывает все записанное в нем (и немедленно возвращает EOF при чтении). Обратите внимание, что перенаправление ввода-вывода является функцией, предоставляемой оболочкой, а не каждым отдельным приложением, и что нет ничего волшебного в имени /dev/null, только то, что существует там в большинстве Unix-подобных систем .
Важно также отметить, что конкретные механики узлов устройств варьируются от операционной системы к операционной системе, но cat (который в системе GNU означает coreutils) является кроссплатформенным (один и тот же исходный код должен выполняться по крайней мере на Linux и Hurd) и, следовательно, не может принимать зависимости от конкретных ядер операционной системы. Кроме того, он по-прежнему работает, если вы создаете псевдоним/dev/null (в Linux это означает узел устройства с тем же самым номером мажорного/второстепенного устройства) с другим именем. И всегда есть случай написания где-то еще, который ведет себя эффективно так же (скажем ,/dev/zero).
Из этого следует, что cat
не знает об особых свойствах/dev/null и, скорее всего, не знает о перенаправлении в первую очередь, но ему все равно нужно выполнить точно такую же работу: он считывает именованные файлы и выводит содержимое/этих файлов на стандартный вывод. То, что стандартный выход cat
попадает в пустоту, само по себе не касается cat
.
Нет, вы, конечно, не хотите закрывать дескрипторы файлов 0, 1 и 2.
Если вы это сделаете, то при первом открытии файла приложение станет stdin/stdout/stderr...
Например, если вы делаете:
echo text | tee file >&-
Когда tee
(по крайней мере некоторые реализации, такие как busybox ') открывает файл для записи, он будет открыт на дескрипторе файла 1 (stdout). Таким образом, tee
запишет текст
дважды в файл
:
$ echo text | strace tee file >&-
[...]
open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 1
read(0, "text\n", 8193) = 5
write(1, "text\n", 5) = 5
write(1, "text\n", 5) = 5
read(0, "", 8193) = 0
exit_group(0) = ?
, который, как известно, вызывает уязвимости системы безопасности. Например,
chsh 2>&-
и chsh
(приложение setuid) могут в конечном итоге записывать сообщения об ошибках в /etc/passwd
.
Некоторые инструменты и даже библиотеки стараются избегать этого.Например, GNU tee
переместит дескриптор файла в один из двух выше, если файлам, которые он открывает для записи, назначены 0, 1, 2, в то время как busybox tee
не будет.
Большинство инструментов, если они не могут записать в stdout (например, потому, что он не открыт), будут сообщать об ошибке на stderr (на языке пользователя, что означает дополнительную обработку для открытия и анализа файлов локализации...), так что это будет значительно менее эффективным и, возможно, приведет к сбою программы.
В любом случае, это не будет более эффективным. Программа по-прежнему будет выполнять системный вызов write ()
. Это может быть более эффективным, только если программа прекращает запись в stdout/stderr после первого неудачного системного вызова write ()
, но программы обычно этого не делают. Обычно они либо выходят с ошибкой, либо продолжают попытки.
При просмотре руководства это относится только к тематике. У этого отрывка было немного больше на эту тему.
фрагмент - http://www.gnu.org/software/grub/manual/grub.html#menuentryМеню загрузки, в котором GRUB отображает пункты меню из «grub.cfg» файл. Это список предметов, где каждый предмет имеет заголовок и необязательный значок. Пиктограмма выбирается на основе указанных классов для элемента меню. При наличии PNG-файла с именем «myclass.png» в каталог «grub/themes/icons», он будет отображаться для предметов, которые имеют класс myclass . Меню загрузки может быть настроено в нескольких способы, такие как шрифт и цвет, используемые для заголовка пункта меню, и задание стилевых полей для самого меню и для выбранного предмета выделить.