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 .