我有这两个命令一个接一个地执行。
cat a.log >> b.log
rm -r a.log
这里到底发生了什么?为什么是猫在这里被使用?关于>> 标志?什么是 -r(递归)标志正在使用?
答案1
考虑到您更正后的代码,
cat a.log >> b.log rm -r a.log
复制
cat
其文件列表,或标准输入-
如果未提供任何内容或列表中包含破折号 ( )标准输出。看man cat
这
>>
是一个标准的 shell 重定向运算符,它将命令的输出附加到指定的文件中。在示例中,此命名文件是b.log
.如果没有,请参阅man bash
或查看您首选 shell 的文档bash
,并且shell 的控制和重定向运算符是什么?该
rm
命令(几乎)无条件地删除该文件a.log
。因为它试图删除文件,所以该-r
标志不相关并且被忽略。如果在交互式会话中运行,该命令将要求用户确认该文件是否没有写入权限。看man rm
如果我编写这段代码,我可能会这样构造它
cat a.log >> b.log && rm -f a.log
a.log
在这里,仅当cat
成功将其内容附加到目标文件时才会删除文件b.log
。