J'essaye de faire quelque chose comme
alias ftp='echo do not use ftp. Use sftp instead.'
juste pour que ftp
cela ne soit pas utilisé accidentellement. Mais j'ai remarqué que
ftp abcd.com
provoquera un écho de la commande
do not use ftp. Use sftp instead. abcd.com
parce que le abcd.com
est considéré comme un argument pour echo
.
Existe-t-il un moyen de faire en sorte que Bash ne s'ajoute pas abcd.com
à la substitution ou echo
ne le prenne pas comme arguments supplémentaires? (Existe-t-il une solution pour chaque approche?)
Je suppose que je pourrais y arriver
alias ftp='sftp'
mais je veux juste arrêter la commande tous ensemble pour me rappeler de ne pas l'utiliser ftp
.
ftp
de différentes manières, mais si vous le souhaitez - utilisezprintf
plutôtecho
:printf "Do not use ftp. Use sftp instead.\n\c"
echo
l'sftp
alias? iealias ftp='echo "Do not use ftp"; sftp'
. Vous obtiendrez le rappel, tout en étant obligé d'utilisersftp
.ftp
Réponses:
Lorsque vous définissez un alias, la commande que vous définissez est exécutée à la place de celle que vous avez écrite. Cela signifie que lorsque vous exécutez
ftp abc.com
, ce qui est réellement exécuté estUne solution simple consiste à utiliser une fonction au lieu d'un alias:
Alternativement, vous pouvez utiliser
printf
comme suggéré par Costas:la source
la source
Mettez simplement un espace et le caractère de commentaire
#
à la fin de la chaîne d'alias:Cela entraînera le traitement des paramètres comme un commentaire. N'oubliez pas d'ajouter un espace avant,
#
sinon il ne sera pas interprété comme un jeton séparé après l'extension de l'alias.la source