每天我必须通过 SCP ,从我的bash终端,在Linux Debian 8上将文件传输到许多(6)AWS EC2实例。我必须手写:
i) files to transfer;
ii) destination folder;
iii) url to my .pem certificate;
iv) openning urls on the servers: ec2-user@XX.XX.XXX....
作为一个懒惰的程序员,我想使用某种缩写来减少输入,记住iii)和iv)一般都是相同的。
首先我写了一个bash脚本,它要求我传输文件和服务器上的文件夹,但是由于每次传输时都会提示输入,所以需要更多时间。相反,我可以使用箭头重复之前介绍的bash命令。
以下是我用来运行的当前命令的示例:
scp -i /pem/aws.pem file_to_upload.txt ec2-user@XX-XX-XX-XX.amazonwas.com:/var/www/html/folder/
以下字符串需要重复输入:
scp -i /pem/aws.pem
ec2-user@..... // this is a large string of 64 characters.
我喜欢某种占位符,我只需输入要上传的文件的路径和远程文件夹。
如何自动填写或使用缩写,例如 VIM 在bash命令中插入相同的循环文本?
答案 0 :(得分:1)
所有已发布的解决方案都有效,但它们真的很难看,而不是应该如何。请记住,我们仍然有~/.ssh/config
?
scp -i /pem/aws.pem file_to_upload.txt ec2-user@XX-XX-XX-XX.amazonwas.com:/var/www/html/folder/
将归结为
scp file_to_upload.txt am:/var/www/html/folder/
如果您设置了~/.ssh/config
:
Host am:
Hostname XX-XX-XX-XX.amazonwas.com
User ec2-user
IdentityFile /pem/aws.pem
如果您不使用密码(或设置ControlMaster
和ControlPersist
选项 - 您的本地文件也会自动完成和远程目录 - 这甚至会很快!)。< / p>
答案 1 :(得分:0)
听起来你可以利用你的bashrc或bash_profile中的一些bash别名。
Take a look at my .bashrc file on githut
我经常需要知道我的IP地址是什么。 bash别名的一个例子是我的showip别名。
alias showip='ifconfig | grep "inet" | grep -v 127.0.0.1'
我还在ssh中为Linux创建了别名。您可以创建一个可以解决问题的bash别名。
从主机递归复制目录:
scp -r user@host:/directory/SourceFolder TargetFolder
注意:如果主机使用端口22以外的端口,您可以使用-P选项指定它:
scp -P 2222 user@host:/directory/SourceFile TargetFile
答案 2 :(得分:0)
当您使用ssh程序连接到bash终端时,请查看ssh支持的键盘映射。
其他选项,基于
redesign
了解如何使用bash历史记录
echo "This is a line I do not want to type twice"
您可以将缩写放在shell变量中
!!
^twice^two times^
您可以使用别名
no2="This is a line I do not want to type twice"
echo "${no2}"
shell变量和别名可以放在my2='echo "This is a line I do not want to type twice"'
my2
。