Lokomass Posté(e) le 22 mai 2013 Partager Posté(e) le 22 mai 2013 Bonjour, J'ai créée des petites fonctions dans mon .profile qui me permettent de faire des petites choses telles que les recherches de fichier ou lancement de batch de manière très rapide. Mais j'aimerai pouvoir en argument utiliser la complétion qui complète la commande. Par exemple j'ai une fonction qui lance un fichier, plutôt que de tout taper a la main j'aimerai que la complétion me permette de compléter les noms du fichier dans le répertoire que je lui donne. Ou encore plus simple, définir une liste de mot que le script peux compléter, Merci de votre aide 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 25 mai 2013 Auteur Partager Posté(e) le 25 mai 2013 UP svp, personne n'a jamais essayé de faire ceci ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 mai 2013 Partager Posté(e) le 27 mai 2013 Je pense que personne n'a compris la demande De base, via putty, l’auto-complétion est activée 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 27 mai 2013 Auteur Partager Posté(e) le 27 mai 2013 OK je vais essayé d'être plus précis. J'ai un répertoire /usr/syno/scripts, ou se situent tous mes scripts. Dans le .profile j'ai crée une petite fonction appelé sh qui en gros fait : sh() { if [ "$#" -eq 1 ] then if [ -f "$REPEXEC/$1.sh" ] then "$REPEXEC/$1.sh" else echo "Le script "$REPEXEC/$1.sh" n'existe pas" echo "Les scripts disponibles sont :" for i in `ls "$REPEXEC"` do echo "$i" | sed "s/.sh//g" done fi else echo "Usage : sh "script"" fi } Donc, au lieu par exemple de devoir écrire : sh applications J'aimerai pouvoir faire : sh app[TAB] Et hop il complète automatiquement par le mot applications. Est-ce que je suis plus clair ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 mai 2013 Partager Posté(e) le 27 mai 2013 Oui, beaucoup plus Mais y'a plus simple, pourquoi ne pas rajouter le chemin qui contient tes scripts dans ton $PATH 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 27 mai 2013 Auteur Partager Posté(e) le 27 mai 2013 Oui je peux aussi faire ça mais disons qu'en fait c'est un "exemple" de fonction. Le principe que j'aimerai pouvoir mettre en place en gros, c'est pouvoir compléter automatiquement les arguments de ma fonction... Et sinon avec le PATH, ça completera tout seul ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 mai 2013 Partager Posté(e) le 27 mai 2013 Oui, et si tu as plusieurs scripts et/ou programmes qui ont le même début, il te donnera la liste avec un double tab C'est beaucoup moins lourd que la fonction 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 27 mai 2013 Auteur Partager Posté(e) le 27 mai 2013 OK pour ça. Je vais tester en rentrant, Mais j'ai une autre fonction qui prend en argument des mots, par exemple prenons, banane, kiwi et orange. Si je fais ./mafunction ba[TAB], comment faire pour qu'il affiche automatiquement le mot banane ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 27 mai 2013 Partager Posté(e) le 27 mai 2013 Si ta liste d'arguments n'est pas pré-définie, je vois pas du tout comment tu veux que le script comprennent ce que tu veux compléter Il serait plus simple d'avoir des prompts dans ton script 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 27 mai 2013 Auteur Partager Posté(e) le 27 mai 2013 Ben moi je veux bien la prédéfinir en lui disant LISTE=(banane orange cerise) Mais je ne sais pas comment faire, et comment avoir des prompts dans mon script ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 28 mai 2013 Auteur Partager Posté(e) le 28 mai 2013 Comment faire du coup, pour définir une liste de mot à compléter dans un script ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 28 mai 2013 Partager Posté(e) le 28 mai 2013 Honnêtement, j'en ai aucune idée, le mieux pour du script, çà reste google Perso, je doute que tu trouves qqc Pour le prompt c'est la commande "read -p VARIABLE << /dev/tty " (Y'a un exemple dans mon script videostation) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 28 mai 2013 Auteur Partager Posté(e) le 28 mai 2013 J'ai trouvé des choses sous bash qui parlent d'une commande "Complete" mais qui n'existe pas sous ash... En quoi le prompt peut maider à faire ce genre de chose ? C'est vraiment dommage... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 28 mai 2013 Partager Posté(e) le 28 mai 2013 Au lieu de chercher de l'auto complétion, fait plutot l'inverse Tu défini un case, avec ta liste de variable, et dans le prompt, tu demandes lequel (1,2,3,4,5 ou toto, banane, kiwi) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 28 mai 2013 Auteur Partager Posté(e) le 28 mai 2013 Je ne comprend pas trop. Aurais tu un tout petit bout de code pour illustrer ? Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 28 mai 2013 Partager Posté(e) le 28 mai 2013 echo "banane = 1 , kiwi =2, toto=3 ..." read -p VARIABLE </dev/tty case $VARIABLE in 1) VAR2=banane ;; 2) VAR2=kiwi ;; 3) VAR2=toto ;; ... *) echo "Ce script n'accepte que 1,2,3..." exit esac 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.