在* nix中,我可以使用cp创建一个空文件:
cp /dev/null ~/emptyfile
我想知道是否可以使用scp(而不是ssh + touch)来做类似的事情。如果我尝试运行:
scp /dev/null remoteserver:~/emptyfile
它返回错误/dev/null: not a regular file
编辑:
为了澄清起见,我不想在远程服务器上运行任何命令(即,不应调用ssh
命令)。
因此可以在本地主机上运行某些命令(echo,cat,dd或任何其他简单命令),然后将生成的文件复制到remoteserver。
最好不要将生成的文件留在本地主机。如果生成的命令是单行解决方案,那也很好。
EDIT2:
不可能像在cp
命令中那样使用/ dev / null方法,因为scp
仅适用于常规文件和目录:
https://github.com/openssh/openssh-portable/blob/8a85f5458d1c802471ca899c97f89946f6666e61/scp.c#L838-L850
因此必须使用另一个命令(touch,cat,dd等)来创建常规的空文件(在上一个命令,管道或子Shell中)。
答案 0 :(得分:0)
如果您只是想创建一个空文件,则可以使用ssh并运行touch
命令,如下所示:
ssh username@remoteserver touch anemptyfile
答案 1 :(得分:0)
与@ willh99 commented一样,在本地创建一个空文件,然后执行scp是最可行的解决方案。
到目前为止,我想到了这个:
filename=$(mktemp) && scp $filename remoteserver:~/emptyfile; rm $filename
它将在子shell中创建一个空文件,并将其复制为emptyfile
到remoteserver。
欢迎任何重构/改进。
编辑:按照@Friek的说明,删除$ filename,无论scp是否成功。