Quando estamos escrevendo um shell script é muito comum precisarmos verificar se um teste resultará em verdadeiro ou falso. Fazer esses testes muitas vezes é tedioso, principalmente quando o comando não gera saída alguma (ou seja, não imprime nada na tela).

Veremos aqui como lidar com isso de maneira simples, fácil e muito prática.

A origem da ideia

Geralmente eu costumo fazer essa checagem, assim:

$ comando && echo verdadeiro || echo falso

O comando no exemplo acima está representando o comando a ser executado. É só uma abstração, OK?

O símbolo && é uma maneira do bash dizer “se o comando for finalizado com sucesso, execute o comando a seguir”. Portanto isso aqui: comando && echo verdadeiro, significa “execute o comando e se ele terminar com sucesso, escreva ‘verdadeiro’ na tela”.

Temos também o símbolo ||, que significa “se o comando for finalizado sem sucesso, execute o comando a seguir”. Portanto isso aqui: comando || echo falso, significa “execute o comando e se ele falhar, escreva ‘falso’ na tela”.

Uma vez que entendemos a finalidade destes símbolos, podemos utilizá-los para fazer testes rápidos, como nos exemplos a seguir:

$ file='arquivo.txt'
$ [[ -f "$file" ]] && echo verdadeiro || echo falso
falso
$ user='meleu'
$ grep -q "$user" /etc/passwd && echo verdadeiro || echo falso
verdadeiro

Evidentemente que poderíamos alcançar o mesmo resultado utilizando if-else, mas isso não seria nada prático.

Aliás, sejamos honestos, escrever && echo verdadeiro || echo falso toda hora também não é lá muito prático…

Criando um alias

Para evitar a digitação excessiva, podemos criar um alias. Um alias é um “atalho” para um comando grande e/ou complexo.

Se você não conhece a técnica do alias muito provavelmente você já a está usando e nem sabia. Digite alias no seu terminal e veja o resultado.

Eis um exemplo típico:

$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls -F --color=auto'

Vamos pegar a última linha acima como exemplo.

Aquele alias nos diz que quando o usuário executa um ls, ele não está simplesmente executando o ls “puro”. Ele está também visualizando a lista onde o nome dos arquivos aparecem coloridos (--color=auto) e com um caractere no final do nome (-F) que servem para ajudar a distinguir o tipo do arquivo (ex.: a cor azul e o caractere / significam diretório).

Uma vez entendido o que é e pra que serve um alias, vamos criar um para nos ajudar nos testes que mencionamos anteriormente:

$ alias result='echo verdadeiro || echo falso'

Pronto! Agora vamos ver como isso nos ajuda:

$ file='arquivo.txt'
$ [[ -f "$file" ]] && result
falso
$ user='meleu'
$ grep -q "$user" /etc/passwd && result
verdadeiro

Como você deve ter observado, uma vez definido o alias, basta adicionar && result após o comando que você quer testar.

Agora sim, bem prático, né não?!

Só tem um porém: após o logoff o seu alias é esquecido. Para torná-lo “permanente” precisamos salvá-lo no nosso .bashrc.

Salvando o alias no seu .bashrc

O arquivo .bashrc que fica localizado no seu diretório home, é basicamente script que é executado toda vez que você inicia o bash de maneira interativa. Portanto basta salvarmos nosso alias nesse arquivo que teremos ele a nossa disposição sempre que precisarmos.

Vá no seu diretório home (/home/nome_do_usuario) e procure o arquivo .bashrc (se não existir, basta criá-lo). Abra o arquivo no seu editor de texto de preferência.

Provavelmente já vai existir bastante coisa escrita nele. Se quiser tentar dar uma olhadela no conteúdo do arquivo e tentar entender o que está acontecendo lá, você pode acabar se deparando com algumas coisas legais e aprender coisa nova. Mas vamos concluir a nossa dica logo! Vá no final do arquivo e adicione a seguinte linha:

alias result='echo verdadeiro || echo falso'

E pronto! Agora você já pode testar aquele one-liner maroto apenas adicionando && result ao final da linha! ;)