Обычный совет ставить двойные кавычки вокруг расширений переменных связан с тем, что $foo
вне кавычек означает "взять значение foo
, разделить его на пробелы¹ и расширить каждое полученное слово как шаблон подстановки, если оно соответствует хотя бы одному файлу", а не "взять значение foo
". В частности, когда переменная foo
содержит имя файла, "$foo"
- это то, что вам нужно. Но здесь переменные ARCHIVE_FILEMASK
и FILEMASK
содержат шаблоны подстановки. Поэтому при их использовании необходимо расширить их, поэтому их следует использовать без кавычек. Таким образом, они будут интерпретированы как список шаблонов, разделенных пробелами; в данном случае это не имеет значения, поскольку в значении этих переменных нет пробелов.
Переменные f
и extractDir
содержат имена файлов, поэтому они должны оставаться в двойных кавычках.
for f in ${ARCHIVE_FILEMASK}
do
if 7z e -aoa -o"${extractDir}" "$f"; then
mv "${extractDir}/"${FILEMASK}.xml "$dest"
fi
done
Поскольку вы используете bash, вы можете вызвать shopt -s nullglob
, чтобы заставить шаблон "${extractDir}/"${FILEMASK}.xml
расшириться до пустого списка, если он не соответствует ни одному файлу. Команда mv
будет жаловаться, что ей не хватает файла, если вы не передадите ей исходный файл; вы можете решить эту проблему, вызывая ее только при наличии хотя бы одного совпадения.
shopt -s nullglob
for f in ${ARCHIVE_FILEMASK}
do
if 7z e -aoa -o"${extractDir}" "$f"; then
matches=("${extractDir}/"${FILEMASK}.xml)
if ((${#matches[@]})); then
mv "${matches[@]}" "$dest"
fi
fi
done
¹ Или в более общем виде, как указано в IFS
.
Mi sistema de visualización dual está configurado para que las ventanas puedan moverse sin problemas entre las pantallas; es decir, el servidor X lo ve como una gran pantalla con quizás diferentes resoluciones en diferentes partes. Desde esta perspectiva, lo que está pidiendo es restringir el acceso del puntero a solo una parte de la "pantalla". Estoy bastante seguro de que no hay manera de hacer esto.
также ознакомьтесь с ответом бибопа здесь :https://askubuntu.com/questions/839161/limit-a-graphics-tablet-to-one-monitor
его более длинная версия с некоторыми дополнениями. Для БЫСТРОЙ И ГРЯЗНОЙ ВЕРСИИ:
Нашел это, это решило мою проблему, которая звучала похожей на вашу.
https://forum.kde.org/viewtopic.php?f=139&t=125532
Это код для HUION New 1060, например :HID 256c :006e Pad
Первый тип:
xinput # get the IDs for all relevant pieces of my tablet.
бла-бла :HID 256c :006e Pad id=17 может/должно быть два устройства, Pad и Pen. Затем выполните:
xrandr # get the names of my displays
ищите те, которые показывают «подключено», например HDMI -A -0 подключено и, возможно, DisplayPort -2 подключен
Затем вы указываете xinput прикрепить идентификаторы к экрану, на котором вы хотите включить Krita или Photoshop, например, если вы используете порт HDMI для подключения к главному экрану:
xinput map-to-output 13 HDMI-A-0
xinput map-to-output 14 HDMI-A-0
это было мое. сбрасывается после перезагрузки. спасибо этому пользователю timotimo!
Чтобы добавить к ответ JRR , я обнаружил, что после выполнения его инструкций, запустив
xinput list-props [device id]
вы можете получить свойство «Матрица преобразования координат», а затем создать файл в /etc/X11/xorg.conf.d/xx-tablet.conf
со следующим:
Section "InputClass" Identifier "Tablet Screen Restriction" MatchProduct "[device name]" Option "Coordinate Transformation Matrix" "output of xinput list-props [device id]" EndSection
Выполнение этого должно сохранить вашу конфигурацию после перезагрузки.