Mysterious prompt from missing right apostrophe

2

Se eu digitar, por exemplo

grep 'needle
>

Eu sou enviado para um misterioso prompt > do qual ctrl - C (ou reiniciando o terminal) é aparentemente a única saída.

  1. O que é esse prompt?
  2. Por que não termina quando eu digito ctrl - Z ?
  3. Por que não é melhor projetado para detectar novatos presos? Claro, talvez em algum caso de borda ridiculamente planejado haveria uma razão para abrir este prompt > e então inserir algo como "quit\nexit\nhelp\nCTRL-Z\nlogout\n" , mas se o usuário começar a digitar essas coisas, o Ubuntu deveria pelo menos enviar uma mensagem de resposta útil , "Você está tentando sair deste prompt? Se assim for, use CTRL - C . Se não, ignore esta mensagem.") Que não interferiria com o estranho finalidade que o prompt serve.
por Anonymous 23.10.2013 / 14:18

3 respostas

2

Isso porque você abriu uma aspas ( " ou ' ), portanto, o shell assume que o comando continua, o que é indicado por esse caractere > . Então, até a citação de fechamento, você receberá o prompt > para concluir o comando iniciado.

Isso é quando você deseja fazer eco de algo com nova linha, por exemplo:

user@host:~$ echo "this
> is a text
> with multiple
> newlines"

saídas:

this
is a text
with multiple
newlines

Para abortar você também pode pressionar Ctrl + c .

    
por chaos 23.10.2013 / 14:25
1

Não há nada de misterioso. Esse prompt ( > ) está sugerindo que o shell está aguardando a segunda cotação ' e um nome de arquivo para concluir seu comando. Se você quiser procurar 'needle , use:

grep \'needle filename

E Controle + Z é usado para suspender um trabalho, mas você não tem nenhum trabalho iniciado apenas inserindo grep 'needle .

E, no terceiro ponto, eu diria que isso soará ridículo para os usuários que realmente trabalham com o terminal. Além disso, como você acha que o terminal poderia detectar se alguém é novato ou não? E se alguém realmente quiser entrar nessas strings: "sair, sair, ajudar, sair"?

Veja também:

por Radu Rădeanu 23.10.2013 / 14:26
0

O prompt é apenas a entrada padrão. o 'caractere é interpretado como' início de uma string ', portanto, excetua-se o fechamento'. quando você pressiona o retorno antes do fechamento, ele é interpretado como uma nova linha. você pode continuar escrevendo o que quiser. quando você digita um 'e pressiona enter obtém toda a string que você escreveu

    
por FedFranz 23.10.2013 / 14:27