Aller au contenu

Featured Replies

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)

Je pense que personne n'a compris la demande

De base, via putty, l’auto-complétion est activée

Posté(e)
  • Auteur

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, beaucoup plus :)

Mais y'a plus simple, pourquoi ne pas rajouter le chemin qui contient tes scripts dans ton $PATH

Posté(e)
  • Auteur

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)
  • Auteur

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)
  • Auteur

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)
  • Auteur

Comment faire du coup, pour définir une liste de mot à compléter dans un 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)
  • Auteur

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)
  • Auteur

Je ne comprend pas trop. Aurais tu un tout petit bout de code pour illustrer ? Merci

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…

Qui est en ligne (Afficher la liste complète)

  • Il n’y a aucun utilisateur enregistré actuellement en ligne

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.