То, что вы пишете и как вы это пишете, говорит о том, что в ваших знаниях может быть один или два пробела.
Знаете ли вы о РЕПОЗИТОРИЯХ и как ими пользоваться? Прошивка доступна из репозитория, НО вам нужно изменить список источников, чтобы получить ее.
Debian по умолчанию предоставляет только «бесплатные» продукты. Прошивка является проприетарной, т.е. «не бесплатной», но к ней все еще можно получить доступ.
См. https://linuxpanda.wordpress.com/2016/12/31/things-to-do-after-installing-debian-stretch/, особенно раздел «Обновление списка источников». НЕ СЛЕДУЙТЕ СЛЕПОЕ ЗА ОСТАЛЬНОЙ ЧАСТЬЮ ЭТОГО САЙТА, ЕСЛИ/ПОКА ВЫ НЕ ПОНИМАЕТЕ, ЧТО МОЖЕТЕ ДОБАВЛЯТЬ.
См.https://wiki.debian.org/DebianRepository
Вам будет полезно добавить synaptic > (AS ROOT )apt install synaptic.
Прошивка в основном нужна для видео и вайфая. Как правило, люди работают на основе «Кажется, это работает?» и «Если это не сломано, не пытайся это починить».
Потребность во встроенном программном обеспечении обычно можно определить, сначала идентифицировав аппаратное обеспечение, а затем проверив, НЕОБХОДИМО ли это оборудование во встроенном программном обеспечении. Некоторые вещи просто работают. Оборудование можно обнаружить, используя в Терминале либо команду > lspci, либо команду > lsusb.
По моему мнению, это связано с тем, что при выполнении внешней команды оболочка 1 )разветвляется, 2 )обрабатывает перенаправления в дочернем процессе, а 3 )exec является фактической командой.. С назначением var
, выполненным в 2, в дочернем элементе он не виден родительской оболочке после выхода из запущенной программы. Со встроенной командой нет форка, и оболочка жонглирует fd по мере необходимости в основном процессе оболочки, и назначение переменной вступает в силу там.
Не то чтобы это имело большое значение, так как перенаправление в some external command {var}>/whatever
в любом случае бесполезно. Внешняя команда не может знать, какой fd был открыт для нее, и хотя она может определить, какие fd у нее есть, могут быть другие, кроме открытого для перенаправления в этой строке, поэтому она не может надежно использовать этот fd для вывода. к /whatever
. Вместо этого вы обычно используете фиксированный номер fd или имеете некоторый аргумент командной строки или переменную среды, чтобы указать номер fd для использования.
Но и здесь этого сделать нельзя, так как переменная еще не установлена при обработке расширений в командной строке, поэтому передать ее запускаемой программе довольно сложно.unset var; /bin/echo "var=$var" {var}>/dev/null
выводит только var=
, как и unset var; var=$var /usr/bin/env {var}>/dev/null |grep ^var
. (Хотя в ksh и zsh последний, похоже, передает фактическое число через окружение.)
Единственное место, где такое перенаправление, кажется, имеет смысл, это exec {var}>/whatever
, и это встроенная переменная, установленная в основной оболочке, и значение есть для использования следующими командами.
Документация GNU bash, раздел 3.6 Параграф 2 гласит: «Каждое перенаправление…».
Независимо от того, используется ли фактически fd в такой команде, как cmd {fd}>file
, любая встроенная команда -устанавливает fd, а любая внешняя команда не устанавливает fd. Либо bash, либо руководство неправильно.
Paul--) echo "Hello, Worms" {var}>real 1>&${var}
Paul--) declare -p var; ls -l real; cat real
declare -- var="11"
-rw-r--r-- 1 paul paul 13 Sep 2 10:27 real
Hello, Worms
Paul--)
Paul--) /bin/echo "So long, suckers" {why}>deal 1>&${why}
Paul--) declare -p why; ls -l deal; cat deal
bash: declare: why: not found
-rw-r--r-- 1 paul paul 17 Sep 2 10:29 deal
So long, suckers
Paul--)
На самом деле значение $why доступно во втором перенаправлении (стандартного вывода ), но не так, как указано в Руководстве :«Если указано {varname}, перенаправление сохраняетсявыходит за рамки повеления... ».
Единственным преимуществом такого назначения, по-видимому, является то, что оно присваивает свободный fd по имени, вместо того, чтобы кодеру приходилось отслеживать численно:
: 9>myFirstFile
cmd >&9
: {fdLog}>myLogFile
cmd >&${fdLog}