Não, eles não são os mesmos, o último canalizará grep para ls (o que é quase certo que não é o que você quer). O ponto-e-vírgula simplesmente separa dois comandos diferentes.
Primeiramente, você provavelmente deseja começar a usar o mais recente e flexível $( em vez do backtick .
Considere isso como um exemplo:
$ var='echo foo; echo bar'
$ echo "$var"
foo
bar
Você pode pensar nos backticks (ou $( ) como retornando o que foi impresso na saída padrão durante a execução do código contido entre eles.
No seu caso, ele analisa a saída de ls -A $1 uma vez e procura uma linha na saída contendo a, b ou c e, em seguida, imprime uma saída de coluna única de ls -1 $1 . Em geral, isso é uma má idéia, você não deve analisar ls .