No meu lubuntu 24.04 tenho um pequeno sistema de arquivos /, então verifico de vez em quando se há espaço livre suficiente.
Para isso eu uso
sudo du -xh -d 3 / | sort -h -r | egrep -v '*M|*K'
grep: warning: * at start of expression
grep: warning: * at start of expression
27G /
12G /var
10G /var/cache
9,8G /var/cache/apt
9,6G /usr
6,0G /usr/lib
5,6G /boot
2,8G /boot/ubuntu-20.10
2,5G /boot/bullseye
2,2G /usr/share
1,9G /usr/lib/x86_64-linux-gnu
1,7G /var/lib
Esta não é uma questão de onde meu espaço desapareceu. Não consigo descobrir o que o aviso significa e como posso evitá-lo.
env | grep -i shell
SHELL=/bin/bash
egrep
espera uma expressão regular, mas você deu a ela*M|*K
. Há um asterisco no início de ambas as expressões alternativas. O asterisco tem um significado especial em expressões regulares: ele diz "a coisa anterior é repetida zero ou mais vezes". Mas aqui, não há nada anterior a ser repetido. Daí o aviso.Talvez você esteja tentando usar um padrão de busca na sintaxe globbing , usando
*
como um caractere curinga?grep
não funciona assim. Comgrep
, você usa expressões regulares . Ore
ingrep
na verdade significa "expressão regular".Em expressões regulares,
*
é um quantificador. Um quantificador especifica com que frequência o elemento precedente deve ser reconhecido. Por exemplo, para reconhecer "pelo menos um 'a', seguido por exatamente um 'b'", você pode usar o padrãoa+b
.No seu padrão, o quantificador
*
está bem no começo, então não há elemento precedente para especificar um número. Você está basicamente dizendo, "procure por zero ou mais instâncias de, e então exatamente um 'M'". Isso não funciona realmente ;) A*
bem no começo de uma expressão regular é, na verdade, suposto produzir um resultado indefinido pelo padrão POSIX .Felizmente, você não precisa especificar a ocorrência inteira no seu padrão de busca. Então você pode simplesmente procurar por "exatamente um M ou exatamente um K, seguido por um caractere de espaço em branco" assim
Se esse padrão exato acontecer de aparecer nos seus caminhos de arquivo, essas ocorrências também seriam encontradas. Você poderia tornar a expressão regular mais complexa para excluir esses falsos positivos, mas isso está além do escopo desta resposta.