Fazer o Shell continuar executando mesmo após erro de saída

Olá pessoal!
Estou com um problema que acredito ser simples, mas já procurei bastante e não consegui encontrar a solução.
E o seguinte, estou criando um alias par que eu possa obter as informações que preciso de maneira personalizada (filtrar somente o que me interessa).
Dentre os comandos tenho:

df -h | grep Sist. && df -h | grep sd && df -h | grep mnt

A ideiar é filtrar somente o cabeçalho do comando “df -h” + o que me interessa. Que neste caso seriam os dispositivos montados em “/dev/sdXY” e em “/mnt”. O problemas é que nem sempre tenho discos montados em “/mnt”. e nestes casos, os demais comandos após o que mostrei acima não são executados.
Queria saber se existe alguma forma de filtrar para quando fosse este o caso o Shell ignorar o erro da saída do “grep mnt” e continuar executando os comandos seguintes como se nada tivesse acontecido.

Desde já agradeço!
Forte abraço! :v:t2: :laughing:

1 Curtida

usa ;

df -h | grep Sist. ; df -h | grep sd ; df -h | grep mnt

2 Curtidas

Você pode usar o switch -E ou --extended-regexp isso “transforma” o padrão de pesquisa em uma expressão regular, e em uma expressão regular, você pode buscar por vários padrões ao mesmo tempo, bastando separar eles pelo sinal |, ex:

grep --extended-regexp "padrão 1|padrão 2|padrão 3"
# Ou
grep -E "padrão 1|padrão 2|padrão 3"

Isso faz o próprio grep ignorar quando não achar, no seu caso:

df -h | grep -E "Sist\.|sd|mnt"

A questão do .
No caso de uma expressão regular, o ponto (.) é um caractere especial que significa “mais um caractere”, sendo assim é necessário escapar ele se você quiser filtrar ele, pra isso basta usar a barra invertia (\) na frente, assim: \.

1 Curtida

Valeu @leolimajc! Mas ele ainda continuou emitindo o comando seguinte quando não encontra o "“mnt”. Mas valeu mesmo!

Exatamente o que eu estava procurando @Natanael.755… Valeu mesmo cara!

1 Curtida