是否可以使用 scp 创建一个空文件?
Is it possible to create an empty file using scp?
在 *nix 中,我可以使用 cp 创建一个空文件:
cp /dev/null ~/emptyfile
我想知道是否可以使用 scp(而不是 ssh + touch)来做类似的事情。如果我尝试 运行:
scp /dev/null remoteserver:~/emptyfile
它returns一个错误/dev/null: not a regular file
编辑:
澄清一下,我不想 运行 远程服务器上的任何命令(即不应该调用 ssh
命令)。
所以可以 运行 在本地主机上执行一些命令(echo、cat、dd 或任何其他普通命令)并将生成的文件复制到远程服务器。
最好不要将生成的文件留在本地主机上。如果生成的命令是单行解决方案也很好。
编辑2:
无法使用 cp
命令中的 /dev/null 方法,因为 scp
仅适用于常规文件和目录:
https://github.com/openssh/openssh-portable/blob/8a85f5458d1c802471ca899c97f89946f6666e61/scp.c#L838-L850
因此必须使用另一个命令(touch、cat、dd 等)来创建一个常规的空文件(在先前的命令、管道或子 shell 中)。
如果您只是想创建一个空文件,您可以使用 ssh 和 运行 touch
命令,如下所示:
ssh username@remoteserver touch anemptyfile
作为@willh99 ,在本地创建一个空文件,然后执行scp是最可行的解决方案。
到目前为止我想到了这个:
filename=$(mktemp) && scp $filename remoteserver:~/emptyfile; rm $filename
它在子 shell 中创建一个空文件,并将其作为 emptyfile
.
复制到远程服务器
欢迎任何refactor/improvements。
编辑: 删除 $filename 无论 scp 是否成功,如@Friek 所述。
在 *nix 中,我可以使用 cp 创建一个空文件:
cp /dev/null ~/emptyfile
我想知道是否可以使用 scp(而不是 ssh + touch)来做类似的事情。如果我尝试 运行:
scp /dev/null remoteserver:~/emptyfile
它returns一个错误/dev/null: not a regular file
编辑:
澄清一下,我不想 运行 远程服务器上的任何命令(即不应该调用 ssh
命令)。
所以可以 运行 在本地主机上执行一些命令(echo、cat、dd 或任何其他普通命令)并将生成的文件复制到远程服务器。
最好不要将生成的文件留在本地主机上。如果生成的命令是单行解决方案也很好。
编辑2:
无法使用 cp
命令中的 /dev/null 方法,因为 scp
仅适用于常规文件和目录:
https://github.com/openssh/openssh-portable/blob/8a85f5458d1c802471ca899c97f89946f6666e61/scp.c#L838-L850
因此必须使用另一个命令(touch、cat、dd 等)来创建一个常规的空文件(在先前的命令、管道或子 shell 中)。
如果您只是想创建一个空文件,您可以使用 ssh 和 运行 touch
命令,如下所示:
ssh username@remoteserver touch anemptyfile
作为@willh99
到目前为止我想到了这个:
filename=$(mktemp) && scp $filename remoteserver:~/emptyfile; rm $filename
它在子 shell 中创建一个空文件,并将其作为 emptyfile
.
欢迎任何refactor/improvements。
编辑: 删除 $filename 无论 scp 是否成功,如@Friek 所述。