Вы можете немного изменить исходную идею с массивами - используйте форму arrayName [number] = "назначение вкладки"
. Вот, например, то, что я сделал в интерактивном сеансе терминала, чтобы открыть новое окно терминала (и все эти шаги можно легко превратить в скрипт).
$ array[0]=" --tab --title 'Tab1' -e vi"
$ array[1]=" --tab --title 'Tab1' -e byobu"
$ gnome-terminal ${array[@]}
Генн Джекман в комментарии правильно заметил, что цитирование может стать проблемой, особенно если у вас есть несколько сложных команд, как в вашем случае.
Таким образом, вы можете захотеть разделить информацию для вкладки и фактическую команду, которую она должна выполнить, на два соответствующих массива, каждая запись массива на вкладку. Обратите внимание, что мы хотим использовать cmd [x]
как одну целую строку, поэтому цитируем ее, а tabinfo [1]
должен расширяться до нескольких различных параметров
Вы можете захотеть подумайте также о размещении имен файлов в переменных типа VAR = / path / to / file
и использовании $ VAR
для ссылки на эти внутренние команды вместо использования длинных команд.
#!/bin/bash
function main()
{
local cmd[1]="sh -c 'df;free;bash'"
local cmd[2]="sh -c 'lsblk;cat /etc/fstab;bash'"
local tabinfo[1]="--tab 'TAB1' --profile CRT -e"
local tabinfo[2]="--tab 'TAB2'"
gnome-terminal ${tabinfo[1]} "${cmd[1]}" ${tabinfo[2]} "${cmd[2]}"
}
main
Кажется, вам нужно ядро 4.14 или новее, см.https://bugzilla.kernel.org/show_bug.cgi?id=196985или этот пост на форумах lenovo .
Вы можете попробовать установить последнее ядро 4.19.16 -1 из репозитория backports.
Вам необходимо выполнить следующие команды от имени пользователя root.
Добавить запись репозитория для бэкпортов stretch -в/etc/apt/sources.list
echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list
Обновление индекса пакета
apt-get update
Установить новое ядро
apt-get -t stretch-backports install linux-image-amd64
Необязательно :установить заголовочные файлы ядра -
apt-get -t stretch-backports install linux-headers-amd64
Перезагрузка
reboot
Если это не работает, вы все равно можете загрузить свое старое ядро из меню загрузки «Дополнительные параметры».
Некоторые новые тачпады обнаруживаются через интерфейс PS/2, но их основной функционал доступен только через SMBus.
Стандартное ядро Debian 9 может быть слишком старым для поддержки этих :вам может понадобиться ядро с опцией времени компиляции -CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS
для них. Может попробовать бекпортить ядра?
Или, если в вашем ядре есть модуль ядра synaptics-rmi4
,попробуйте загрузить соответствующие драйверы I2C/SMBus для вашей системы, а затем загрузить synaptics-rmi4
.
(Похоже, поддержка сенсорных панелей, подключенных к SMBus -, начала добавляться в версии ядра 4.8. или около того, а стандартное ядро Debian 9 — 4.9.x, поэтому поддержка сенсорной панели SMBus могла быть все еще неполной или претерпевать значительные изменения в этой версии ядра.)