如果 shell 被要求执行一个已知会终止的可能无用(或部分无用)的命令,例如cat hugeregularfile.txt > /dev/null,它是否可以跳过该命令的执行(或执行更便宜的等价物,例如, touch -a hugeregularfile.txt)?
更一般地说,shell 是否类似于 C 编译器,因为它可以对源代码执行任何转换,只要外部可观察的行为就像抽象机器评估它一样?
编辑
Nota Bene:我最初提出的问题有一个标题,询问是否允许shell进行这些优化,而不是是否应该甚至是否存在可以执行这些优化的实现。我对理论比实践更感兴趣,尽管两者都是受欢迎的。
我刚刚在我的笔记本电脑中安装了一个 microSD 卡,它有 17 个分区,我在 YaST 分区程序中收到以下错误:
Your disk /dev/mmcblk0 contains 17 partitions. The maximum number of partitions that the
kernel driver of the disk can handle is 7. Partitions above 7 cannot be accessed
Run Code Online (Sandbox Code Playgroud)
事实上 - 我只有/dev/mmcblkp0...7. 嗯,实际上我只有 3 个分区,因为扩展分区从分区号 5 开始,所以它是 p0、p5、p6、p7。
我已经使用另一台 PC 上的打印机中的读卡器格式化了这张卡,该 PC 将 microSD 卡暴露为/dev/sdxY并允许我创建 17 个分区。现在我将它放入带有内置读卡器的笔记本电脑中,它给出了上述错误。这是为什么?
建议使用 LVM 但拜托,microSD 上的 LVM 对可移动存储来说太过分了,而且不方便。