É uma questão de como o shell analisa seu comando, eu acho. Quando você faz
echo 45>target_size
o shell redireciona o descritor de arquivo 45
para o arquivo target_size
e, em seguida, executa echo
sem argumentos.
Se você fizer isso
echo 45 >target_size
ele redireciona o descritor de saída padrão para o arquivo target_size
e, em seguida, executa echo 45
.
TL; DR adiciona espaço em branco antes do operador de redirecionamento.