Что означают MID, PCH, HDMI?
MID - составная аббревиатура с непонятным расширением: это прерывание с сигналом сообщения Регистр идентификатора возможности в наборе микросхем серии C220, который использует ваша машина.
(Вы спросите, как им удалось свести этот громоздкий термин к MID? MSI - это хорошо известная аббревиатура, так что это регистр «MSI ID», или MID С таким же успехом они могли бы назвать его MSIID или MSICID, но я думаю, людям слишком нравится TLA . См. Раздел 17.1.1.25 в Intel 8 / C220 series datasheet .)
В любом случае MID здесь не важен. Важно то, что он привязан к выходам HDMI, которые с точки зрения пользователя являются настоящим устройством вывода звука.
HDMI - это цифровой аудио / видеотранспорт, наиболее часто встречающийся на бытовом развлекательном оборудовании, таком как плееры Blu-ray , но также и на некоторых ПК, особенно на тех, которые предназначены для использования как ] домашние кинотеатры .Поскольку HDMI может передавать как звук, так и видео, он отображается в вашем списке устройств вывода звука. Некоторые люди действительно используют его в качестве специального вывода звука, отправляя HDMI на ЦАП , в то время как видео выводится другим путем, например VGA.
Я не знаю, почему вы видите три выходных тракта HDMI, но это почти наверняка не потому, что ваш компьютер имеет 3 выходных разъема HDMI, или даже возможность таковых. Я не решаюсь даже догадываться, в чем разница между ними, хотя, если вы опубликуете вывод
lspci -v
, я смогу исследовать задействованные микросхемы и, вероятно, разберусь.PCH - это то, что вы бы назвали своей настоящей «звуковой картой», хотя на самом деле это не карта в машине. PCH - это название Intel для семейства микросхем, которые включают вывод звука. Поскольку было много поколений PCH, вы часто видите, что за ним следует фрагмент номера детали IC, например PCH C220 , который помогает вам решить, совместим ли данный драйвер с конкретным вариантом семейства PCH на ваша материнская плата.
Какой из них подключен к стандартной розетке цвета мха?
PCH.
Как объяснил ilkkachu , ваша проблема заключается в том, что одинарные кавычки не должны быть частью шаблонов и что если вы пишете шаблоны в контексте оболочки, оболочка удалит их.
Тем не менее, похоже, что вы можете обойти необходимость явного считывания шаблонов из вашего файла:
rsync --exclude-from=./list source/ target
С помощью --exclude-from=FILENAME
, rsync
будут считываться шаблоны исключения из именованного FILENAME
. Обратите внимание, что при этом в шаблонах не должно быть этих одинарных кавычек.
Если файл действительно содержит '/home/*'
, с кавычками, кавычки будут в значении excludestr
в цикле, а затем в аргументе, который вы передаете rsync
. В этом случае они не являются частью команды оболочки, а просто частью расширенного значения подстановки команды.
С другой стороны, если вы пишете exclude_String+=(--exclude='/home/*')
, теперь кавычки являются частью команды оболочки и удаляются во время обработки этой команды. (С эффектом превращения *
обычного персонажа.)
rsync
на самом деле не ожидает и не обрабатывает кавычки как часть шаблона исключения, он просто будет рассматривать их как любой другой символ и будет исключать файлы с именами, содержащими кавычки. Итак, если у вас есть шаблоны исключения в виде данных в каком-то файле, у вас не должно быть там кавычек.
Кроме того, вместо for x in $(cat file)
используйте while IFS= read -r line; do...; done < file
или, в данном случае, mapfile -t exclude_String < file
. Эта замена команды на cat
вызывает разделение слов, поэтому у вас не может быть шаблонов исключения, содержащих пробелы. Он также немедленно вызывает подстановку шаблонов, прямо здесь, в списке слов для цикла for
. Это не то, что вы хотите.
В общем,то, что вам нужно:
excludes=()
while IFS= read -r line; do
excludes+=(--exclude="$line")
done <./list
rsync "$flags" "${excludes[@]}". "$destination"
С ./list
, содержащим только шаблоны для исключения:
/home/*
*.vim*
(Кавычки вокруг "$line"
в +=(--exclude="$line")
не позволяют оболочке замещать файлы с именем --exclude=something
в текущем каталоге.)
Хотя в случае rsync
вы могли бы также использовать--exclude-from
:
rsync "$flags" --exclude-from=./list. "$destination"
Если вы собираетесь использовать что-то более сложное, чем файл, для загрузки цикла, вы можете использовать подстановку процесса:
while IFS= read -r line; do
excludes+=(--exclude="$line")
done < <(some command that produces the exclude patterns)
См. также:Почему моя переменная локальна в одном цикле while read, но не в другом похожем цикле?