O que esse comando faz com uma barra invertida no final?

4
curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-ubuntu14.04 > /usr/local/bin/docker-machine-driver-kvm \

Faz o download de um arquivo chamado docker-machine-driver-kvm-ubuntu14.04 e, em seguida? envia para o diretório /usr/local/bin/docker-machine-driver-kvm ?

Além disso, e o \ no final?

    
por StaticBug 02.06.2017 / 10:52

1 resposta

7

Parece um erro, se a linha for interpretada por si só.

Uma barra invertida evita que o próximo caractere seja interpretado pelo shell. Se o próximo caractere for uma nova linha, a nova linha não será interpretada como o final do comando pelo shell. Ele efetivamente permite que um comando abranja várias linhas.

É mais comumente usado em situações como essas (ou seja, para facilitar a leitura de um comando longo):

rsync --archive \
      --verbose \
      user@source:/dir/ \
      user@target:/dir/

Observe que a última linha não termina com \ , pois não é continuada na próxima linha. Note também que nada (nem mesmo um comentário ou um único espaço) pode seguir o \ nas linhas que são quebradas desta forma.

Além disso, sim, o comando faz o download de um arquivo e o salva em um arquivo no disco. Outra maneira de fazer a mesma coisa, sem um redirecionamento, seria a opção -o do Curl:

curl -L \
    -o /usr/local/bin/docker-machine-driver-kvm \
    https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-ubuntu14.04 \

(seguido por qualquer coisa que esteja na próxima linha do seu script)

    
por 02.06.2017 / 10:59