Respondido já ... essencialmente
Everything you type between backticks is evaluated (executed) by the shell before the main command
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?
Respondido já ... essencialmente
Everything you type between backticks is evaluated (executed) by the shell before the main command
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.
Tags command-line shell