Почему U-boot не может/не регистрирует сообщения для просмотра позже

Используйте set -xв оболочке.

$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!

Использование set -xвключает параметр оболочки xtrace(set +x, отключает его )и должен работать во всех оболочках Bourne -, таких как bash, dashksh93, pdkshи zsh. Это побуждает оболочку отображать команду, которая выполняется после выполнения расширений псевдонимов, расширений переменных и т. д.

Вывод будет в стандартный поток ошибок оболочки (, как и обычное приглашение ), поэтому он не будет мешать перенаправлению стандартного вывода, и ему будет предшествовать приглашение, как определено параметром PS4переменная оболочки (часто +␣по умолчанию ).

Пример с несколькими функциями:

$ world () { echo "world"; }
$ hello () { echo "hello"; }
$ helloworld () { printf '%s %s!\n' "$(hello)" "$(world)"; }
$ helloworld
hello world!
$ set -x
$ helloworld
+ helloworld
++ hello
++ echo hello
++ world
++ echo world
+ printf '%s %s!\n' hello world
hello world!

С вашим конкретным примером (с исправленным синтаксисом и добавленными кавычками):

$ install () { sudo apt-get install "$@"; }
$ set -x
$ install dicelab
+ install dicelab
+ sudo apt-get install dicelab
bash: sudo: command not found

(Я не использую и не использую sudoв своей системе, поэтому ожидается эта ошибка.)

Обратите внимание, что уже существует общая утилита с именем install, так что называть вашу функцию как-то иначе(aptin? )может понадобиться, если вы в какой-то момент захотите использовать эту утилиту.


Обратите внимание, что вывод трассировки — это вывод отладки . Это представление того, что делает оболочка во время выполнения вашей команды. Вывод, который вы видите на экране, может не подходить для ввода оболочки.

Также обратите внимание, что я использовал bashвыше. Другие оболочки могут иметь другое приглашение трассировки по умолчанию (zsh, включающее строку zshи номер истории текущей команды, например ), или могут не «складывать» приглашения, как bashдля вложенных вызовов.


Я запускаю Раньше я запускал с set -xво всех моих интерактивных оболочках по умолчанию. Приятно видеть, что на самом деле было выполнено... но я заметил, что программируемое завершение табуляции и т. д. может вызвать нежелательный вывод трассировки в некоторых оболочках, а некоторые оболочки немного подробны в выводе трассировки по умолчанию (, например.zsh).

0
19.08.2019, 21:24
1 ответ

Вы можете использовать сетевую консоль в качестве устройства вывода для наблюдения за процессом загрузки. См.https://github.com/trini/u-boot/blob/master/doc/README.NetConsole.

Начиная с v2020.07 U -Boot может отправлять сообщения системного журнала через UDP в зависимости от конфигурации (CONFIG _LOG _SYSLOG=y ). Вам понадобится сервер системного журнала для записи сообщений.

0
28.01.2020, 03:21

Теги

Похожие вопросы