Estoy tratando de hacer algo como
alias ftp='echo do not use ftp. Use sftp instead.'
solo para que ftp
no se use accidentalmente. Pero me di cuenta de que
ftp abcd.com
hará que el comando haga eco
do not use ftp. Use sftp instead. abcd.com
porque abcd.com
se considera que es un argumento a favor echo
.
¿Hay alguna manera de hacer que Bash no agregue abcd.com
a la sustitución, o hacer que echo
no lo tome como argumentos adicionales? (¿Hay una solución para cada enfoque?)
Supuse que podría hacerlo
alias ftp='sftp'
pero solo quiero hacer que el comando se detenga por completo para recordarme que no debo usar ftp
.
ftp
de otra manera, pero si desea hacerlo, use enprintf
lugar deecho
:printf "Do not use ftp. Use sftp instead.\n\c"
echo
elsftp
alias? es deciralias ftp='echo "Do not use ftp"; sftp'
. Obtendrá el recordatorio, a la vez que se verá obligado a usarlosftp
.ftp
Respuestas:
Cuando define un alias, el comando que establece se ejecuta en lugar del que escribió. Esto significa que cuando ejecutas
ftp abc.com
, lo que realmente se ejecuta esUna solución simple es usar una función en lugar de un alias:
Alternativamente, puede usar
printf
como lo sugiere Costas:fuente
fuente
Simplemente ponga un espacio y el carácter de comentario
#
al final de la cadena de alias:Esto hará que los parámetros se traten como un comentario. Simplemente no olvide agregar un espacio antes, de lo
#
contrario no se interpretará como un token separado después de la expansión del alias.fuente