在参数内使用zsh的全局别名

Chr*_*ian 3 zsh

我为一些远程主机使用全局别名, 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.这样的导出变量.无论如何,全局别名对变量的好处是什么(除了不必键入$).

che*_*ner 6

您可以直接在ssh不使用shell的情况下定义主机别名.将以下内容添加到您的.ssh/config文件中:

host MY_HOST
    HostName server.waytolongfoobar.com
Run Code Online (Sandbox Code Playgroud)

现在,任何地方sshscp将采用主机名,它将被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
Run Code Online (Sandbox Code Playgroud)