为什么在使用“ cp”或“ mv”时最终得到一个空文件?

时间:2018-10-19 18:48:18

标签: sh cp mv

我正在尝试用另一个覆盖现有文件。 我通过执行以下操作来替换存在的文件:

cp -f /tmp/workspace.xml > /system/TEST/workspace.xml 

不幸的是,创建的新文件为空,并且不包含原始文件中的任何内容。

我也尝试了以下方法,但得到的结果相同。

mv -f /tmp/workspace.xml > /system/TEST/workspace.xml

那是为什么?

2 个答案:

答案 0 :(得分:2)

不要对>mv使用重定向运算符(cp,也不需要在要覆盖的位置寻址文件名< / p>

  mv -f folder_with_file_to_move/workspace.xml destination_folder_with_file_to_overwrite

答案 1 :(得分:2)

>重定向命令的输出。它不会告诉命令将文件放置在何处。复制参数参数不足的输出什么也不是,因此您得到一个空文件。

请记住,>仅重定向“ STDOUT”,并且还有一个名为STDERR的输出通道,必须分别重定向。

复制文件的正确方法:

cp -f /tmp/workspace.xml /system/TEST/workspace.xml

您也可以移动它:

mv -f /tmp/workspace.xml /system/TEST/workspace.xml

只有在关心捕获输出时才使用>,例如在这种情况下:

cat /tmp/workspace.xml > /system/TEST/workspace.xml

在这种情况下,这会将cat的输出引导到目标文件,之所以起作用,是因为cat应该这样做。