Que tal um pipe nomeado?
mkfifo /tmp/test.fifo
od -a /dev/urandom > /tmp/test.fifo
E na nova janela:
cat /tmp/test.fifo | less
Ou:
gnome-terminal -e "bash -c 'cat /tmp/test.fifo | less'"
O que eu gostaria de fazer basicamente é uma versão de nova janela de less
. Há muito tempo atrás, havia uma ferramenta chamada gless
que fazia exatamente isso. Por exemplo
cat my_very_long_file | gless
abriria uma nova janela e executaria um paginador less
-like mostrando meu arquivo muito longo; o terminal do qual eu ligo o comando ficaria limpo.
gless
não está disponível em sistemas mais novos. A alternativa mais próxima que encontrei é gview -
(praticamente gvim
no modo somente leitura, lendo a entrada padrão), mas essa não é a coisa exata; ele lê todo o stdin antes de exibir qualquer coisa, então não é bom para grandes entradas.
Eu pensei em executar um novo terminal ( xterm
, konsole
ou qualquer coisa) com less
como o comando inicial. Mas não funciona do jeito que eu quero; Eu gostaria de fazer algo parecido com
cat my_very_long_file | xterm -e less
Mas o xterm e todos os outros terminais não parecem passar sua entrada padrão para o processo que executam - a nova janela é aberta, mas desaparece imediatamente.
(Eu sei que posso iniciar o comando no novo terminal; mas não é o que eu quero. Eu realmente quero executar um comando no shell atual e redirecionar para um novo processo. cat
é apenas um exemplo.)
Como teste de qualquer método sugerido, considere isso como um caso de teste:
od -a /dev/random | <whatever-solution>
Com a solução substituída, isso deve criar uma nova janela com um pager (ou qualquer outro programa para esse assunto) que receba um fluxo aleatório infinito de texto.
(adição tardia) Estou procurando uma solução simples que manterá o espírito da tubulação em um pager. Soluções com várias etapas podem funcionar, mas não são naturais. Existe uma única linha de comando que também funciona: xterm -e 'whatever | less'
, eu uso algumas vezes, mas não é natural para mim.
Que tal um pipe nomeado?
mkfifo /tmp/test.fifo
od -a /dev/urandom > /tmp/test.fifo
E na nova janela:
cat /tmp/test.fifo | less
Ou:
gnome-terminal -e "bash -c 'cat /tmp/test.fifo | less'"
Tente adicionar esta função ao seu ~ / .bashrc:
gless() { gnome-terminal -e "less $*" & }
Isso inicia o terminal em segundo plano, liberando seu console. Também passa todos os argumentos para o comando menor (por exemplo, gless -S test.txt)