Sim, você pode grep /dev/sda1 e /proc , mas provavelmente não deseja. Mais detalhadamente:
-
Sim, você pode executar grep o conteúdo binário de
/dev/sda1. Mas, com discos rígidos grandes e modernos, isso levará muito tempo e o resultado provavelmente não será útil. -
Sim, você pode usar o conteúdo de
/proc, mas esteja ciente de que a memória do seu computador está mapeada como arquivos. Em um computador moderno com gigabytes de RAM, isso levará muito tempo para o grep e, novamente, o resultado provavelmente não será útil.
Como uma exceção, se você estiver procurando dados em um disco rígido com um sistema de arquivos danificado, poderá executar grep something /dev/sda1 como parte de uma tentativa de recuperar os dados do arquivo.
Outros arquivos problemáticos em /dev
Os discos rígidos e as partições do disco rígido em /dev podem ser, se houver paciência suficiente, grepped. Outros arquivos (dica de chapéu: user2313067 ), no entanto, podem causar problemas:
-
/dev/zeroé um arquivo de tamanho infinito. Felizmente,grep(pelo menos a versão GNU) é inteligente o suficiente para ignorá-lo:$ grep something /dev/zero grep: input is too large to count -
/dev/randome/dev/urandomtambém são infinitos. O comandogrep something /dev/randomserá executado para sempre, a menos quegrepseja sinalizado para parar.Pode ser útil para grep
/dev/urandomao gerar senhas. Para obter, por exemplo, cinco caracteres alfanuméricos aleatórios:$ grep --text -o '[[:alnum:]]' /dev/urandom | head -c 10 G 4 n X 2Isto não é infinito porque, depois de ter recebido caracteres suficientes,
headfecha o pipe fazendo com que o grep termine.
Loops infinitos
"...links ... create infinite loops when traversed..."
O Grep (pelo menos a versão GNU) é inteligente o suficiente para não fazer isso. Vamos considerar dois casos:
-
Com a opção
-r, o grep não segue links simbólicos, a menos que eles sejam explicitamente especificados na linha de comando. Por isso, loops infinitos não são possíveis. -
Com a opção
-R, o grep faz seguir links simbólicos, mas os verifica e se recusa a ser pego em um loop. Para ilustrar:$ mkdir a $ ln -s ../ a/b $ grep -R something . grep: warning: ./a/b: recursive directory loop
Excluindo diretórios problemáticos de grep -r
Como um aparte, grep fornece um recurso limitado para impedir que o grep pesquise certos arquivos ou diretórios. Por exemplo, você pode excluir todos os diretórios denominados proc , sys e dev da pesquisa recursiva do grep com:
grep --exclude-dir proc --exclude-dir sys --exclude-dir dev -r something /
Como alternativa, podemos excluir proc , sys e dev usando os globs estendidos do bash:
shopt -s extglob
grep -r something /!(proc|sys|dev)