我正在编写一个脚本,在磁盘上创建一个 ext3 文件系统,问题是该脚本要求用户说是或否:
root@ubuntu:/home/school# mkfs.ext3 /dev/sdc
mke2fs 1.42 (29-Nov-2011)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n)
我尝试在 mkfs 之前和 sdc 之后放置 -y,但没有成功。有没有人有无需用户交互即可实现此目的的解决方案?
答案1
您可能不应该在整个磁盘上创建文件系统。相反,你应该分割在磁盘上(这将是/dev/sdc1
类似于/dev/sdc
)。如果您还没有分区,可以先进行分区。如果您愿意,分区可以(基本上)是整个磁盘的大小。即使您只想要一在磁盘上分区后,您仍然需要实际进行分区。如果您的文件系统未启用,许多实用程序和应用程序(以及人员!)将无法运行,或行为异常分区。
如果你真正了解自己在做什么并且你确定要创建一个不属于任何分区的文件系统,你可以mkfs.ext3
在不提示用户的情况下执行此操作,方法是使用-F
。这几乎总是比使用管道模拟交互式输入(它更简单,更具有自我文档性,如果发生意外情况并且问题是其他问题,例如设备已经安装,该怎么办?)。另一方面,在某些情况下(使用某些实用程序),您可能会发现必须通过管道y
或yes
实用程序,因此这是一种值得注意的好技术。
根据-F
man mkfs.ext3
:
力量制作文件系统创建文件系统,即使指定的设备不是块特殊设备上的分区,或者其他参数没有意义。为了强制 制作文件系统即使文件系统似乎正在使用或已被挂载(这确实是一件危险的事情),也要创建文件系统,必须指定两次此选项。
因此,您可以使用mkfs.ext3 -F /dev/sdc
。
但重申一下,你可能根本不应该这样做,因为文件系统几乎总是应该在分割。
答案2
没有-y
选项mkfs.ext3
,您可以阅读其手册页 ( man mkfs.ext3
) 进行检查。但是,有一个名为 的程序yes
专门用于执行您想要的操作:
NAME
yes - output a string repeatedly until killed
因此,你可以运行:
yes | mkfs.ext3 /dev/sdc
然而请记住,您正在尝试在整个设备上创建文件系统,而不是在单个分区上创建文件系统,这可能是不是你想做什么。你应该首先在磁盘上创建一个分区,然后然后在该分区上创建一个文件系统。