假设我已经定义
alias scpatoz='scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com'
在我的~/.bash_profile
中。但是有时我想将abc@helloworld.com中的a
目录复制到我的计算机上。通常我会这样做:
scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com:/home/a .
这需要很长时间才能输入。
如何定义别名(上面的定义不起作用),以便我可以做类似的事情
scpatoz:/home/a .
?然后当想要复制其他目录时,我也可以这样做:
scpatoz:/home2/b .
答案 0 :(得分:0)
输入别名scpatoz
或scpatoz:/home/a .
,然后按 Ctrl + Alt + E 将其展开,在运行命令之前。
答案 1 :(得分:0)
您可以将命令转换为脚本:
脚本名称(al.sh
):
#!/bin/bash
scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com:$1 .
然后创建一个别名,如:
alias scp="sh al.sh"
chmod +x al.sh # Give execute permission
您可以像这样运行该别名:
scp /home/a
这将创建如下所示的命令并运行:
scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com:/home/a .
通过这种方式,您给scp命令提供的任何值(如上述案例/home/a
一样,都将替换$1
的值并运行scp命令。
答案 2 :(得分:0)
您可以使用一个小的函数,例如:
scpatoz()
{
if [ $# -eq 1 ]; then
scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com:$1 .
elif [ $# -gt 1 ]; then
scp -r abcdefghijklmnopqrstuvwxyz@helloworld.com:$@
else
echo "Needs argument"
fi
}
然后您可以运行scpatoz /home/a
或添加另一个参数来指定目标位置
答案 3 :(得分:0)
以变量名开头,例如 atozhost='abcdefghijklmnopqrstuvwxyz@helloworld.com'
现在您可能会喜欢打字 scp -r $ {atozhost}:/ home / a。
当您希望它更短时,使类似@Lepr的功能得到回答。在函数中使用变量atozhost
。我不会使用函数,而是查看命令历史记录并编辑命令(使用箭头键或CONTROL-R
并开始键入rcp
)。