Je redirige souvent la sortie du programme vers moins, par exemple
produce_output | less
Cela fonctionne très bien, jusqu'à ce qu'il produce_output
produise de grandes quantités de sortie. Si je recherche du texte au fond du fichier, moins de rapports
Calculating line numbers... (interrupt to abort)
Si j'interromps avec Control + C, il tue également produce_output
, ce qui l'empêche de produire une sortie supplémentaire. Existe-t-il un moyen d'envoyer l'interruption à moins, afin que cela produce_output
continue?
Je sais que je pourrais utiliser kill -INT less_process
, mais je pense qu'il doit y avoir une meilleure solution.
kill
.select
pour attendre l'entrée d'un fichier / pipe et d'un terminal en même temps.F
mode (suivi). Les tuyaux et les ttys sont pollables de la même manière.Vous pouvez désactiver les numéros de ligne avec le
option.
la source
En travaillant avec de grandes quantités de sortie, j'ai trouvé très utile d'envoyer la sortie dans un fichier et d'utiliser
tail -f
ouless +F
de regarder, par exemple:La
2>&1
syntaxe s'assure que stdout et stderr vont àout
--- supprimez cela si vous voulez seulement que stdout accède au fichier. De cette façon, vous pouvez inspecter la sortie de différentes manières (même à partir d'une autre machine) sans avoir à jouer avec le programme qui produit la sortie.Notez que cela
2>&1
peut être spécifique à bash (je ne suis pas sûr). Assurez-vous que vous disposez de suffisamment d'espace disque pour le fichier de sortie :-)la source
2>&1
est POSIX, nu>&
est un bashisme.less +F
dans mon exemple; Je viens de mettre à jour ma réponse.less +F
(carless +F
traite les données telles qu'elles sont générées). L'exemple que j'ai donné n'a pas le même problème que celui publié à l'origine: ctrl + c n'interrompt pasprocess_output
. Si l' on ne se soucie pas pour le « suivre » la fonctionnalité, on peut exécuterproduce_output > out 2>&1
, puisless out
. Un problème avecproduce_output | less
est que si quelque chose casse le tuyau (par exemple en frappant accidentellement 'q' deless
), alorsproduce_output
il mourra (sans manipulation spéciale de SIGPIPE).Vous pouvez également faire ceci:
la source