Это - вид косвенного ответа, потому что я не вижу, почему Вы имели бы небесплатное программное обеспечение в системе и не знали бы об этом. Нельзя сказать Вы неправы хотеть проверить, но возможно сначала Вы хотите остановиться и думать, должны ли Вы действительно.
Я хотел бы эту функциональность на Fedora
Репозитории Fedora разделены на 'свободный' и 'несвободное'. По умолчанию только свободные репозитории используются. Таким образом, если Вы никогда не добавляли никакие другие репозитории, затем yum
ничего не мог установить от них.
Это должно было бы, конечно, включать модули ядра, драйверы и другие двоичные блобы, которые часто позволяются в дистрибутивах.
Посмотрите эту страницу. Единственная мягкая фетровая шляпа исключения делает, для "двоичного встроенного микропрограммного обеспечения", которое не требуется, если Вы не используете определенные аппаратные средства. Я думаю, что Вы знали бы, что также, но я не могу обещать.
Я полагаю, что "встроенное микропрограммное обеспечение" технически установлено на устройстве, и технически это уже там так или иначе. Например, Ваш BIOS запускает небесплатное программное обеспечение. На том уровне нет ничего, что можно сделать. Можно также считать обсуждение мягкой фетровой шляпы "двоичного встроенного микропрограммного обеспечения" по ссылке на той странице.
Само ядро не может содержать небесплатный код, оно может только закончиться в модуле. Если Вы загружаете источник с kernel.org и компилируете Ваше собственное, я не думаю, что он содержит что-либо того вида, начиная с отношения Linus ("Я отчасти принимаю их, но я никогда не поддерживаю их, и мне не нравятся они"), подразумевает, что несвободным модулям позволяют использоваться с ядром, но очень вряд ли быть распределенными надлежащим Linux (то есть, kernel.org). Собственные драйверы независимо распределяются; дистрибутивы затем включают их, не kernel.org (однако, согласно той странице "Forbidden Items", мягкая фетровая шляпа явно не включает собственные драйверы, по крайней мере, в 'свободном' repos по умолчанию).
Вы могли исследовать онлайн весь материал, перечисленный lsmod
. Так как любой двоичный блоб должен быть модулем, мне кажется, это - то, где Вы найдете его.
Fedora рекомендует, если Вы хотите создать свое собственное ядро, использовать исходный пакет от них. Однако я использовал скрученные вручную ядра из ванильных источников kernel.org на мягкой фетровой шляпе в течение многих лет и никогда не имел проблему. Таким образом, если Вы - удобное выполнение это и не используете несвободные репозитории, у Вас не должно быть несвободного установленного материала.
Только простые случаи могут быть выражены с помощью &&
и ||
. Конструкция if
является более общей. , если СОСТОЯНИЕ; затем FOO; fi
эквивалентен CONDITION && FOO
(при условии правильного использования фигурных скобок для разделения блока, если необходимо), но как только появляется else
(или elif
), это вообще невозможно.
if CONDITION; then FOO; else BAR; fi
не эквивалентно
CONDITION && FOO || BAR
. Если УСЛОВИЕ
истинно, обе конструкции выполняют FOO
. Если FOO
ложно, то конструкция if
пропускает BAR
, тогда как конструкция &&… ||
выполняет BAR
].
И нет, вы не можете обойти это с помощью CONDITION && {FOO; правда; } || BAR
. Это заставляет составную команду возвращать истину, если CONDITION
истинно, а FOO
- ложно, тогда как , если CONDITION; затем FOO; else BAR; fi
в этом случае возвращает false.
Это из-за смысловой разницы. Кроме того, есть удобочитаемость: вложенное использование &&
и ||
очень быстро становится трудным для расшифровки. Фактически, я не рекомендую использовать оба в одной команде - особенно с учетом того, что два оператора имеют одинаковый приоритет в оболочке, тогда как они имеют разные приоритеты в C и большинстве других языков, основанных на C (включая Perl и Ruby).
если тест-лист; тогда еще ... fi
и список тестов && thenlist || elselist
в целом не эквивалентны. Разница в том, что в if
конструируется ровно один из thenlist
и выполняется elselist
. В другом случае это зависит от кода выхода thenlist
(и возможных блоков eliflist
).
Таким образом, вы должны добавить (например) true
в конец выбранного списка результатов, чтобы список имел тот же код выхода, что и тестовый список, который вызвал его выполнение.
if true; then
echo true
test -e doesntexist
else
echo false
fi
можно переписать с помощью &&
и ||
, убедившись, что код выхода из кодовых блоков. Вместо
true && { echo true; test -e doesntexist; } || echo false
вам понадобится
true && { echo true; test -e doesntexist; true; } || echo false
elif
if test -e exists; then
echo true
elif test -e doesntexist
echo elif
else
echo false
fi
будет
test -e exists && { echo true; true; } ||
{ test -e doesntexist && { echo elif; true; } || echo false; }