![无法使用带有 bash 别名的 scp](https://linux22.com/image/1208878/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%20bash%20%E5%88%AB%E5%90%8D%E7%9A%84%20scp.png)
此代码不起作用:
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 按以下顺序从以下来源获取配置数据:
- 命令行选项
- 用户的配置文件
~/.ssh/config
- 系统范围的配置文件
/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