Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用别名更改scp命令_Bash_Shell_Alias_Scp - Fatal编程技术网

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:)