Я вполне уверен, единственные зарезервированные байты 0 (ASCII Nul) и 0x2f (ASCII '/', наклонная черта вправо).
Можно легко сделать файл с'.', '\' и другие броские вещи в нем. Думайте "unicode имена файлов", которые содержат все виды странных значений байта.
Естественно, у Вас не может быть названий дубликата файла в том же каталоге, так названные "." файлы и ".." не может обычно делаться простым пользователем: часть файловой системы ядра создает их, когда каталог создается.
Также обратите внимание, что большинство файловых систем имеет предел на длину имени файла, и Вы не можете создать файл, имя которого является пустой строкой.
Прежде всего, ответы на мои собственные вопросы.
1. Как получить фактическое название подключенного устройства, такое же, как я вижу на выходе [116419]lsusb[116420]?
Не знаю, есть ли какой-нибудь специальный инструмент для получения названия устройства по паре [116186]vendor_id:product_id[116187], поэтому мне пришлось немного взломать [116188]lsusb[116189] и [116190]grep[116191]: например, [116192]lsusb | grep '0458:003a'
подробности установки. Протестировано на Linux Mint 13, думаю, оно должно работать на Ubuntu и других производных Ubuntu, и надеюсь, с [116213]udev[116214] оно будет работать на любой *nix системе.
Зайдите на страницу проекта [116421][116422], возьмите оттуда исходники и поместите их куда-нибудь. Там есть только один основной скрипт: [116423]my-udev-notify.sh[116424], но архив также содержит звуки для уведомлений о подключении/отключении, плюс некоторую дополнительную информацию, подробнее см. в [116425]readme.txt[116426].
После этого он должен работать для вновь подключенных устройств. То есть, если вы отключите какое-нибудь устройство, вы не получите уведомления. Но когда вы подключите его обратно, вы получите. (да, для меня это работает без перезапуска udev. Если это не для тебя, попробуй перезагрузка)
Чтобы она работала на всех устройствах, просто перезагрузите систему. ЗАМЕЧАНИЕ, что может быть много уведомлений во время первой загрузки (см. известные проблемы в [116219]readme.txt[116220]). На втором загрузка, не будет никаких уведомлений (если только вы не подключите новое устройство, когда система выключена)
mount //192.168.15.123/a /home/b/c -t cifs -o username=d,password=e,uid=f,gid=g,iocharset=utf8
mount //192.168.15.123/a /home/b/c -t cifs -o username=d,password=e,uid=f,gid=g,iocharset=utf8,codepage=cp437
mount //192.168.15.123/a /home/b/c -t cifs -o username=d,password=e,uid=f,gid=g,iocharset=utf8,codepage=cp850
Вы можете настроить ее (включить/выключить визуальные и звуковые уведомления, или изменить звуки), проверить readme.txt в архиве на предмет деталей[115921].
Добавьте следующие строки перед строками визуальных уведомлений, чтобы дать сценарию представление о том, на каком дисплее X следует запускатьnotify-send
(или любое другое приложение X):
export DISPLAY=:0
export XAUTHORITY=/var/lib/lightdm/.Xauthority
Конечно, вы должны изменить вторую строку в соответствии с окружением вашего рабочего стола (или диспетчером отображения ). Эта строка отлично работает для Ubuntu 16.04, которая использует unity в качестве рабочего стола и lightdm в качестве диспетчера отображения.
(из этого поста)
sudo -u X_user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/X_userid/bus notify-send 'Hello world!'
Где пользователь X _— это пользователь, от имени которого вы хотите работать, а идентификатор пользователя X _— идентификатор группы пользователя
пример большая птица и 1000