backticks antes do comando bash no shell

2

Qual é o significado de backticks antes do comando bash da seguinte maneira?

'''bash 
# Or
'bash

Quando eu digito os seguintes comandos no meu shell, o seguinte prompt aparece

>

Mas se eu entrar

''bash

O > não aparece.

Eu me deparei com isso quando segui as instruções do build-unix.md para o código-fonte bitcoin v0.15.1 no meu editor de texto.

link

'''bash
 BITCOIN_ROOT=$(pwd)

Obrigado pelas suas ideias

    
por HamsterDancer 07.03.2018 / 00:35

1 resposta

6

Isto é da linguagem markdown do github. Isso não deve ser copiado para o seu terminal. Para fazer um codeblock no github, você rodeia o seu código com três backticks assim:

'''
code
goes
here
'''

Para adicionar realce de sintaxe, você pode especificar o idioma da seguinte forma:

'''bash
code
goes
here
'''

O código que você quer será o material entre os backticks.

O motivo pelo qual você está vendo o prompt > é porque no bash os backticks são um caractere especial usado para a substituição de comandos. (É uma maneira desatualizada de fazer isso, mas ainda funciona).

Você pode usá-lo como:

$ echo 'hostname'

deve ser feito assim

$ echo "$(hostname)"

Que ecoará o nome do host da sua máquina.

No entanto, quando o bash vê um backtick, ele interpreta o restante da instrução como substituição de comando até atingir um backtick de fechamento. Quando você tem três, os dois primeiros se fecham, mas o terceiro abre uma nova instrução de substituição e o bash está procurando um backtick de fechamento. Quando você aperta enter ele exibe um > para informar que você ainda está dentro deste bloco e permite que você insira comandos multi-linha. O mesmo acontece com aspas ou o caractere de escape de linha:

$ echo '
> hostname
> uname -s
> '
JBCGENS001 Linux
$ echo '
> hello
> world
> '

hello
world
$ echo \
> hello \
> world
hello world
    
por 07.03.2018 / 00:38

Tags