Esos comandos sobrescribirán su dispositivo sda con ceros: el primero hará los primeros 16 MB (tamaño de bloque de 4096 y recuento de 4096 bloques) y el segundo sobrescribirá los últimos 2 MB (tamaño de bloque 512 con 4096 bloques) con ceros. (No se está borrando técnicamente, y eso se relaciona con mi primer punto a continuación).
(esa fue la parte ya mencionada en otras respuestas, incluida aquí para completar)
Otra cosa que vale la pena mencionar es que el tamaño del bloque tiene efectos, pero generalmente solo se ven en operaciones de alto volumen. La forma más eficiente (más rápida) de ejecutar el comando es si el tamaño del bloque del comando coincide con el tamaño de acceso del dispositivo; de lo contrario, se pierde tiempo.
Si está interesado, puede intentar crear un archivo con un millón de fragmentos de 1 bloque, y un archivo con 1 millón de fragmentos de bloque y ver la diferencia:
[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 puede ver, el tamaño de bloque tiene un impacto masivo en la eficiencia. Tal vez sea una barra lateral para el OP, pero siento que todavía es relevante.
TL; DR: No ejecute código arbitrario que encuentre en la red, o que alguien en quien no confía le dé. Arruinará tu día.