Você também pode usar o printfcomando, em vez de echo:
printf '%s\n' *
printfé superior a echonesta situação em que echose não respeitar o "traço duplo" ( --) para significar o fim da lista de argumentos (em alguns sistemas, incluindo Ubuntu 14.04 que é o que eu testei-o em):
llama@llama:~$ mkdir -p Misc/unix210948
llama@llama:~$ cd !$
cd Misc/unix210948
llama@llama:~/Misc/unix210948$ touch -- -n
llama@llama:~/Misc/unix210948$ ls
-n
llama@llama:~/Misc/unix210948$ echo *
llama@llama:~/Misc/unix210948$ echo -- *
-- -n
llama@llama:~/Misc/unix210948$ printf '%s\n' *
-n
Nesse caso, você não pode obter o resultado desejado com echo(já que um arquivo chamado -né interpretado como uma opção e o traço duplo não funciona, portanto, você deve usá-lo printf).
Observe que você sempre deve usar uma string de formato como a acima ao lidar com dados desconhecidos printf, pois caso contrário, poderá receber resultados inesperados (obrigado ao @ G-Man por apontar isso nos comentários!):
llama@llama:~/Misc/unix210948$ rm ./-n
llama@llama:~/Misc/unix210948$ touch '\n'
llama@llama:~/Misc/unix210948$ ls
\n
llama@llama:~/Misc/unix210948$ printf -- *
llama@llama:~/Misc/unix210948$ printf '%s\n' *
\n
Um arquivo chamado \né interpretado como uma nova linha por printf. Para evitar isso, usamos uma string de formatação para printf( %s) e passamos os nomes dos arquivos (expandidos via globbing, como antes).
Essa printfsolução de sequência de formatação + pode lidar com uma grande variedade de nomes de arquivos (e também trata arquivos "ocultos", ou seja, aqueles que começam com a ., da mesma forma que ls):
llama@llama:~/Misc/unix210948$ rm ./*
zsh: sure you want to delete all the files in /home/llama/Misc/unix210948/. [yn]? y
llama@llama:~/Misc/unix210948$ touch -- '-n' '\n' 'name with spaces' '.hidden'
llama@llama:~/Misc/unix210948$ ls
-n \n name with spaces
llama@llama:~/Misc/unix210948$ printf '%s\n' *
-n
\n
name with spaces
Se você printfsuporta %q, você também pode usar isso ( printf '%q\n' *). Isso escapará a espaços, novas linhas etc. se houver caracteres estranhos em seus nomes de arquivos. (Obrigado a @muru no chat por apontar isso !)
libc*soou seuld-linux*so