xdg-mime
является основным компонентом среды рабочего стола, и вы не должны пытаться изменить его поведение. Я понимаю ваши опасения сломать критически важный сценарий, но если он дает разные результаты на рабочей машине и на тестовой машине, он уже сломан, и его нужно исправить. По сути,
file -b --mime-type <file>
является заменой
xdg-mime query filetype <file>
, и его изменение должно быть безболезненным, особенно если ваше предпочтительное поведение является выходом file -i
.
Команды xdg-*
зависят от среды рабочего стола, в которой вы работаете (помните, что префикс расшифровывается как X Desktop Group) и, в принципе, их вообще не следует использовать в скриптах, не предназначенных для взаимодействия с пользователем.
Если вы хотите иметь одинаковое поведение во всех системах, используйте такие команды, как file
, которые предназначены для того, чтобы вести себя всегда одинаково (OK, они могут быть различиями в небольших версиях, но это неизбежно).
Если вам нужно «наиболее разумное» поведение для каждой системы, используйте команды-оболочки, такие как xdg-mime
, и будьте готовы адаптироваться к их представлению о «наиболее разумном» в каждой системе.
Неправильно пытаться изменить каждую среду таким образом, чтобы зависящие от среды программы вели себя одинаково.
Получил работу второй части.
«Затем я хотел бы, чтобы он подключался каждый раз, когда я подключаю его».
Создал правило udev по адресу:
sudo vi /etc/udev/rules.d/80-mp3_a011.rules
Добавил эту информацию, которая просто модифицирует usb-storage и добавляет мой pid: vid в usb- хранилище new_id.
ACTION=="add", ATTRS{idVendor}=="a010", ATTRS{idProduct}=="a010", RUN+="/sbin/modprobe usb-storage" RUN+="/bin/sh -c 'echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id'"
перезапуск udev
sudo /etc/init.d/udev restart
Теперь, как только я подключаю устройство, оно обрабатывается как любое другое запоминающее устройство USB.
Первая часть работает:
«Я хотел бы сначала подключиться один раз через командную строку».
sudo echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id
Сработало ли НЕ , потому что к команде echo было применено sudo, а не к new_id или что-то в этом роде.
Сначала был изменен на корневую оболочку, а затем добавлен PID: VID к new_id.
sudo su
echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id