Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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 ?

Posté(e)

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 ?

Posté(e)

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 :)

Posté(e)

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 ?

Posté(e)

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

Posté(e)

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 ?

Posté(e)

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)

Posté(e)

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...

Posté(e)

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)

Posté(e)
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



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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.