A barra invertida costuma ser usada para dizer "faça o próximo caractere representar a si mesmo em vez de dar um significado especial". Dizemos que a barra invertida cita o próximo caractere. Esse significado está presente em muitas linguagens de programação, incluindo a sintaxe do shell. Por exemplo, em rpm-qa rpmname\* , a barra invertida faz com que o caractere * seja passado no argumento para o comando rpm-qa . Em contraste, rpm-qa rpmname* substitui rpmname* pela lista de nomes de arquivos no diretório atual, começando com rpmname . (Se não houver nenhum arquivo correspondente, o bash deixa rpmname* sozinho; o zsh, por padrão, reclama que não há correspondências.)
O shell oferece outra maneira de interpretar um caractere literalmente, ou seja, torná-lo autônomo em vez de ser interpretado de alguma maneira especial. Isso é citar, o que cancela o significado especial de toda uma sequência de caracteres. Existem dois tipos de aspas: aspas simples ' fazem cada caractere representar a si próprio até a próxima aspa simples, enquanto as aspas duplas " conservam um significado especial para alguns caracteres ( " , $ , \ e ' ). Em echo 'that'\''s no moon' , o comando echo recebe um único argumento, que é a concatenação de that (escrita com uma cadeia literal, não que houvesse qualquer caractere com um significado especial nesse caso específico), ' ( a aspas simples invertidas cancela o significado especial dessa aspa simples, então isso se expande para um caractere de aspas simples) e s no moon (os espaços perdem seu significado especial, pois estão entre aspas: em vez de separar argumentos, eles são parte do argumento).
No shell, quando a barra invertida tem um significado especial, geralmente é para citar o próximo caractere. Mas:
- Dentro de aspas simples, a barra invertida não tem significado especial.
- Dentro de aspas duplas, a barra invertida cita apenas o caractere seguinte, se for um dos
"$\'. Caso contrário, tanto a contrabarra quanto o caractere seguinte são interpretados literalmente, por exemplo"\a"é a string de dois caracteres\a. - Dentro de literais de citação única com dolar, a contrabarra tem um significado diferente, semelhante ao que existe em C . Uma barra invertida seguida por dígitos octal ou por certas letras fornece maneiras alternativas de inserir caracteres, o que é útil para caracteres não imprimíveis. Por exemplo,
\né um N minúsculo,"\n"é uma barra invertida + n, mas$'\n'é um caractere de nova linha.
Em grep '\s/tmp' /etc/fstab , as aspas simples fazem com que grep receba o argumento \s/tmp . Este argumento é uma expressão regular . Existem muitas variantes de sintaxe para expressões regulares, mas a maioria é baseada em um dos dois padrões: POSIX expressões regulares básicas (BRE) e regulares regulares estendidos expressões (ERE) . ERE segue a convenção generalizada de que a barra invertida seguida por qualquer outra coisa que não uma letra ou um dígito cita o seguinte caractere. Mas, por razões históricas, no BRE, uma barra invertida pode, às vezes, tornar o próximo caractere especial quando, de outro modo, não seria. Nesse caso, \s é uma extensão grep do GNU para a sintaxe básica de regex, disponível tanto com BRE quanto com ERE, ou seja, um caractere de espaço em branco. Assim, grep '\s/tmp' /etc/fstab lista as linhas em /etc/fstab que contêm /tmp precedidas por um espaço ou tabulação.