O que significa cmdand / cmdor em zsh?

1

Por que o zsh imprime cmdand para cada && no início da linha?

Por exemplo, quando eu colo as seguintes linhas em um shell Z

echo "foo" && echo "bar" && \
echo "buz" && \
echo "jam"

... zsh me mostraria o seguinte

echo "foo" && echo "bar" && \
cmdand cmdand> echo "buz" && \
cmdand cmdand cmdand> echo "jam"

Então, o zsh adiciona um cmdand para cada && encontrado até essa linha. Acabei de notar que o mesmo vale para || e cmdor .

Por que isso seria útil? Não é só desordenar o console? Esse comportamento pode ser controlado?

Eu observei esse comportamento no Mac OS e no Ubuntu para versões zsh > 5.x.

    
por normanius 09.08.2017 / 11:55

1 resposta

4

Ele é controlado pelo valor da variável de ambiente PS2 , cujo valor padrão '%_> ' fornece esse comportamento. Sua finalidade é mostrar onde você está em um comando multi-linha (e não apenas linhas que terminam em back-slash), por exemplo, se você digitar um comando condicional sobre várias linhas, você terá: -

$ if [ "$var" ]
if> then
then> echo var: $var
then> else
else> echo var: not set
else> fi
var: not set
$ 

O shell não faz distinção entre linhas digitadas e coladas.

Defina PS2='> ' para um simples > em cada linha de continuação.

Para mais informações, consulte o manual man zshall e pesquise PS2 .

    
por 09.08.2017 / 12:34

Tags