Em ambos os casos, o *
é expandido pelo shell.
echo
apenas imprime os parâmetros resultantes da expansão.
ls
verifica cada parâmetro se for um diretório e lista seu conteúdo, se for um.
Por exemplo, se você estiver no diretório home e digitar ls *
, terá todos os diretórios listados e, abaixo do nome do diretório listado, os arquivos que ele contém. Por outro lado, se você digitar echo *
, o comando listará apenas os diretórios, e não os diretórios e o conteúdo que eles têm. Por que isso?
Em ambos os casos, o *
é expandido pelo shell.
echo
apenas imprime os parâmetros resultantes da expansão.
ls
verifica cada parâmetro se for um diretório e lista seu conteúdo, se for um.