PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > [ksh] Retour ls en liste de choix
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

[ksh] Retour ls en liste de choix

Réponse
 
LinkBack Outils de la discussion
Vieux 29/01/2007, 22h00   #1
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut [ksh] Retour ls en liste de choix

bonjour à vous...

Je débute dans le monde du korn shell... et je cherche à faciliter le
travail de certain utilisateurs...
Dont moi

comment dois-je procéder pour afficher dans une "liste de choix" le
retour d'une commande ls ?
Et idéalement récupérer le nom du fichier ou dossier qu'a sélectionner
l'utilisateur ?

Merci d'avance pour votre aide !

Bil

  Réponse avec citation
Vieux 29/01/2007, 23h03   #2
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

bil.bao@freesurf.ch writes:

> bonjour à vous...
>
> Je débute dans le monde du korn shell... et je cherche à faciliter le
> travail de certain utilisateurs...
> Dont moi
>
> comment dois-je procéder pour afficher dans une "liste de choix" le
> retour d'une commande ls ?
> Et idéalement récupérer le nom du fichier ou dossier qu'a sélectionné
> l'utilisateur ?
>
> Merci d'avance pour votre aide !


Voir par exemple:
http://groups.google.com/group/fr.co...3116ce7e26e12e

C'est de la coquille bash, mais ça devrait pouvoir tourner sans trop
de modifications en ksh.

Si on considère la seconde implémentation, commencer simplement par:

menu_items=( $(ls) )


--
__Pascal Bourguignon__ http://www.informatimago.com/

There is no worse tyranny than to force a man to pay for what he does not
want merely because you think it would be good for him. -- Robert Heinlein
  Réponse avec citation
Vieux 29/01/2007, 23h32   #3
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

C'est exactement ce qu'il me fallait !
Merci beaucoup Pascal

  Réponse avec citation
Vieux 29/01/2007, 23h32   #4
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

C'est exactement ce qu'il me fallait !
Merci beaucoup Pascal

  Réponse avec citation
Vieux 29/01/2007, 23h32   #5
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

C'est exactement ce qu'il me fallait !
Merci beaucoup Pascal

  Réponse avec citation
Vieux 30/01/2007, 11h28   #6
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

Pascal je m'excuse.. mais sans vouloir abuser...

Le script fonctionne parfaitement sous un shell bash

Cependant, je n'arrive pas à le faire fonctionner en ksh.
En faite c'est la partie de la boucle qui me pose des problèmes...

L'affichage n'est pas très coérant et l'incrémentation des choix ne se
fait pas.
ça ne tient pas à grand chose mais je suis incapable de voir ou est
l'erreur...

