menu de diálogo para exibir arquivos e selecionar um deles

1

Eu quero exibir todos os arquivos no diretório /home no menu e selecione apenas um deles. Em seguida, o script imprimirá o caminho completo do arquivo selecionado.

Eu criei o seguinte script. Este script exibe apenas os arquivos no menu da caixa de diálogo.

#!/bin/bash
dialog --title "List file of directory /home" --msgbox "$(ls /home )" 100 100
    
por maihabunash 15.09.2014 / 07:55

2 respostas

5

Você deve estar usando o menu e não a caixa de mensagens. Experimente este script:

#!/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

A matriz é necessária aqui, caso contrário, ela não seria analisada como comando, consulte o link .

O script está listando tudo na pasta / home, igual ao seu exemplo. Se você realmente quer apenas arquivos, substitua

ls -1 /home 

com

find /home -maxdepth 1 -type f

Pense também em usar 'whiptail', porque é o padrão na maioria das distribuições. A caixa de diálogo não está instalada principalmente.

    
por 15.09.2014 / 10:40
3

caixa de diálogo tem widgets para seleção de arquivos e seleção de diretórios (como o Xdialog):

Parausá-lo,oscriptdoOPpodeser

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

embora uma janela 100x100 pareça bastante grande.

Se você quiser se limitar aos scripts que podem ser executados com whiptail , a opção --radiolist é uma alternativa para --menu .

    
por 29.10.2015 / 23:57