Este é um trecho extraído do livro Linux Shell Scripting with Bash de Ken O. Burtch. Uma das mais completas e didáticas publicações sobre Shell, traduzido e adaptado por mim.
Embora não seja um tema inédito e nem mesmo de minha autoria, penso ser de grande utilidade para todos.
O comando test do Bash testa o conteúdo de uma string, pode ser um arquivo, uma variável, compara valores numéricos ou não.
O test avalia se uma determinada condição dada e se ela for verdadeira a variável $? é retornada com o valor 0 e se falsa o valor é 1.
No shell o comando test pode também ser representado por colchetes, para assemelhá-lo mais com o comando test de outras linguagens de programação. Ex:
test 1 = 1; echo $?
A saída desta condição é 0 por ser ela verdadeira.
Também pode ser escrita da seguinte forma:
[ 1 = 1 ]; echo $?
São os seguintes parâmetros que podem ser aplicados ao test.
-b arquivo - Verdadeiro se o arquivo é um block device.
-c arquivo - Verdadeiro se o arquivo é um character device.
-d arquivo - Verdadeiro se o arquivo é um diretório.
-e arquivo - Verdadeiro se o arquivo existe.
f1 -ef f2 - (equivalent file) Verdadeiro se o arquivo f1 é um hard-link para f2.
n1 -eq n2 - (equal) Verdadeiro se n1 for igual a n2.
-f arquivo - Verdadeiro se o arquivo existe e é um arquivo regular.
n1 -ge n2 - (greater than or equal) Verdadeiro se n1 maior ou igual a n2.
n1 -gt n2 - (greater than) Verdadeiro se n1 for maior que n2.
-g arquivo - Verdadeiro se o SGID estiver ativado.
-G file - Verdadeiro se o arquivo (efetivamente) pertencer ao grupo sob qual o script estiver rodando.
-h arquivo - Verdadeiro de o arquivo for um link simbólico.
-k arquivo - Verdadeiro se o arquivo tiver a permissão sticky bit ativada.
n1 -le n2 - (less than or equal) Verdadeiro se n1 menor ou igual a n2.
n1 -lt n2 - (less than) Verdadeiro se n1 menor que n2.
-n s (or just s)-(not null) Verdadeiro se a string não for vazia ou nula.
-N arquivo - Verdadeiro se o arquivo tiver novo conteúdo (desde a última vez que foi lido).
n1 -ne n2 - (not equal) Verdadeiro se n1 não for igual a n2.
-O file - Verdadeiro se o arquivo pertencer ao usuário sob o qual o script estiver rodando.
f1 -nt f2 (newer than) Verdadeiro se o arquivo f1 for mais recente que f1.
f1 -ot f2 (older than) Verdadeiro se o arquivo f1 for mais antigo que f1.
-p file - Verdadeiro se o arquivo for um pipe.
-r file - Verdadeiro se um arquivo for lido (pelo seu script).
-s arquivo - Verdadeiro se o arquivo existe e não estiver vazio.
-S arquivo - Verdadeiro se o arquivo for um socket.
-t fd - Verdadeiro se o descritor do arquivo estiver aberto em um terminal.
-u arquivo - Verdadeiro se o arquivo tiver set-user-id (suid) ativada.
-w arquivo - Verdadeiro se o arquivo tiver permissão de escrita (pelo seu script).
-x arquivo - Verdadeiro se o arquivo for executável.
-z s - (zero length) Verdadeiro se a string for igual a zero ou não possuir nenhum valor atribuído. Ex. variável nula ou arquivo vazio.
Test Command String Tests:
s1 = s2 - Verdadeiro se a string s1 é igual a s2.
s1 != s2 - Verdadeiro se a string s1 for diferente de s2.
s1 < s2 - Verdadeiro se a string s1 for menor que s2.
s1 > s2 - Verdadeiro se a string s1 for maior que s2.
Classes de caracteres:
[:alnum:] - Alfanumérica
[:alpha:] - Alfabética
[:ascii:] - Caracteres ASCII
[:blank:] - Espaço ou TAB
[:cntrl:] - Caracteres de controle
[:digit:] - Dígitos decimais
[:graph:] - caracteres gráficos
[:lower:] - caracteres minúsculos
[:print:] - não são caracteres de controle
[:punct:] - Caracteres de pontuação
[:space:] - Whitespace (espaço em branco)
[:upper:] - caracteres maiúsculos
[:xdigit:] - dígitos hexadecimais
ASCII C Escape Expansion:
\a - Alerta (bip sonoro)
\b - Backspace
\e - Escape
Expressões:
\f - Form feed
\n - New line
\r - Retorno de carro (trás o cursor para o início da linha)
\t - Horizontal tab
\v - Vertical tab
\\ - A literal backslash
\' - Citação única
\nnn - Valor ASCII octal para um caractere (até 3 dígitos)
\xnnn - Valor ASCII hexadecimal para um caractere (até 3 dígitos)