for i in {0..1000000}
e for i in $(seq 1000000)
criam uma lista grande e passam por cima dela. Isso é ineficiente e usa muita memória.
Uso:
for ((i = 0; i<= 1000000; i++))
em vez disso. Ou POSIXly:
i=0; while [ "$i" -le 1000000 ]; do
...
i=$(($i + 1))
done
Ou:
seq 1000000 | xargs...
Para obter um arquivo cheio de CRLFs:
yes $'\r' | head -n 1000000 > file
Geralmente, os loops devem ser evitados sempre que possível em shells.