диалоговое меню к дисплейным файлам и выбору один из них

[1180654] Нет, больше не нужно запрашивать пароль. Скрипт будет работать как root из-за [1180964]gksudo[1180965]. По моему опыту, [1180966]sudo[1180967] никогда не запрашивает пароль, если вы уже являетесь root (хотя я не смог найти этого в явном виде).[1180655].
1
16.09.2014, 00:29
2 ответа

Вы должны использовать меню, а не окно сообщений. Попробуйте этот сценарий:

#!/bin/bash
let i=0 # define counting variable
W=() # define working array
while read -r line; do # process file by file
    let i=$i+1
    W+=($i "$line")
done < <( ls -1 /home )
FILE=$(dialog --title "List file of directory /home" --menu "Chose one" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
clear
if [ $? -eq 0 ]; then # Exit with OK
    readlink -f $(ls -1 /home | sed -n "`echo "$FILE p" | sed 's/ //'`")
fi

Здесь необходим массив, иначе он не будет анализировать как команду, см. http://mywiki.wooledge.org/BashFAQ/050 .

Скрипт перечисляет все, что находится в папке / home, как и в вашем примере. Если вам действительно нужны только файлы, замените

ls -1 /home 

на

find /home -maxdepth 1 -type f

. Также подумайте об использовании 'whiptail', потому что он используется по умолчанию в большинстве дистрибутивов. Диалог в основном не устанавливается.

5
27.01.2020, 23:12

dialog имеет виджеты выбора файлов и выбора директории (как Xdialog):

picture of dialog with --fselect

Для его использования можно использовать скрипт OP

#!/bin/bash
dialog --title "List file of directory" --fselect /home 100 100

хотя окно 100x100 кажется довольно большим.

Если вы хотите ограничиться скриптами, которые могут быть запущены с помощью whiptail, опция --radiolist является альтернативой --menu.

3
27.01.2020, 23:12

Теги

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