Bash 使用别名更改scp命令
我经常使用Bash 使用别名更改scp命令,bash,shell,alias,scp,Bash,Shell,Alias,Scp,我经常使用 scp -r id@remoteserver_ip:/Data_folder/ 从远程超级计算机服务器下载文件夹中的数据 每次都要写同样的东西是相当令人厌烦的 有人知道使用alias可以轻松使用此命令吗?考虑到代码> DATAX文件夹每次都会改变。 < P>别名不能替换单词的一部分。但是,您可以创建一个函数: myscp () { scp -r id@remoteserver_ip:/"$1"/ } 然后,只需调用myscp Data\u文件夹 另外,scp(至少在我的系
scp -r id@remoteserver_ip:/Data_folder/
从远程超级计算机服务器下载文件夹中的数据
每次都要写同样的东西是相当令人厌烦的
有人知道使用alias可以轻松使用此命令吗?考虑到<>代码> DATAX文件夹每次都会改变。 < P>别名不能替换单词的一部分。但是,您可以创建一个函数:
myscp () {
scp -r id@remoteserver_ip:/"$1"/
}
然后,只需调用myscp Data\u文件夹
另外,
scp
(至少在我的系统上)也需要目标文件夹。您可以将
作为下一个参数添加到函数中的命令中,或者在运行函数时使用“$2”
并在命令行上指定它。您可以在$PATH文件夹中创建一个bash文件
#! /bin/bash
scp -r id@remoteserver_ip:"$1" "$2"
让我们将脚本称为myscp
你可以写,而不是写你写的整行
myscp /home/file.txt /home/file2.txt
无法设置别名以获取参数。因此,您必须创建一个函数,然后才能将其别名为
scp
function super_scp() {
scp -r id@remoteserver_ip:${1} ${2}
}
alias scp=super_scp
然后您就可以像这样使用它:
scp /path/to/folder /destination
您应该考虑设置SSH配置文件:
Host myServer
HostName remoteserver_ip
User id
还可以添加一个密码,以避免键入密码:
Host myServer
...
IdentityFile ~/.ssh/my_id
现在你可以写:
scp -r myServer:/something
当然,正如其他答案所建议的那样,您可以在~/.bashrc
中添加一个函数:
my_scp() {
scp -r myServer:"$1"
}
然后打电话:
my_scp /something
你在哪里定义这个函数?它可以放在
.bashrc
文件中,这样在登录时就可以自动获取它。不建议在bashrc中使用别名,伙计:P最好在bash_配置文件中使用别名,而不是创建bash_别名。这其实并不重要,只要你从中获取它非交互模式。你完全正确!但是我真的不喜欢在bashrc中添加别名,因为它会让文件变得如此大而毫无意义!在这里,他们建议将bash_别名外包给bashrc:)