Limpe uma unidade flash USB e recrie um sistema de arquivos

0

Estou usando isso para limpar uma unidade flash USB e recriar um sistema de arquivos 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

O fato de eu ter que fazer algumas teclas manualmente é irritante. Como eu poderia fazer tudo isso em uma etapa, sem qualquer intervenção? Algo como:

dd if=/dev/zero of=/dev/sdb bs=1M && ??? &&& mkfs.fat /dev/sdb1
    
por Basj 16.10.2017 / 10:27

2 respostas

2

A sintaxe do documento aqui permite que você use fdisk de forma não interativa:

fdisk /dev/sdb <<EOF
n
p



t
b
p
q
EOF

Como este é apenas um exemplo, usei p e q para que nenhuma alteração seja gravada. Use w após sua sequência verificada.

Note que uma linha em branco corresponde à sola Enter . O ponto é que você pode passar suas teclas assim.

Como alternativa, você pode escrever essas linhas (entre dois EOF -s) em um arquivo, digamos fdisk.commands e, em seguida:

fdisk /dev/sdb < fdisk.commands

Ou sem um arquivo (de um comentário, obrigado Rastapopoulos):

fdisk /dev/sdb <<< $'n\np\n\n\n\nt\nb\np\nq'

Outra maneira:

printf '%s\n' "n" "p" "" "" "" "t" "b" "p" "q" | fdisk /dev/sdb

Há também sfdisk . Você pode achar sua sintaxe mais adequada para você.

    
por 16.10.2017 / 10:59
0

Baseado na resposta de @ KamilMaciorowski (crédito total para ele), aqui está o que eu finalmente uso:

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
    
por 17.10.2017 / 01:19