Для ошибки :вам нужен буквальный (символ новой строки )без обратной косой черты после текста команды i
. В GNU sed вам может сойти с рук
seq 3 | sed -n -e '/2/{iline1\nline2' -e 'P}'
точно так же, как вам сошло с рук \n
для новой строки.
В противном случае:
seq 3 | sed -n '/2/{i\
line1\
line2
P;}'
Что касается ваших утверждений :, команда i
"вставляет" в выходной файл, а не в пространство шаблонов. В исправленном примере пространство шаблона будет равно 2, что P
будет напечатано полностью, так как оно не содержит новой строки.
Как правило, справочная страница GNU sed представляет собой беспорядок, и к ней следует обращаться только в отношении расширений GNU. Я рекомендую стандартную спецификацию , которая гораздо более удобочитаема :
.
[1addr]i\
text
Write text to standard output.
[2addr]P
Write the pattern space, up to the first , to standard
output.
После всей помощи, которую я получил, я в конце концов смог найти решение. Это не то решение, которое я действительно хотел, и оно не очень чистое, но оно работает, поэтому я публикую его здесь.
Проблема в моем понимании
Суть проблемы, по-видимому, заключается в том, что запуск Amixer в качестве общего пользователя повышает права доступа Sudo независимо от того, что я делаю, а создание другого пользователя только для запуска аудио Cronjobs не сработало.
Это привело к тому, что каждая команда amixer, отправляемая вручную через терминал, регулировала громкость до максимального значения 65536, а каждая команда, отправляемая через Cron, доводилась до 88. Это огромное несоответствие приводило к эффективному отключению звука независимо от того, что я делал.
Благодаря большой помощи двух людей здесь я пришел к выводу, что это, вероятно, потому, что один пытается запустить bash, а другой запускает sh. Но заставить этих двоих примириться, кажется, невозможно.
В конце концов я сдался и полностью изменил то, как я управляю всеми физическими компонентами вместе...
Итак, вот мое решение:
После перехода на адаптер HDMI-AGP я подключил простой 3,5-мм штыревой аудиоразъем -к -от NUC к телевизору. Телевизор, который я использую, поддерживает видео с AGP и звук с 3,5 мм, так что теперь у меня есть видео на телевизоре, но аудио нужно было переключить на Stereo Output
на NUC, чтобы заставить его работать.
После этого я пробежал amixer scontents
и sudo amixer scontents
и просмотрел информацию. Master
отобразил два отдельных значения, как я и ожидал, но PCM
теперь показывал 255, чего раньше не было.
Имея это в виду, я переключил свое внимание с Master на PCM и обновил Crontab следующим:
40 06 * * 1-5 amixer sset 'PCM' 191 2> /tmp/cronVolumeLog
25 07 * * 1-5 amixer sset 'PCM' 64 2> /tmp/cronVolumeLog
40 14 * * 1-5 amixer sset 'PCM' 128 2> /tmp/cronVolumeLog
Теперь все работает так, как я ожидал, хотя и с небольшим потрескиванием и другими незначительными проблемами, которые появляются при использовании аудиоразъема, но мне придется с ними разобраться.
Я знаю, что это не самый честный ответ на вопрос,но это единственное, что я нашел, которое сработало для меня после (буквально )дней поиска и работы со всеми, кто готов мне помочь.
Я надеюсь, что кто-нибудь когда-нибудь увидит этот пост, продвинется немного дальше меня и найдет решение. Или быстро сдаться и жить дальше своей жизнью и радоваться дурацкому аудиоразъему.
Но я многому научился, так что это кое-что.
Запуск amixer через cron выполняется от имени пользователя sudo в соответствии с расширением OP. Я обнаружил, что вместо «Master» у вас будет «Headphone» или аналогичный, который управляет выходом AV. Вместо того, чтобы возиться с необработанными значениями уровня громкости, просто используйте процент, чтобы установить громкость на желаемый уровень. то есть
15 09 * * * /usr/bin/amixer set Master 100\%
Примечание. :В приведенном выше примере знак процента экранирован.