сценарий bash -запрос ввода через графический интерфейс

Оболочка /bin/shв Ubuntu — это dash, которая не поддерживает завершение с помощью табуляции.

Я предлагаю вам изменить оболочку входа для пользователя perisна оболочку, которая поддерживает завершение имен файлов с помощью табуляции, например bash.

Вы можете изменить оболочку входа в систему с помощью команды chshпри входе в систему как пользователь или с chsh perisкак root. Новая оболочка будет использоваться для следующего и последующих входов в систему.

3
10.08.2020, 00:35
2 ответа
  • Если вы хотите остаться в оболочке, используйтеdialog(Практически в каждом дистрибутиве она уже установлена ​​по умолчанию ).
    Прежде чем использовать его, прочитайте справочную страницу, чтобы вы могли настроить его так, чтобы он делал именно то, что вам нужно. Крошечный пример:
dialog --inputbox "Please input something" 0 0 2> /tmp/file_that_will_contain_your_input
  • Если вы хотите, чтобы появилось окно X11 -, проверьте xdialog. Но я рекомендую оставаться в оболочке:
    Написание скриптов, которые частично используют X11, а частично консоль, вызывает проблемы, не получая никакого преимущества.
    Синтаксис для xdialogпочти такой же, как и для dialogиз соображений совместимости. Таким образом, если вы поместите xперед приведенным выше примером, он будет делать то же самое, но с окном X11 -. Опять же, проверьте справочную страницу для получения дополнительной информации.
7
18.03.2021, 23:13

Zenity — хороший инструмент для этого.

user_input=$(zenity --entry)

Это присваивает переменной user_inputвсе, что пользователь вводит в окне GUI, если только пользователь не нажмет кнопку отмены, в этом случае код выхода не равен нулю.

user_input=$(zenity --entry)
if [ $? = 0 ]; then 
    echo "User has pressed OK. The input was:"
    echo "$user_input"
else
    echo "User has pressed cancel"
fi

Gxmessage является альтернативой с очень похожим синтаксисом.

user_input=$(gxmessage --entry "Enter your input")

Дополнительная информация вman zenityиman gxmessage.

8
18.03.2021, 23:13

Теги

Похожие вопросы