我正在尝试通过自己制作一个操作系统并在虚拟机中测试它来了解操作系统,但VBoxManage convertfromraw
不允许我的源文件非常小(512B)。
是否有任何 bash 命令可以执行以下操作(伪代码),同时仍保留文件的内容?
if (FILE.size < 1MB) {
FILE.resize(1MB);
}
答案1
假设 Linux 和现代文件系统(安全 - 仅增加文件):
fallocate --length=1M yourfile
没有 fallocate(创建一个疏文件在增长时;请小心大小):
truncate --size=1M yourfile
不使用 fallocate(超过 2 GB 的文件需要 64 位系统):
file="yourfile"
want=$(( 1 * 1024 * 1024 ))
size=$(stat -c %s "$file")
if (( want > size )); then
head -c $(( want - size )) /dev/zero >> "$file"
fi
答案2
从另一个线程:
dd if=/dev/zero bs=1 count=NUMBER >> yourfile
这将读取
/dev/zero
并附加到yourfile
NUMBER
字节。