No caso de rm do arquivo terminado em \ n, rm file*
, a expansão do arquivo regexp "come" a nova linha como parte do argumento rm, portanto, o shell não o vê e não o analisa como um comando.
Como visto em uma sequência:
$strace rm teste.txt*
execve("/bin/rm", ["rm", "teste.txt\n"],
Quanto ao preenchimento automático, ele obedece a um conjunto de regras predefinidas e não espera realmente ter um '\ n' lá.