Je veux créer un alias pour xfreerdp, et je dois concaténer le paramètre/v: dans mon alias avec le nom du serveur, que je fournis évidemment lors de l'appel de cet alias.
Alias:
alias r='xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:'
Frapper:
r mywindows.server.com
Résultat:
tcp_connect: getaddrinfo (erreur liée à l'erreur) Erreur: négociation de la sécurité du protocole ou échec de la connexion
Est-il possible de concaténer votre alias bash avec le paramètre suivant?
Merci d'avance.
Le problème est que l'alias est développé et exécuté avant que l'argument suivant ne soit atteint. Par conséquent, le nom du serveur n'est pas concaténé avec l'alias développé.
Dans ce genre de cas, vous devez utiliser une fonction:
r_d () {
xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:"$1"
}
Maintenant vous pouvez faire:
r_d server.foobar.com
Vous ne pouvez pas donner de paramètres aux alias, MAIS vous pouvez le tromper avec xargs
, ou plus précisément son drapeau -I
, qui permet de remplacer string. Dans cet exemple, je remplace en lui disant de remplacer REMPLACESTRING par tout ce que xargs reçoit.
Alias édité:
alias r='xargs -I REPLACESTRING xfreerdp /u:user /p:password /w:1300 /h:768 /sec:rdp /cert-ignore +cliprdr --plugin rdpsnd --plugin rdpdr --data disk:media:/tmp/RDP /v:REPLACESTRING'
Remarque: vous ne comprenez pas comment votre commande xfreerdp
fonctionne, j’ai remarqué que d’autres options telles que /p:password
ne laissaient pas d’espace entre l’indicateur et le champ de données. Réglez donc /v:
et REPLACESTRING
vous vous sentez nécessaire.
Courez comme si:
r <<< "server.somedomain.com"
ou
echo "server.somedomain.com" | r
Utilisez function comme alias plutôt que comme commande. Ensuite, vous pouvez utiliser le paramètre dans le corps de la fonction tel qu'il est décrit dans autre réponse .