我经常这样做:
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 加载,并且如果您使用exit
shell 将终止。
答案4
不,如果不将参数包装在 shell 脚本中,您就无法更改参数的顺序,但您可以...
R='[email protected]'
scp some_file $R
scp other_file $R
...