Efetivamente, o shell pede comando / expressão completo e, por essa razão, está exibindo PS2 string de prompt.
De man bash :
E um pouco antes disso:
% bl0ck_qu0te% Assim, como você pode imaginar lendo a documentação, os shells possuem múltiplos prompts com diferentes propósitos. PS1 prompt é a sua string root@sai:~# , que aparece normalmente quando você digita comandos. > é PS2 prompt. Há outros, também, PS3 para o bloco de comandos select e PS4 para depuração com o comando set -x . Nesse caso, estamos mais interessados em PS2 .
.Existem muitas maneiras em que o shell pode mostrar o prompt PS2 (e onde a conclusão de um comando em uma nova linha pode ser necessária). O mesmo prompt é usado quando você executa here-doc de redirecionamento (em que um comando é considerado completo quando você vê a sequência de terminação, neste exemplo - EOF):
$ cat <<EOF
> line one
> line two
> EOF
line one
line two
Muitas vezes, a continuação do comando longo pode ser feita adicionando \ e imediata (!) nova linha, o que fará com que o mesmo prompt apareça:
$ echo Hello\
> World
HelloWorld
$ echo 'Hello\
> World'
Hello\
World
Quando canais, operadores lógicos ou palavras-chave especiais aparecem na linha de comando antes da nova linha, o comando também é considerado incompleto até que todas as instruções finais sejam inseridas:
$ echo Hello World |
> wc -l
1
$ echo Hello World &&
> echo "!"
Hello World
!
$ for i in $(seq 1 3); do
> echo "$i"
> done
1
2
3
$ if [ -f /etc/passwd ]
> then
> echo "YES"
> fi
YES
No seu caso particular, aspas simples implicam uma interpretação literal entre as aspas simples. Assim, como Zanna apontou, você está digitando um comando que consiste em newline + ls + newline. Esse nome de arquivo executável não pode ser encontrado (e geralmente nomes de arquivo de comando devem consistir apenas em uma única seqüência de caracteres ascii). Embora seja realmente possível ter nomes de arquivos que contenham caracteres especiais, é sempre evitado.
OBSERVAÇÃO : tal comportamento como mostrado no seu exemplo é específico para shells parecidos com o Bourne, incluindo bash , dash (no Ubuntu ele é symlink para /bin/sh ), ksh e mksh . csh e suas derivadas não se comportam dessa maneira:
$ tcsh
eagle:~> '
Unmatched '.
eagle:~> csh
% '
Unmatched '.
%
No entanto, no modo interativo, csh ainda aumentará ? como prompt2 quando mais entradas forem necessárias:
$ csh
% foreach n ( 1 2 3 )
? echo $n
? end
1
2
3