O que significam ' &&
', ' \
' e ' -
' no final dos comandos do bash?
Em particular, me deparei com a seguinte combinação de linhas que deveriam adicionar chaves públicas ao gerenciador de pacotes aptitude do Ubuntu, para que servem esses caracteres aqui?
gpg --keyserver keyserver.ubuntu.com - rcv 26C2E075 && \ gpg --export --armor 26C2E075 | sudo apt-key add - && \ sudo apt-get update
Respostas:
"&&" é usado para encadear comandos juntos, de forma que o próximo comando seja executado se e somente se o comando anterior tiver saído sem erros (ou, mais precisamente, sair com um código de retorno 0).
"\" por si só no final de uma linha é um meio de concatenar linhas juntas. Portanto, as duas linhas a seguir:
são processados exatamente da mesma forma como se a linha tivesse sido escrita como a única linha:
"-" é um argumento de linha de comando sem função específica do bash. Exatamente como ele é tratado depende do comando que está sendo executado (neste caso, apt-key ). Dependendo do contexto, normalmente é usado para indicar " ler dados do stdin em vez de um arquivo " ou " processar o restante da linha como dados e não como argumentos da linha de comando ".
fonte
fonte
&& É o AND lógico:
&& é uma maneira de expressar AND lógico , o que significa que toda a expressão é True somente se os dois lados forem verdadeiros. Em lógica, diz-se que a afirmação inteira (P&Q) só é verdadeira quando P e Q são verdadeiros.
Como conseqüência disso, os computadores geralmente tratam o P&Q como uma avaliação de curto-circuito . Portanto, como a declaração inteira será verdadeira apenas se P e Q forem verdadeiros, se P for falso, a declaração Q não será avaliada . Basicamente, os computadores são preguiçosos (eficientes) e não se incomodam em avaliar o Q, se não tiverem também. Isso também é verdadeiro para OR lógico, consulte o link anterior.
Os três contextos de && no Bash:
1) Usando a avaliação de curto-circuito com o status de saída de um comando:
Todo comando tem um status de saída. Se um comando tiver um erro, ele terá um status de saída diferente de zero. Portanto, se o status de saída for diferente de zero e && for usado para encadear comandos juntos em uma instrução, os comandos posteriores não serão avaliados (executados) se o anterior não tiver o status de saída 0 (True). Isso ocorre devido à avaliação de curto-circuito. Então, se você tem:
Q não será executado se P não for verdadeiro (se P sair com um status igual a 0, não é verdade). Da mesma forma que:
O make não será executado se o configure tiver um erro, não for verdadeiro. Então, basicamente, acaba sendo uma maneira de escrever a declaração if then:
Lembre-se de que, na maioria dos contextos, 0 é falso, mas não quando se trata de um status de saída.
2) && Pode ser usado no comando de teste incorporado [[]] do Bash:
&& Também pode ser usado dentro do comando de teste interno no bash [[]] para combinar expressões de maneira semelhante à combinação de comandos. Toda a operação de teste será verdadeira apenas se os dois operandos (lados) de && forem verdadeiros, por exemplo:
seria uma maneira de dizer se $ a é um número inteiro entre 2 e 5 (não incluindo 2 e 5).
3) Avaliação Aritmética:
Por fim, && pode ser usado na avaliação aritmética como AND lógico. Se os dois (AND lógico) dos números a seguir forem diferentes de zero, ele retornará 0, caso contrário 1 será retornado:
fonte
if [./configure]
exemplo, você deve remover os colchetes. O correto éif ./configure; then make...
Eu acho que você vai melhorar com uma explicação do significado "real", implicações são outra coisa :)
\
é o " caractere de escape " e é um dos três mecanismos de citação disponíveis no bash: Isso significa que, se você colocar um caractere de escape (o "\") no final de uma linha, estará escapando do novo caractere de linha que o segue imediatamente (o caractere RETURN), com o efeito de "continuar a linha" outros já explicaram em sua respostaMeus 2 centavos
fonte