Os dois problemas com menos lentidão em sua pesquisa são esperar no tubo e abrir a saída padrão / erro para leitura. Em operação normal, menos será lido o suficiente para preencher uma tela e parar a leitura até que você avance para a próxima página. Isso funciona bem, a menos que você esteja lendo de um pipe e o programa que está sendo gravado no canal perceba o ID do canal completo e durma até que o canal seja lido e seja muito lento para escrever o suficiente para preencher a próxima página. As duas maneiras mais fáceis de alterar esse comportamento por menos é pesquisar por algo que não existe ou calcular o tamanho da entrada padrão. Ambos lerão o arquivo completo. O problema seguinte é que, para controlar menos, ele precisa receber comandos do teclado, para que ele abra o padrão ou o erro padrão para leitura. Isto é estranho, mas funciona muito bem (com algumas salvaguardas que menos cuida), mas agora tem menos um identificador de arquivo aberto para leitura apontando para o controle tty (que você deseja quando controla menos) que o controle de tarefa do shell percebe quando você coloque as coisas em segundo plano e quando menos tenta ler uma chave, o shell a coloca em repouso. Você pode conseguir contornar isso pesquisando o final do arquivo em menos antes de colocá-lo em segundo plano.