自动说是使用 mkfs.ext3 在磁盘上创建 ext3 文件系统

use*_*936 8 bash ext3

我正在编写一个在磁盘上创建 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)
Run Code Online (Sandbox Code Playgroud)

我试图在 mkfs 之前和 sdc 之后放置 -y 但这没有用。有没有人有任何解决方案可以在没有用户交互的情况下做到这一点?

Eli*_*gan 20

您可能不应该在整个磁盘上创建文件系统。相反,您应该将它放在磁盘上的一个分区上(类似于/dev/sdc1而不是/dev/sdc)。如果您还没有分区,则可以先进行分区。如果您愿意,分区可以(基本上)是整个磁盘的大小。即使您只想要磁盘上的一个分区,您仍然需要实际制作该分区。如果您的文件系统不在分区上,许多实用程序和应用程序(和人!)将无法工作,或者行为异常。

如果你真的知道你在做什么并且你确定你想要创建一个不属于任何分区的文件系统,你可以mkfs.ext3通过使用-F标志在不提示用户的情况下做到这一点。这几乎总是比用管道模拟交互式输入更可取(它更简单,更自我记录,如果发生意外情况并且问题是其他问题怎么办,例如设备已经安装?)。另一方面,在某些情况下(使用某些实用程序),您可能会发现必须使用管道yyes实用程序,因此这是一个需要注意的好技术。

-F标志的描述中man mkfs.ext3

强制mke2fs创建文件系统,即使指定的设备不​​是块特殊设备上的分区,或者其他参数没有意义。为了强制 mke2fs创建文件系统,即使文件系统似乎正在使用或已挂载(这是真正危险的事情),必须指定此选项两次。

因此,您可以使用mkfs.ext3 -F /dev/sdc.

但是,重申一下您可能根本不应该这样做,因为文件系统应该几乎总是在分区上创建。


ter*_*don 5

没有-y选项mkfs.ext3,您可以通过阅读其手册页 ( man mkfs.ext3) 进行检查。但是,有一个名为的程序yes专门用于执行您想要的操作:

NAME
   yes - output a string repeatedly until killed
Run Code Online (Sandbox Code Playgroud)

所以,你可以运行:

 yes | mkfs.ext3  /dev/sdc
Run Code Online (Sandbox Code Playgroud)

但是,请记住,您正在尝试在整个设备上而不是在单个分区上创建文件系统,这可能不是您想要做的。您应该首先在磁盘上创建一个分区,然后在该分区上创建一个文件系统。