menu_items=$(ls ../repository)
menu_lines=4
menu_span=$(( ( $menu_lines - 1 + ${#menu_items[@]} ) / $menu_lines ))
column_width=$(( 150 / $menu_span ))
format="%2d %-$(( ${column_width} - 3 ))s"
i=0
while [ "${i}" -lt "${menu_lines}" ] ; do
j=$i
while [ "${j}" -lt "${#menu_items[@]}" ] ; do
printf " $format $j ${menu_items[$j]} "
j="${j} + ${menu_lines}"
done

printf "\n"
i=$(( $i+1 ))
done

Mille fois merci !

  Réponse avec citation
Vieux 30/01/2007, 13h32   #7
Jean-Louis Liagre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

bil.bao@freesurf.ch a écrit :
> ...
> comment dois-je procéder pour afficher dans une "liste de choix" le
> retour d'une commande ls ?
> Et idéalement récupérer le nom du fichier ou dossier qu'a sélectionner
> l'utilisateur ?


- - - - - - - - - - - -
#!/bin/ksh

select choix in $(ls)
do
break
done

echo "choix=$choix"
- - - - - - - - - - - -

Les noms de fichiers ne doivent pas contenir d'espaces.
  Réponse avec citation
Vieux 30/01/2007, 13h37   #8
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

Jean-Louis Liagre :

> $(ls)


Plutôt «*».
  Réponse avec citation
Vieux 30/01/2007, 15h35   #9
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

bil.bao@freesurf.ch writes:

> Pascal je m'excuse.. mais sans vouloir abuser...
>
> Le script fonctionne parfaitement sous un shell bash
>
> Cependant, je n'arrive pas à le faire fonctionner en ksh.
> En faite c'est la partie de la boucle qui me pose des problèmes...
>
> L'affichage n'est pas très coérant et l'incrémentation des choix ne
> se fait pas. ça ne tient pas à grand chose mais je suis incapable
> de voir ou est l'erreur...


Je suis désolé, mais je n'utilise pas ksh. En grande partie pour
cette raison, que les choix ne s'incrémentent pas. Il semble que
modifier une variable à l'intérieur d'une boucle while n'a pas
d'impact hors de la boucle, au moins dans les cas où le corps de la
boucle s'exécute dans un sous-processus.

Pour cette raison, et d'autres, je trouve que programmer une telle
fonction avec un shell est limite. (J'ai mieux à faire qu'apprendre
les tonnes de détails arbitraires et idiosyncrasies spécifiques
nécessaires pour pouvoir écrire correctement (sans dire portablement)
des programmes en shell).

Je conseille d'utiliser un vrai langage de programmation pour écrire
ce genre de "script", par exemple, scsh, clisp, ruby, etc, n'importe
quoi, mais pas un shell.


> menu_items=$(ls ../repository)
> menu_lines=4
> menu_span=$(( ( $menu_lines - 1 + ${#menu_items[@]} ) / $menu_lines ))
> column_width=$(( 150 / $menu_span ))
> format="%2d %-$(( ${column_width} - 3 ))s"
> i=0
> while [ "${i}" -lt "${menu_lines}" ] ; do
> j=$i
> while [ "${j}" -lt "${#menu_items[@]}" ] ; do
> printf " $format $j ${menu_items[$j]} "
> j="${j} + ${menu_lines}"
> done
>
> printf "\n"
> i=$(( $i+1 ))
> done
>
> Mille fois merci !



--
__Pascal Bourguignon__ http://www.informatimago.com/

This universe shipped by weight, not volume. Some expansion may have
occurred during shipment.
  Réponse avec citation
Vieux 30/01/2007, 16h10   #10
bil.bao@freesurf.ch
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Retour ls en liste de choix

Merci à tous pour votre aide !

Pascal, malheureusement je n'ai pas vraiment le choix du language.
C'est un peu imposé par la société... et ce que tu me dis ne m'étonne
qu'a moitié
compte tenu des différentes décisions qui se prennent chez nous
ça ne changerait pas mon problème de toute manière vu que je n'y
connais rien
Je te remercie de tes conseils qui me serviront probablement pour la
suite...

Jean-Luc et Louis... Merci pour le select !
C'est un peu moins sexy en ce qui concerne la mise en forme... mais
c'est parfaitement fonctionnel en l'état et il faut le dire plus
simple

A+

Bil




  Réponse avec citation
Vieux 30/01/2007, 20h43   #11
Jean-Louis Liagre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

Luc Habert a écrit :
> Jean-Louis Liagre :
>
>> $(ls)

>
> Plutôt « * ».


C'est vrai, et le résultat est identique, mais ça esquive la question
(retour de ls).
  Réponse avec citation
Vieux 30/01/2007, 20h47   #12
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

2007-01-30, 21:43(+01), Jean-Louis Liagre:
> Luc Habert a écrit :
>> Jean-Louis Liagre :
>>
>>> $(ls)

>>
>> Plutôt « * ».

>
> C'est vrai, et le résultat est identique, mais ça esquive la question
> (retour de ls).


sigh...

Non, le resultat n'est pas identique. $(ls) ne fait pas de sens
si on n'a pas au prealable modifié IFS et fait un set -f. Et *
devient "*" s'il n'y a pas de fichier dans le repertoire
courant.

--
Stéphane
  Réponse avec citation
Vieux 02/02/2007, 01h11   #13
Jean-Louis Liagre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

Stephane Chazelas wrote:
> 2007-01-30, 21:43(+01), Jean-Louis Liagre:
>> Luc Habert a écrit :
>>> Jean-Louis Liagre :
>>>
>>>> $(ls)
>>> Plutôt « * ».

>> C'est vrai, et le résultat est identique, mais ça esquive la question
>> (retour de ls).

>
> sigh...
>
> Non, le resultat n'est pas identique.


Le plus souvent, si.

> $(ls) ne fait pas de sens
> si on n'a pas au prealable modifié IFS et fait un set -f.


J'ai précisé que les fichiers ne devaient pas contenir d'espace.

Les autres cas ne me semblent pas très réalistes (fichiers dont le nom
contient "*", "?", "<Tab>" ou un retour chariot ...)

> Et *
> devient "*" s'il n'y a pas de fichier dans le repertoire
> courant.


C'est vrai, on peux aussi supposer qu'il y en a, d'après l'énoncé de la
question posée.

  Réponse avec citation
Vieux 02/02/2007, 02h51   #14
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

Jean-Louis Liagre <root@localhost> writes:

> J'ai précisé que les fichiers ne devaient pas contenir d'espace.
>
> Les autres cas ne me semblent pas très réalistes (fichiers dont le nom
> contient "*", "?", "<Tab>" ou un retour chariot ...)


Bien au contraire, avec les interfaces utilisateurs graphiques, le
plus réaliste c'est uque le nom de fichier contienne des espace, des
étoiles, des points d'interrogation et toute sorte de caractères
bizarres.


--
__Pascal Bourguignon__ http://www.informatimago.com/

PLEASE NOTE: Some quantum physics theories suggest that when the
consumer is not directly observing this product, it may cease to
exist or will exist only in a vague and undetermined state.
  Réponse avec citation
Vieux 02/02/2007, 13h02   #15
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [ksh] Retour ls en liste de choix

2007-02-02, 03:51(+01), Pascal Bourguignon:
> Jean-Louis Liagre <root@localhost> writes:
>
>> J'ai précisé que les fichiers ne devaient pas contenir d'espace.
>>
>> Les autres cas ne me semblent pas très réalistes (fichiers dont le nom
>> contient "*", "?", "<Tab>" ou un retour chariot ...)

>
> Bien au contraire, avec les interfaces utilisateurs graphiques, le
> plus réaliste c'est uque le nom de fichier contienne des espace, des
> étoiles, des points d'interrogation et toute sorte de caractères
> bizarres.

[...]

Et pour moi, ce n'est pas une question de ce qui est probable ou
pas, mais de syntaxe correcte ou pas.

La syntaxe shell est a la con, il faut faire avec ou utiliser de
meilleurs languages, il y en a plein des intereprétés de nos
jours.

--
Stéphane
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 19h44.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,20701 seconds with 23 queries