我想在复制文件时每次使用时缩写或设置别名到目标地址。例如,
scp <myfile> my_destination
其中my_destination
可以是hbaromega@192.168.1.100:Documents
。所以我想通过插入类似
alias my_destination = 'hbaromega@192.168.1.100:Documents' .
但是这不起作用,因为my_destination
不是命令。
有出路吗?
注意:我不想缩写整个命令,只想缩写地址,以便我可以将它与其他可能的命令一起使用。
答案 0 :(得分:2)
由于您声明的原因(别名定义整个命令),您无法执行所需操作。但你可以使用shell函数来结束:
my_scp() {
scp "$@" hbaromega@192.168.1.100:Documents/.
}
然后您可以将其称为
my_scp *.c
(在doublequotes中使用$ @是shell黑魔法,如果* .c glob匹配的任何文件名包含空格,则可以避免麻烦)
当然,如果你不想定义一个函数,你总是可以使用shell变量来至少保存重新输入:
dest='hbaromega@192.168.1.100:Documents/.'
scp *.c $dest
答案 1 :(得分:0)
你有几个选择。您可以在~/.ssh/config
中设置主机名别名,如下所示:
Host my_destination
Hostname 192.168.1.100
User hbaromega
您可以像这样使用它:
$ scp myfile my_destination:Documents/
请注意,您仍然需要指定默认目录。
另一种选择是在~/.bashrc
中添加一个环境变量:
export my_destination='hbaromega@192.168.1.100:Documents/'
然后你可以像这样使用它:
$ scp myfile $my_destination
BertD定义函数的方法也可行。
答案 2 :(得分:0)
我认为这也可以在不使用export
的情况下工作,因为无论如何我都在为路径或目的地分配变量。所以我可以将以下内容放在我的.basrc或.bash_profile中:
my_destination='hbaromega@192.168.1.100:Documents/'
然后
scp <myfile> $my_destination
同样,我可以为任何本地目的地或目录执行任何操作(例如移动文件):
local_dest='/Users/hbaromega/Documents/'
然后
mv <myfile> $local_dest
总之,目标地址可以作为变量放置,但不能作为shell命令或函数放置。
答案 3 :(得分:-1)
不起作用的原因是=
符号周围有空格。正如所指出的,必须将别名称为命令字符串的第一部分。您更有可能通过导出my_destination
然后使用$
来调用所需的结果。在~/.bashrc
:
export my_destination='hbaromega@192.168.1.100:Documents'
然后:
scp <myfile> $my_destination
注意:您可能需要在导出中提供Documents
的完整路径。