Используйте 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
, dash
ksh93
, 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
).
Вы можете использовать сетевую консоль в качестве устройства вывода для наблюдения за процессом загрузки. См.https://github.com/trini/u-boot/blob/master/doc/README.NetConsole.
Начиная с v2020.07 U -Boot может отправлять сообщения системного журнала через UDP в зависимости от конфигурации (CONFIG _LOG _SYSLOG=y ). Вам понадобится сервер системного журнала для записи сообщений.