Предположим, у меня есть такой скрипт:
(В примере показан вариант использования rysnc)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
Идея заключается в том, чтобы предложить пользователю ввести каталоги «Source» и «Destination» для работы с rsync. Таким образом, пользователь должен будет войти вручную /path/to/directory/
через командную строку.
Вместо этого я хочу предложить пользователю ввести пути через графический интерфейс .
Что-то вроде этого:
Какие команды можно использовать, чтобы запросить у пользователя окно выбора графического интерфейса, которое возвращает путь к файлу в командной строке?
command-line
gui
prompt
Pandya
источник
источник
Ответы:
Вы можете использовать это для файлов:
и это для папок:
для использования запустите:
Обычно это соответствует текущей теме (для оконных менеджеров GTK в любом случае), на моей машине с модовой версией Zukitwo 3.8 это выглядит так:
Один из способов его использования такой:
Что бы привести
you selected /path/to/file
.Вы также можете использовать опции, чтобы установить соответствующий заголовок и каталог, в котором он начинается. Например, в вашем случае использования rsync:
Для файлов вы также можете указать тип файла для выбора - например:
ПРИМЕЧАНИЕ. Вы также можете использовать YAD , форк Zenity , который имеет больше функций.
Источник
По большей части вы можете использовать его так же - для файлового браузера:
и для страницы справки:
Хотя в то время (около версии 26?) Он не был обновлен в соответствии с новым интерфейсом GTK 3.14+ (zenity имел) - он имеет больше возможностей, но проверяет совместимость (основываясь на документации, он должен работать на GTK +> = 2.16. 0
источник
Просто для записи, вы можете использовать
dialog
для решения на основе текстового интерфейса пользователя (TUI).Синтаксис:
Пример:
Вывод будет примерно таким:
Как отметил @Wilf, вы можете использовать
$LINES
и$COLUMNS
переменные , чтобы сделать его заполнить терминал:источник
$LINES
и$COLUMNS
- поэтому вы запускаете,$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
чтобы заполнить окно терминала / экрана.Я знаю, что это 8 месяцев, а также на вопрос ОП был дан ответ. Тем не менее, Яд был упомянут, но ни один пример не был предложен. Вот мое решение с использованием Яд.
Как это работает, вот так. Ставим йад в цикле, установив переменную
$location
вsource
течение первого прохода иdestination
для второго. Вывод помещается в массив,selection[]
для которого переменнаяi
используется в качестве индекса. Это установлено в 0 в начале и увеличивается с каждым проходом. Следовательно источник сохраняется как${selection[1]}
и место назначения${selection[2]}
.DIR = "/ home" в первой строке устанавливает диалог по умолчанию. Опции команды yad можно найти в терминале, набрав
yad --help
.источник
Вот самое короткое (и лучшее) решение для ответа:
Yad
предоставляет точную опцию, как этоzenity
делает:Откроется диалоговое окно выбора каталога. Без дополнительного аргумента
--directory
это будет диалог выбора файла.источник