我正在尝试做类似的事情
alias ftp='echo do not use ftp. Use sftp instead.'
以免ftp
被意外使用。但我注意到
ftp abcd.com
将导致命令回显
do not use ftp. Use sftp instead. abcd.com
因为abcd.com
被视为 的论证echo
。
有没有办法让 Bash 不添加abcd.com
替换,或者echo
不将其作为额外的参数? (每种方法都有解决方案吗?)
我以为我能做到
alias ftp='sftp'
但我只是想让命令全部停止以提醒自己不要使用ftp
.
答案1
定义别名时,将运行您设置的命令,而不是您编写的命令。这意味着当你运行时ftp abc.com
,实际执行的是
echo do not use ftp. Use sftp instead abc.com
一个简单的解决方案是使用函数而不是别名:
ftp(){ echo 'do not use ftp. Use sftp instead'; }
或者,您可以printf
按照 Costas 的建议使用:
alias ftp="printf 'do not use ftp. Use sftp instead\n'"
答案2
alias ftp='echo do not use ftp. Use sftp instead. # '
答案3
#
只需在别名字符串的末尾添加一个空格和注释字符即可:
alias ftp='echo do not use ftp. Use sftp instead. #'
ftp abcd.com
do not use ftp. Use sftp instead.
这将导致参数被视为注释。只是不要忘记在之前添加空格,#
否则在别名扩展后它不会被解释为单独的标记。