【发布时间】:2021-04-09 14:08:48
【问题描述】:
我想知道这两个命令 (1) rm -rf *o 和 (2) rm -rf *.o 是否给出相同的结果:都删除目标文件。
另外为什么上面的命令也会删除可执行文件?
【问题讨论】:
-
第一个命令将删除所有以 o 结尾的文件,第二个命令将删除所有以点结尾的文件,然后是 o。
我想知道这两个命令 (1) rm -rf *o 和 (2) rm -rf *.o 是否给出相同的结果:都删除目标文件。
另外为什么上面的命令也会删除可执行文件?
【问题讨论】:
* 是一个 shell 模式,匹配除隐藏文件之外的任何内容。
rm -rf *o 也会因此删除名为hello 或test.iso 的文件,而rm -rf *.o 只会删除以.o 结尾的文件。
顺便说一下,-r 表示递归,即也会删除目录。它不应该出现在这里。你想要rm -f *.o。
【讨论】:
-f。
* is a shell pattern matching anything. - 除隐藏文件外的任何内容
-f 在干净的脚本中很典型,因为它使它具有幂等性。 rm *.o 如果什么都没有编译或者 clean 刚刚被执行,那么会大声失败。
我想知道这两个命令 (1) rm -rf *o 和 (2) rm -rf *.o 是否给出相同的结果:都删除目标文件。
不,它们给出的结果不同:
o 结尾的文件以及所有以o 结尾的目录。.o 结尾的文件以及所有以.o 结尾的目录。另外为什么上面的命令也会删除可执行文件?
可能是因为它们以 o (1) 或 .o (2) 结尾。
【讨论】: