Alguém pode me explicar como o grep faz isso?

0

Eu não entendo porque este comando grep exibe o resultado desta maneira. Por que ele exibe o nome do arquivo? E por que é separado por um sinal de ponto duplo? É um regex?

[root@centos2 ~]# grep . /sys/block/sda/sda?/start
/sys/block/sda/sda1/start:2048
/sys/block/sda/sda2/start:1026048
/sys/block/sda/sda3/start:5220352
    
por Pozinux 19.06.2017 / 21:08

1 resposta

9

O ? no seu comando é um shell glob. O shell expande esse glob para passar três parâmetros para o comando grep , os nomes de cada um dos três arquivos que está sendo impresso. O comando grep detecta que você está pesquisando vários arquivos, de modo que, antes do nome do arquivo, a expressão que você está procurando foi encontrada na impressão real da expressão. Como seu padrão é um único ponto ( . ), grep interpreta esse padrão como "qualquer caractere único", o que cada linha dos três arquivos satisfaria. Cada um desses três arquivos tem apenas uma linha, então imprime uma linha para cada arquivo. Pré-adicionando o nome do arquivo, você obtém a saída que você vê acima.

    
por 19.06.2017 / 21:13

Tags