Использование grep и awk..
grep -o '[[:alnum:]]*' file | awk '{ count[$0]++; next}END {ORS=" "; for (x in count)print x"@"count[x];print "\n"}'
тесты@1 тест@1 несколько@1 a@1 это@1 есть@1 есть@1 тест@3 есть@1
Ладно, в какой-то степени разобрался.
Решение udev. Вы можете позвонить с
udevadm info --name=/dev/sdb1 --attribute-walk
список всех атрибутов, используемых категорией, от конечной точки до корня.
Затем я создал локальное правило в /etc/udev/rules.d/10 -local.rules
Это правило содержит
SUBSYSTEMS=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/bin/usb_load.sh"
SUBSYSTEMS=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/usb_unload.sh"
Он сравнивает события, и если SUBSYSTEMS, ACTION и ENV{DEVTYPE} совпадают, RUN+= выполняет 2 сценария оболочки, которые я поместил в корзину. Он запускается от имени пользователя root, поэтому никаких проблем с разрешением впереди нет.
не забывай
udevadm control --reload
Чтобы перечитать правила
Решение наверняка можно улучшить, так как правила способны на большее, но пока это хорошее решение для меня. Я подправлю его вовремя.