Простые сценарии могут использовать файловый менеджер GUI для выбора файла?

У меня есть чрезвычайно простой сценарий, который в настоящее время выполняет команду на файле, расположенном в той же папке: command ./file_in_folder option output. Было бы лучше, если сценарий спрашивает пользователя, какой файл они хотят.

Простой сценарий может попросить, чтобы файловый менеджер GUI ОС по умолчанию открыл и пасовал назад выбранный файл к сценарию?

Поддельный код:

  • Пользовательский исполнимый сценарий двойного щелчка
  • Файловый менеджер GUI открывается
  • Пользователь выбирает <FILE>
  • Сценарий выполняется command <FILE> option output

Если не, что рекомендуемый путь должен передать <FILE> написать сценарий, который выполнится command <FILE> option output?

2
задан 30 January 2015 в 18:42

1 ответ

Zenity может использоваться для создания средства выбора файла GUI, с помощью --file-selection опция. Для единственного файла это достаточно:

#! /bin/bash

file="$(zenity --title "Pick a file" --file-selection)"
do something with "$file"

enter image description here

то, Где это становится хитрым, обрабатывает несколько файлов. Существует только два символа, не позволенные в именах файлов: ПУСТОЙ УКАЗАТЕЛЬ ASCII и /. /, конечно, появляется в путях. Поэтому единственный символ, который можно безопасно выбрать для разделения двух имен файлов, NUL. Вы не можете использовать NUL, так как символ должен быть передан как параметр командной строки.

у Вас есть две опции:

  • Выбор один файл во время с помощью повторенных диалоговых окон выбора.
  • Проверяют, что каждый путь, возвращенный zenity, является полным путем, и файл существует.

Что-то как:

#! /bin/bash

OLDIFS="$IFS"
IFS='-'
FILES=($(zenity --file-selection --multiple --separator='-' --title "Pick a file"))
IFS="$OLDIFS"

for file in "${FILES[@]}"
do
    if [[ $file == /* && -f $file ]]
    then
        echo $file
    fi
done

, Конечно, даже это не сохраняет нас от имени файла как /foo/bar-/etc/passwd. Так будьте осторожны, если Ваш сценарий работает с более высокими полномочиями, чем пользователь.

4
ответ дан 6 October 2019 в 02:43

Другие вопросы по тегам:

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