Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2014, à 11:33

Christophe C

[résolu] découper une variable en plusieurs

Bonjour,

je cherche à faire une liste déroulante avec zenity qui me permette de choisir un répertoire dans une liste.

Récupérer la liste des répertoire est facile via un ls ~/.local/share

La liste déroulante est facile aussi :
value=$(zenity --entry --title "CHOIX" --entry-text "$(ls ~/.local/share)" --text "Choisissez un répertoire")

Mais bien sur ls ~/.local/share n'envoie pas une liste dans la boite, juste une seule variable concaténée contenant tous les répertoires : REP1 REP2 REP3.

Ya t'il une solution simple pour récupérer une vrai liste ?

Sinon, LISTE=($a $b $c $d $e)
value=$(zenity --entry --title "CHOIX" --entry-text "${LISTE[@]}" --text "Choisissez un répertoire")
marche très bien, mais comment je passe de ls ~/.local/share à ($a $b $c $d $e) ? Un cut ?

J'ai aussi essayé des trucs genre :

for DOSSIER in "$HOME/.local/share"/*/
do
  echo `basename "${DOSSIER}"`
done

Qui marchent très bien pour un affichage écran, mais pas pour ce que je veux.

J'ai testé des while read, mais sans succès.

Ca doit pas être compliqué, mais je ne trouve pas. Si quelqu'un peut m'aider....

Dernière modification par Christophe C (Le 29/03/2014, à 11:22)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

En ligne

#2 Le 23/03/2014, à 12:01

pingouinux

Re : [résolu] découper une variable en plusieurs

Bonjour,
Peut-être ceci ?

value=$(zenity --file-selection --directory --title "CHOIX" --filename="/home/$USER/.local/share/.")

et cliquer sur le répertoire share pour afficher son contenu.

Hors ligne

#3 Le 23/03/2014, à 12:05

casperfr

Re : [résolu] découper une variable en plusieurs

bonjour,

et un truc du genre ?

LISTE=$(ls -l ~/.local/share | grep ^d  | awk '{print $9}')

Dernière modification par casperfr (Le 23/03/2014, à 12:05)

Hors ligne

#4 Le 23/03/2014, à 12:15

Christophe C

Re : [résolu] découper une variable en plusieurs

@pingouinux : non, je connais la sélection de fichier, mais il ne s'agit pas de cela : le nom du répertoire me sert à un traitement, ce n'est pas pour choisir un fichier.

@casperfr : ça ne fait rien. Pas de découpage. Idem que LIST=$(ls ~/.local/share)

Sinon

LIST=($(ls ~/.local/share/plank/themes */))

value=$(zenity --entry --title "CHOIX DES THEMES" --entry-text "${LIST[@]}" --text "Choisissez un thème pour Plank")

marche plus ou moins, mais en ajoutant le répertoire parent (??) et si un rep est composé de 2 mots, il est éclaté en 2 lignes, ce que je ne veux évidemment pas.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

En ligne

#5 Le 23/03/2014, à 12:23

casperfr

Re : [résolu] découper une variable en plusieurs

Bonjour Christophe C

j'ai essayé

LISTE=($(ls -l /etc | grep ^d  | awk '{print $9}'))

et j'obtiens bien une liste avec une '/n' pour chaque répertoire meme avec ceux ayant un espace dans leur nom si je on ne m'étais pas la variable entre parenthèse effectivement on avait une simple concaténation,
je ne peut pas essayé n'ayant pas d'interface graphique sur mon linux server.

bon courage

Hors ligne

#6 Le 23/03/2014, à 12:36

Christophe C

Re : [résolu] découper une variable en plusieurs

Effectivement, avec la parenthèse qui manquait, ça marche mieux smile. Merci. mais chez moi les noms des rep en +sieurs mots sont tronqués : il ne reste que le 1er mot.

Par contre j'ai trouvé un truc qui marche. Je cherchais autour de IFS (“Internal Field Separator”) et j'ai trouvé ça :

OIFS=$IFS
IFS=$'\n'
LIST=($(ls ~/.local/share))
IFS=$OIFS

value=$(zenity --entry --title "CHOIX" --entry-text "${LIST[@]}" --text "Choisissez un répertoire")

pas encore tout compris sur la manipulation de IFS qui est faite, mais ça fonctionne. Merci à tous.

Dernière modification par Christophe C (Le 23/03/2014, à 12:39)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

En ligne

#7 Le 23/03/2014, à 14:45

Watael

Re : [résolu] découper une variable en plusieurs

salut,

cd ~/.local/share
List=( */ )
cd ~-
value=$(zenity --entry --title "CHOIX" --entry-text "${List[@]//\//}" --text "Choisissez un répertoire")

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 23/03/2014, à 23:02

Christophe C

Re : [résolu] découper une variable en plusieurs

ha oui, sympa. Merci smile


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

En ligne