Linux cli 简介;输出重定向

Intro to Linux cli; output redirection

为什么在a和b文件都不存在的情况下cp a b > a不报错,cp a b报错。

根据我的理解,cp a b 给出错误,因为两个文件都不存在,这是有道理的,而且 cp a b >a 似乎创建了两个文件并将空白从 b 复制到 a 但 a 为空的原因是因为操作的输出不实际上产生任何消息。

请告诉我正确的解释是什么。谢谢

当您调用 cp a b > a 时,shell 做的第一件事就是创建文件 a。然后它创建一个子进程并将其输出重定向到子进程 cp 之前的那个文件。所以 a 存在于 cp 开始之前,它很高兴地复制了文件。