test
é um shell interno que (obviamente) testa alguma condição. Algumas conchas 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 suporte de fechamento e você pode encontrá-lo em /usr/bin/[
.
[[…]]
é uma alternativa para test
e [
. Foi desenvolvido para o shell Korn ( ksh
). Mas você também o encontra nas versões do Bash maiores que 2 e no Z Shell. Os colchetes duplos têm alguns recursos bacanas:
- O shell não faz divisão de palavras ou expansão de nome de arquivo.
- Você não precisa citar.
- Em vez de
-a
(AND) ou -o
(OR), você pode usar &&
ou ||
.
- O
=
pode fazer muito mais.
((…))
é equivalente a let
. Então basicamente ((expression))
é o mesmo que let "expression"
. No entanto, let
você pode usar mais de uma expressão, mas os colchetes duplos permitem apenas uma expressão.
$((…))
(e também $[…]
) faz algum cálculo. Seu shell tenta calcular a expressão dentro dos chavetas e substitui a expressão pelo resultado. Então echo $((1+1))
leva a echo 2
. Então suas conchas imprimem o número 2.
Sempre que 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 escapar é bastante difícil de responder. Porque depende do software que você usa além do shell. Então, ou seja, grep
e grep -E
precisa escapar diferente. Este é também o caso com sed
, awk
e outros. Portanto, a melhor opção é dar uma olhada na página de manual. Depois de algum tempo, você se acostuma e sabe quando usar o escape.