VAR=value; somecommand
эквивалентно
VAR=value
somecommand
Это несвязанные команды, выполняемые один за другим. Первая команда присваивает значение переменной оболочки VAR
. Если VAR
уже переменная среды, она не экспортируется в среду, это остается внутренним к оболочке. Оператор export VAR
экспортировал бы VAR
к среде.
VAR=value somecommand
другой синтаксис. Присвоение VAR=value
к среде, но это присвоение только сделано в среде выполнения somecommand
, не для последующего выполнения оболочки.
Как пример:
# Assume neither VAR1 nor VAR2 is in the environment
VAR1=value
echo $VAR1 # displays "value"
env | grep '^VAR1=' # displays nothing
VAR2=value env | grep '^VAR2=' # displays "VAR2=value"
echo $VAR2 # displays nothing
Эта информация появляется в журналах ядра — обычно в /var/log/kern.log
, или /var/log/syslog
, или некоторый другой файл (это зависит от Вашей конфигурации системного журнала, различные дистрибутивы, имеет различные значения по умолчанию).
Если Вы хотели бы что-то предварительно фильтрованное, можно добавить правило udev. Создайте файл /etc/udev/rules.d/tkk-log-usb.rules
содержа что-то как:
SUBSYSTEM=="usb", RUN+="/usr/local/sbin/tkk-usb-event"
Среда программы заполняется с большим количеством переменных, описывающих устройство, включая:
ACTION
(add
или remove
)DEVICE
путь к устройству, если Вы хотите получить доступ к немуID_MODEL_ID
и ID_VENDOR_ID
содержите модель и идентификатор поставщика, и ID_MODEL
и ID_VENDOR
содержите соответствующий текстID_SERIAL
содержит порядковый номер устройства (при наличии)Можно сделать это с udevadm
:
udevadm monitor --subsystem-match=usb --property
или
udevadm monitor --subsystem-match=usb --property --udev
отфильтровать только udev
события. Если Вы хотите grep
для особого свойства необходимо будет освободить буфер udevadm
вывод (с инструментами как stdbuf
, script
, unbuffer
...):
stdbuf -i 0 -o 0 -e 0 udevadm monitor --subsystem-match=usb --property --udev | grep DEVPATH
или
script -q /dev/null -c "udevadm monitor --subsystem-match=usb --property --udev" | grep PRODUCT
или
unbuffer udevadm monitor --subsystem-match=usb --property --udev | grep -E 'ID_VENDOR_ID|ID_MODEL_ID'
Если Вы просто хотите контролировать текущие включенные USB-устройства watch --no-title lsusb
мог отвечать всем требованиям.