IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

alias avec paramètre


Sujet :

Shell et commandes GNU

  1. #1
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut alias avec paramètre
    Bonjour

    Peut-on créer un alias qui prenne en compte les paramètres qu'on lui passe ?

    A priori la question semble con car le paramètre est à la base utilisé par l'alias comme la commande d'origine. Si par exemple je tape alias toto=rm alors la commande toto /etc/passwd sera traduite en rm /etc/passwd donc le paramètre est bien pris en compte.

    Toutefois dans ma situation le paramètre doit être pris en compte au milieu de l'alias. Exemple (non fonctionnel) alias toto=echo $1 est arrivé permettant alors de taper toto zorro pour avoir au final "zorro est arrivé".
    Et ça je n'y arrive pas. J'ai tenté la base alias toto="echo $1 est arrivé" puis alias toto='echo $1 est arrivé' puis alias toto='echo \$1 est arrivé' puis alias toto='echo $(eval "echo $1") est arrivé' mais rien ne fonctionne...

    Si quelqu'un a une idée...

    Merci à tous
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,

    En général, on fait une fonction pour ce type de problème pas un alias...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ alias toto='sh -c '\''echo $1 est arrivé'\'' _'
    $ toto zorro
    zorro est arrivé
    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 134
    Points
    15 134
    Par défaut
    Salut,
    Citation Envoyé par Sve@r Voir le message
    Si quelqu'un a une idée...

    Merci à tous
    un script et l'alias qui pointe dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #$/bin/bash
    echo $1 "est arrivé"
    J'appelle ça fasttest.sh, et donc alias toto=fasttest.sh puis toto zorro me sort zorro est arrivé.

    Pas brillant, mais bon…

    Parce que l'alias, en lui passant deux variables avec toutes les combinaisons possible de simples et doubles quotes me sort toujours est arrivé zorro ou une erreur…

    EDIT : ah, doublé par disedorgue pendant que je testais,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    Pourquoi ne pas définir simplement une petite fonction dans ce cas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function toto { echo "$1 est arrivé"; }
    Par ailleurs,
    Citation Envoyé par man bash
    ALIASES
    […]
    There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Pas brillant, mais bon…
    Hum... comment acquiéser tout en restant poli...?
    S'il faut passer par un script alors plus besoin d'alias quoi...

    Citation Envoyé par disedorgue Voir le message
    En général, on fait une fonction pour ce type de problème pas un alias...
    Je réserve les fonctions pour des trucs plus complexes (boucles, alternatives, etc). C'est un peu le principe de la presse pour écraser une mouche. Comme celui qui utilise awk pour récupérer le login de /etc/passwd

    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ alias toto='sh -c '\''echo $1 est arrivé'\'' _'
    $ toto zorro
    zorro est arrivé
    Ah joli
    Bizarre toutefois ce _' terminant l'instruction. Je peux mettre x' ça marche mais si je mets rien ou espace ça ne marche plus

    Citation Envoyé par balkany Voir le message
    Pourquoi ne pas définir simplement une petite fonction dans ce cas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function toto { echo "$1 est arrivé"; }
    Oui, si je ne peux pas faire autrement c'est effectivement la solution. Mais j'espérais bien dans l'alias (merci pour ta copie du man, j'aurais dû le lire)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bizarre toutefois ce _' terminant l'instruction. Je peux mettre x' ça marche mais si je mets rien ou espace ça ne marche plus
    -c If the -c option is present, then commands are read from the first non-option argument command_string. If there are arguments after the command_string, the first argument is assigned to
    $0 and any remaining arguments are assigned to the positional parameters
    . The assignment to $0 sets the name of the shell, which is used in warning and error messages.
    Si tu veux éviter le sous shell, tu peux aussi faire un alias qui crée une fonction qui se détruit elle même à l'appelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ alias toto='_(){ echo $1 est arrivé ; unset -f _ ; } ; _'
    $ toto zorro
    zorro est arrivé
    Cordialement.

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    je ne vois pas en quoi une fonction serait plus lourde que de triturer un alias pour qu'il accepte un paramètre positionnel.

    je plussoie la fonction, même si son seul objectif est d'accepter un argument.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    je ne vois pas en quoi une fonction serait plus lourde que de triturer un alias pour qu'il accepte un paramètre positionnel.
    Ce que je disais à propos de la fonction c'était évidemment "avant" que je voie ce qu'allait devenir l'alias...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net] Thread avec paramètres
    Par WriteLN dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/04/2005, 17h42
  2. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  3. [PL/SQL] Curseur avec Paramètre
    Par blids dans le forum Oracle
    Réponses: 5
    Dernier message: 10/10/2004, 20h07
  4. Alias avec interbase
    Par pifou02 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/03/2004, 11h55
  5. Réponses: 3
    Dernier message: 21/05/2003, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo