-
test
é um shell embutido que (obviamente) testa para alguma condição dada. Algumas shells mais antigas precisam de um comando especial. Então você encontrará também um programa em/usr/bin/test
. -
[
também é um programa para testar alguma condição. Este software também precisa de um colchete de fechamento e você pode encontrá-lo em/usr/bin/[
. -
[[…]]
é uma alternativa paratest
e[
. Foi desenvolvido para o shell Korn (ksh
). Mas você também o encontra em versões Bash maiores que 2 e no Z Shell. Os colchetes duplos possuem alguns recursos interessantes:- O shell não faz nenhuma divisão de palavras ou expansão de nome de arquivo.
- Você não precisa de citações.
- Em vez de
-a
(AND) ou-o
(OR), você pode usar&&
ou||
. - O
=
pode fazer muito mais.
-
((…))
é equivalente alet
. Então, basicamente((expression))
é o mesmo quelet "expression"
. No entanto, comlet
, você pode usar mais de uma expressão, mas as chaves duplas permitem apenas uma expressão. -
$((…))
(e também$[…]
) faz algum cálculo. Você shell tenta calcular a expressão dentro das chaves e substitui a expressão com o resultado. Então,echo $((1+1))
leva aecho 2
. Então suas conchas imprimem o número 2.
Sempre que você quiser comparar dois números, use a opção com um traço e duas letras ( -ge
, -lt
etc.). Se você quiser comparar strings, use =
ou !=
.
Sua pergunta sobre o escape é bem difícil de responder. Porque depende do software que você usa além do shell. Então, por exemplo, grep
e grep -E
precisam de escape diferente. Esse também é o caso de sed
, awk
e outros. Então a melhor opção é dar uma olhada na manpage. Depois de algum tempo você se acostuma e sabe quando usar o escape.