我用它来擦除 USB 闪存驱动器并重新创建 FAT 文件系统:
dd if=/dev/zero of=/dev/sdb bs=1M #I don't need more advanced wiping
fdisk /dev/sdb
(a few keystrokes to select partition type, etc.)
mkfs.fat /dev/sdb1
事实上,我必须手动敲击几次按键,这很烦人。我怎样才能在没有任何干预的情况下一步完成所有这一切?就像是:
dd if=/dev/zero of=/dev/sdb bs=1M && ??? &&& mkfs.fat /dev/sdb1
答案1
fdisk
Here-document 语法允许您以非交互方式使用:
fdisk /dev/sdb <<EOF
n
p
t
b
p
q
EOF
因为这只是一个例子,我用过p
所以q
没有写任何修改。w
在验证序列后使用。
注意空行对应于sole Enter。重点是你可以通过这种方式传递你的击键。
或者,您可以将这些行(在两个EOF
-s 之间)写入文件,例如fdisk.commands
,然后:
fdisk /dev/sdb < fdisk.commands
或者没有文件(来自评论,谢谢 Rastapopoulos):
fdisk /dev/sdb <<< $'n\np\n\n\n\nt\nb\np\nq'
其他方式:
printf '%s\n' "n" "p" "" "" "" "t" "b" "p" "q" | fdisk /dev/sdb
还有sfdisk
。您可能会发现它的语法更适合您。
答案2
根据@KamilMaciorowski的回答(完全归功于他),这是我最终使用的:
sudo dd if=/dev/zero of=/dev/sdb bs=1M && sudo fdisk /dev/sdb <<< $'n\np\n\n\n\nt\nb\np\nw\n' && sudo mkfs.fat /dev/sdb1