Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 26/02/2010, à 19:28

antoine4

[resolu] créer un alias avec paramètre

Bonjour je souhaiterai créer un allias avec un paramètre, je m'explique :
je voudrai créer un allias 'cdl' pour que ça ailler au dossier spécifié en paramètre et que ça fasse un ls.
J'ai essayé cdl='cd $1 ls' mais ça ne marche pas (j'ai cru voir dans la doc. que les paramètres étaient stockés sous forme de $x).
Quelqu'un pourrait-il m'aider ?
Merci beaucoup !

Dernière modification par antoine4 (Le 27/02/2010, à 14:46)

Hors ligne

#2 Le 26/02/2010, à 20:53

wido

Re : [resolu] créer un alias avec paramètre

essaye:

alias cdl="cd $1 | ls"

Dernière modification par wido (Le 26/02/2010, à 20:54)

Hors ligne

#3 Le 26/02/2010, à 20:55

gl38

Re : [resolu] créer un alias avec paramètre

Il faut mettre un ; entre les deux commande :
alias cdl='cd $1; ls'
fait ce que veux.
Cordialement,
Guy

Hors ligne

#4 Le 26/02/2010, à 22:39

nesthib

Re : [resolu] créer un alias avec paramètre

ceci ne fonctionnera pas, l'argument ne sera pas pris en compte, les alias ne gèrent pas les arguments. En revanche tu peux utiliser une fonction, c'est la solution la plus propre :

function cdl () { cd "$1" ; ls ; }

NB. les "…" autour de $1 ont leur importance en cas de caractères spéciaux dans le nom de fichier.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 26/02/2010, à 23:10

wido

Re : [resolu] créer un alias avec paramètre

Oui mais j'ai ceci:

bash: /home/wido/.bashrc: line 6: Erreur de syntaxe près du symbole inattendu « {cd »
bash: /home/wido/.bashrc: line 6: `function cdl () {cd "$1" ; ls ; }'

Hors ligne

#6 Le 26/02/2010, à 23:12

nesthib

Re : [resolu] créer un alias avec paramètre

j'avais oublié l'espace entre { et cd (important), c'est corrigé et cela fonctionne smile

ps. si tu as déjà défini un alias avec le même nom il faut relancer nouveau terminal sinon l'alias prendra le dessus sur la fonction…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 26/02/2010, à 23:17

gl38

Re : [resolu] créer un alias avec paramètre

Mais si, mais si, les alias prennent les arguments !
Faut essayer !
Les 2 solutions données fonctionnent avec ; ou |

Hors ligne

#8 Le 26/02/2010, à 23:19

nesthib

Re : [resolu] créer un alias avec paramètre

tu peux me donner un exemple gl38 ? et ton shell avec sa version ?

une démo comme quoi les alias ne prennent pas d'argument avec bash :

$ alias testarg="echo $2"
$ testarg a b
a b

en revanche

$ function testarg2 () { echo $2; }
$ testarg2 a b
b

wink

les alias ne prennent pas d'argument, le shell remplace juste l'alias par sa définition, donc :

ALIAS arg1 arg2 etc.

sera remplacé par

DÉFINITION_DE_L_ALIAS arg1 arg2 etc.

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 26/02/2010, à 23:26

gl38

Re : [resolu] créer un alias avec paramètre

l'exemple, c'est celui que j'ai donné plus haut
alias cdl='cd $1; ls'
je peux le mettre en ligne de commande ou dans le .bashrc (et puis je tape source .bashrc).
Si je tape
cdl /home
cdl .
cdl ..
j'obtiens ce qu'on peut attendre de cette commande.
Pour la version, synaptic me dit qu'il  a installé bash4.0-5ubuntu2.
Pour être honnête, à 20h40 je ne savais pas que ça marcherait !!
Cordialement,
Guy

Hors ligne

#10 Le 26/02/2010, à 23:31

nesthib

Re : [resolu] créer un alias avec paramètre

et bien avec la même version de bash je peux te confirmer que cela ne fonctionne pas…

lance cette suite de commande pour t'en convaincre (dans un teminal tout neuf) :

alias cdl="cd $1; ls"
pwd
cd Documents
cdl ~/Bureau
pwd

tiens le dossier n'est pas le bon…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 26/02/2010, à 23:46

wido

Re : [resolu] créer un alias avec paramètre

Tu veux que ça donne quoi avec tes commandes?

Hors ligne

#12 Le 26/02/2010, à 23:47

gl38

Re : [resolu] créer un alias avec paramètre

C'est vrai que ça ne change pas de directory à la fin, mais le résultat du ls est bon.
Ça ressemble aux variables locales et globales.
Mais là c'est un peu tard pour que je réfléchisse sérieusement à ces subtilités.
À demain.

Hors ligne

#13 Le 26/02/2010, à 23:49

nesthib

Re : [resolu] créer un alias avec paramètre

donc c'est bien ce que je disais ça ne fonctionne pas car ce n'est pas prévu pour…
alias → pas d'arguments (cf ce post)
function → arguments

après vous faites comme vous voulez mais ne vous étonnez pas si ça plante tongue

ps. pour les tétus :
man bash

ALIASES

       […]
       There is no mechanism for using arguments in the replacement text.   If
       arguments  are  needed,  a shell function should be used (see FUNCTIONS
       below).

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#14 Le 26/02/2010, à 23:53

wido

Re : [resolu] créer un alias avec paramètre

Ahh je viens de comprendre lol

Hors ligne

#15 Le 27/02/2010, à 00:01

nesthib

Re : [resolu] créer un alias avec paramètre

ton alias cdl="cd ; ls" fait ceci :
cdl dossier/
lancer la commande cd ; ls $1 dossier/ :
- un cd → cd sans argument = cd ~/
- ls dossier/ (car $1 = une chaîne vide)

ça fait en apparence une partie de ce que tu veux mais en réalité rien de bon


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#16 Le 27/02/2010, à 09:06

gl38

Re : [resolu] créer un alias avec paramètre

Oui, tu as raison !
Cordialement,
Guy

Hors ligne

#17 Le 27/02/2010, à 14:46

antoine4

Re : [resolu] créer un alias avec paramètre

Ok parfait merci beaucoup smile

Hors ligne

#18 Le 15/04/2013, à 13:29

tiresias

Re : [resolu] créer un alias avec paramètre

Bonjour,
(et désolé pour le déterrage hmm)
J'ai tenté ceci dans mon .bashrc:

function grepi() { grep -iInr "$1" . }

et lorsque j'ouvre un nouveau terminal j'ai (la ligne 52 est la fin du fichier bashrc et la fonction se trouve ligne 26...)

-bash: /home/moi/.bashrc: line 52: syntax error: unexpected end of file

mais sans succès... Quelqu'un aurait une idée du problème svp?

Hors ligne

#19 Le 15/04/2013, à 13:46

pingouinux

Re : [resolu] créer un alias avec paramètre

Bonjour tiresias,
La commande entre "{ }" doit se terminer par ";".

function grepi() { grep -iInr "$1" . ;}

Dernière modification par pingouinux (Le 15/04/2013, à 13:54)

En ligne

#20 Le 16/04/2013, à 13:21

tiresias

Re : [resolu] créer un alias avec paramètre

oh mon Dieu oui, j'avais tenté le ; mais à l'extérieur des {} roll

merci ^^

Hors ligne

Haut de page ↑