Qual é o efeito de um backtick solitário no final de uma linha de comando?

0

Eu acidentalmente digitei cd 'no terminal hoje e terminal fiz coisas estranhas.

Ele colocou um ">" assinado na próxima linha, seguido pelo meu cursor, como se quisesse alguma entrada. Não importa o que eu digitei continuou a fazer a mesma coisa até que eu terminei o comando.

Por curiosidade, o que aconteceu? Isso foi um bug ou um recurso?

    
por yesennes 30.09.2015 / 05:27

2 respostas

2

Respondido ... essencialmente

Everything you type between backticks is evaluated (executed) by the shell before the main command

    
por 30.09.2015 / 05:40
3

O efeito que você testemunhou é devido ao shell esperando outro backtick. Você obtém o mesmo efeito quando, por exemplo, insere ( (ou qualquer outro comando incompleto) e pressiona Retornar na linha de comando.

O prompt, >␣ , que você obteve é o prompt secundário , conforme armazenado em $PS2 . Esse prompt é usado pelo shell quando mais entradas interativas são necessárias para finalmente concluir o comando.

Um exemplo:

bash-4.4$ for i in {0..10..2}
> do
> printf 'Hello %d\n' "$i"
> done
Hello 0
Hello 2
Hello 4
Hello 6
Hello 8
Hello 10
bash-4.4$

bash-4.4$ é o meu prompt principal ( $PS1 ), e recebo o prompt secundário quando pressiono Retornar após {0..10..2} na primeira linha desde que o comando digitado até agora não está completo. Eu continuo recebendo o prompt secundário em cada linha até que eu complete o comando pressionando Return após done (que completa a entrada do for-loop no shell).

O prompt terciário ( $PS3 , geralmente #?␣ ) é usado pela palavra-chave select , enquanto o prompt quaternário 1 > ( $PS4 , geralmente +␣ ) é usado para rastrear a saída quando a opção xtrace do shell é definida com set -x .

1 Sim, eu tive que procurar essa palavra.

    
por 14.02.2017 / 20:35