我为一些远程主机使用全局别名,
alias -g MY_HOST="server.waytolongfoobar.com"
以便能够使用它们进行ssh ssh MY_HOST
.但是,如果我想向主持人scp一些东西,我必须使用一些尴尬的东西scp file.tar.gz 'echo MY_HOST':~/dir
.有没有更好的方法在参数内使用全局别名?
也许我使用全局别名是为了错误的目的?我想我实际上可以使用像scp file $MY_HOST:~/dir
.这样的导出变量.无论如何,全局别名对变量的好处是什么(除了不必键入$).
您可以直接在ssh
不使用shell的情况下定义主机别名.将以下内容添加到您的.ssh/config
文件中:
host MY_HOST HostName server.waytolongfoobar.com
现在,任何地方ssh
或scp
将采用主机名,它将被MY_HOST
视为同义词server.waytolongfoobar.com
.
至于你关于别名实用程序的问题,它们在解析命令行的任何部分之前都会被扩展,允许你包含shell语法:
% alias -g PAGE="| less" % cat .zshrc PAGE # expands to cat .zshrc | less % alias -g ignore="> /dev/null" % cat .zshrc ignore