Shell脚本:在命令后缩短或别名地址
我想在每次复制文件时使用缩写或将别名设置为目标地址。例如,Shell脚本:在命令后缩短或别名地址
scp <myfile> my_destination
其中my_destination
可能是[email protected]:Documents
。所以,我想通过插入类似
alias my_destination = '[email protected]:Documents' .
修改我的.bash_profile但是,这并不工作,因为my_destination
不是命令。
有没有出路?
注:我不想缩写整个命令,而只是缩写地址,以便我可以将其与其他可能的命令一起使用。
由于你陈述的原因(别名定义了整个命令),你不能做你想做的事。但是你可以使用shell功能来关闭:
my_scp() {
scp "[email protected]" [email protected]:Documents/.
}
然后你可以调用作为
my_scp *.c
(在双引号使用$ @ shell是黑魔法避免麻烦,如果任意一个文件名由* .c的水珠匹配包含空格)
当然,如果你不希望定义一个函数,你总是可以使用一个shell变量至少节省重复输入:
dest='[email protected]:Documents/.'
scp *.c $dest
其原因不起作用是否有围绕=
标志的空格。正如所指出的,一个别名必须被称为命令字符串的第一部分。通过导出my_destination
然后用$
调用它,您更可能得到所需的结果。在~/.bashrc
:
export my_destination='[email protected]:Documents'
然后:
scp <myfile> $my_destination
注:您可能需要在出口提供了一个Documents
完整路径。
你有几个选项。您可以在~/.ssh/config
这样设置主机别名:
Host my_destination
Hostname 192.168.1.100
User hbaromega
你可以使用这样的:
$ scp myfile my_destination:Documents/
注意,你仍然必须指定默认目录。
另一种选择是只把一个环境变量在您的~/.bashrc
:
export my_destination='[email protected]:Documents/'
然后,你可以使用这样的:定义一个函数也将工作的
$ scp myfile $my_destination
BertD的做法。
我想这样的作品,而无需使用export
,以及因为反正我指定的路径或目标的变量。这样我就可以把我的.basrc或的.bash_profile:
my_destination='[email protected]:Documents/'
然后
scp <myfile> $my_destination
同样地,我可以执行任何操作(例如移动文件)对任何地方的目标或目录:
local_dest='/Users/hbaromega/Documents/'
然后
mv <myfile> $local_dest
总之,目标地址可以作为变量放置,但不能作为shell命令或函数。
反正它不起作用,因为别名只能在命令中首先被替换。 – whereswalden 2014-10-19 21:55:34
正确的你,可能是一个出口---修正:) – 2014-10-19 22:01:41