SCP 单行命令在行末上传文件

SCP 单行命令在行末上传文件

我经常这样做:

scp some_file [email protected]

我对此很恼火,因为我总是复制粘贴这一行,然后我需要编辑中间部分来更改我要上传的文件。

是否可以修改这一行,使文件名位于末尾并且仍然有效?

基本上我想要可以粘贴到 shell 中的任何字符串,然后输入文件名并将文件上传scp到服务器。

答案1

为什么不制作一个超级简单的脚本呢?只需编辑一个名为 say 的文件,其中myscp包含

#!/bin/bash
scp $1 [email protected]

然后chmod +x myscp,以便稍后您可以简单地

./myscp some_file

这一切都假设您的myscp脚本位于当前目录,否则添加路径

/path/to/myscp some_file

或者更好的是,将位置的路径以及此脚本和希望将来的脚本添加到您的$path.

答案2

可能的解决方案之一:

(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file

答案3

添加到您的 shell 或等效项的末尾.bashrc

my_function_name() {
    if [ -r "$1" ]; then
        scp "$1" [email protected]
    else
        echo "File does not exists or can not be read, $1" >&2
        return 1
    fi
}

my_function_name根据您的需要进行更改。

现在,您只需按名称调用该函数并传递一个文件作为参数,它将测试读取访问权限并scp使用它运行,或者如果无法读取它则退出。

请注意,我使用了return而不是exit因为它将由您的交互式 shell 加载,并且如果您使用exitshell 将终止。

答案4

不,如果不将参数包装在 shell 脚本中,您就无法更改参数的顺序,但您可以...

R='[email protected]'
scp some_file $R
scp other_file $R
...

相关内容