无法使用带有 bash 别名的 scp

无法使用带有 bash 别名的 scp

此代码不起作用:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

别名是:

alias nameOfBashAlias='ssh [email protected]'

我该如何解决这个问题?

编辑

是否有可能执行类似于以下代码的操作,例如运行许多实例bash

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

我没有让上面的代码发挥作用。

答案1

我不建议使用 Bash 别名来完成你想要完成的任务。你可以将所有信息输入到 SSH 的配置文件中,然后就可以了。ssh_config如果你好奇这些信息从何而来,请阅读手册页。你可以用ssh_config

该文件位于此处~/.ssh/config

使用您最喜欢的编辑器创建文件,然后根据您的情况进行调整。

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

您现在可以发出以下命令:

$ ssh nameOfBashAlias 

我敢打赌你不知道这一切是多么的集成。现在你有了这个设置,以下命令也可以工作

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

无需再记住 scp 使用“-P”作为端口,ssh 使用“-p”。此外,此“别名”也适用于 OS X 图形用户界面应用程序(如 Transmit)。

OpenSSH 按以下顺序从以下来源获取配置数据:

  1. 命令行选项
  2. 用户的配置文件~/.ssh/config
  3. 系统范围的配置文件/etc/ssh_config

答案2

scp不运行 bash。您需要运行以下命令:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

如果您只有别名,并且上述代码对您来说不可行,请考虑像这样运行它:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

这样,您实际上是在调用ssh文件内容并将其定向到磁盘上的文件。对于上传,可以用另一种方式编写。

答案3

别名被替换时,它们是第一的bash 命令的单词。您的别名出现在第三个单词的开头。

我将为此使用一个 shell 变量。

blah='[email protected]'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

顺便说一句,我认为你原来的别名中不应该有 ssh。而且最后一个代码示例中有一个 >,看起来也是错误的。

答案4

不,您的示例不起作用,因为BASH别名不是这样工作的。我建议您使用变量。将其放入您的~/.profile~/.bashrc[无论您使用哪个]: 然后在您的终端中,这将起作用:
site="[email protected]"

scp favicon.ico $site:/dir/


或者你可以像我为我的 iPod 编写脚本一样。在我的 bashrc 中我有ipod=192.168.2.60,然后在我的脚本中我source ~/.bashrc有,这样它就会在脚本中获取我的变量,然后在脚本中:缺点是我必须编辑脚本才能进行递归。我只能做 1 个文件。但当我需要其中任何一个时,我通常会直接从终端 scp $1 $ipod
使用! 〜马特scp

相关内容