Esses comandos sobrescreverão o seu dispositivo sda com zeros - o primeiro fará os primeiros 16MB (tamanho do bloco de 4096 e contagem de 4096 blocos) e o segundo substituirá os últimos 2MB (tamanho do bloco 512 com 4096 blocos) de zeros. (não está apagando tecnicamente, e isso está relacionado ao meu primeiro ponto abaixo.)
(essa foi a parte já mencionada em outras respostas, incluindo aqui por questões de integridade)
Outra coisa que vale a pena mencionar é que o tamanho do bloco tem efeitos, mas esses geralmente são vistos apenas em operações de alto volume. A maneira mais eficiente (mais rápida) de executar o comando é se o tamanho do bloco corresponder ao tamanho de acesso do dispositivo, caso contrário, será desperdiçado tempo.
Se você estiver interessado, tente criar um arquivo com um milhão de blocos de 1 bloco e um arquivo com 1 milhão de blocos de bloco e veja a diferença:
[user@host tmp]$ time dd if=/dev/zero of=/tmp/test1 bs=1 count=1000000
1000000+0 records in
1000000+0 records out
1000000 bytes (1.0 MB) copied, 2.44439 s, 409 kB/s
real 0m2.447s
user 0m0.177s
sys 0m2.269s
[user@host tmp]$ time dd if=/dev/zero of=/tmp/test2 bs=1000000 count=1
1+0 records in
1+0 records out
1000000 bytes (1.0 MB) copied, 0.00155357 s, 644 MB/s
real 0m0.003s
user 0m0.001s
sys 0m0.002s
[user@host tmp]$ ls -al test*
-rw-rw---- 1 user grp 1000000 Apr 8 15:51 test1
-rw-rw---- 1 user grp 1000000 Apr 8 15:51 test2
Como você pode ver, o tamanho do bloco tem um enorme impacto na eficiência. Talvez seja uma barra lateral para o OP, mas sinto que ainda é relevante.
TL; DR: Não execute código arbitrário encontrado na rede ou que alguém em quem você não confia lhe dê. Vai estragar o seu dia.