В случае rm файла, заканчивающегося на \n, rm file*
, расширение regexp файла "съедает" новую строку как часть аргумента rm, поэтому оболочка не видит ее и не разбирает как команду.
Как видно из strace:
$strace rm teste.txt*
execve("/bin/rm", ["rm", "teste.txt\n"],
Что касается автозаполнения, то оно подчиняется набору предопределенных правил, и на самом деле не ожидает, что там будет '\n'.
Чтобы разрешить пользователю, не являющемуся -root, перезапускать системную службу, вы можете использовать либо sudo
(, чего вы хотите избежать, ), либо PolKit.
См. этот ответ для получения инструкций по настройке правил PolKit.