我为某些远程主机使用全局别名
alias -g MY_HOST="server.waytolongfoobar.com"
能够使用ssh MY_HOST
将其加入其中。但如果我想向主持人scp一些东西,我必须使用像scp file.tar.gz 'echo MY_HOST':~/dir
这样尴尬的东西。有没有更好的方法在参数中使用全局别名?
也许我使用全局别名是为了错误的目的?我想我实际上可以使用像scp file $MY_HOST:~/dir
这样的导出变量。无论如何,全局别名对变量的好处是什么(除了不必键入$)。
答案 0 :(得分:6)
您可以直接在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
答案 1 :(得分:1)
在您的情况下,没有好的方法来使用别名,因为它必须是命令行上的独立(空格分隔)标记。由于这个原因,别名实际上可能不如变量灵活。别名的目的是为您节省打字。全局别名适用于您经常使用的文件或其他独立表达式。主机名通常不是独立的。