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!
1 curtida
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
Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.