L'ajout d'un comportement de queue où entrer ajoute des lignes vierges à moins

8

J'adore less, que je peux utiliser pour suivre les journaux avec le +Fdrapeau (ou le ShiftFraccourci clavier), rechercher en avant et en arrière, et généralement se déplacer librement dans le document.

Mais il manque une chose less: en général, je suis à la fin du fichier et je veux voir de nouvelles choses se produire. Dans tail -fI, je frappais simplement enterplusieurs fois, et les nouvelles lignes de journal apparaissaient clairement séparées des anciennes lignes.

Est-il possible d'ajouter ceci à less? Comment?

blueFast
la source
Je ne pense pas que vous puissiez le faire, bien que parfois je fasse echo -e '\ n \ n \ n \ n \ n' >> / dev / pts / 0 par exemple, ce n'est pas aussi propre mais au moins permet j'ai un point de référence où je me suis arrêté quand je regarde ailleurs.
David Houde

Réponses:

6

Ce n'est pas vraiment taille comportement - c'est le terminal. Tail envoie simplement un flux de sortie à stdout, qui va à votre terminal, et vous insérez des lignes vides au milieu de cette sortie en appuyant sur Entrée. Tail lui-même n'accepte pas du tout vos commentaires. Vous pouvez taper tout ce que vous voulez et cela s'affichera également.

less, cependant, est une application console, qui prend des entrées et les traite. Il gère la console à l'aide de séquences de contrôle de terminal, c'est ainsi que vous pouvez faire défiler. Vous laisser insérer des caractères arbitraires dans le flux gâcherait l'affichage et, de toute façon, utilise moins votre entrée pour contrôler le programme.

Malheureusement, il ne semble pas avoir de moyen de marquer visuellement la position actuelle. Ce n'est pas une terrible demande de fonctionnalité, cependant, et moins ne se encore de nouvelles fonctionnalités , de temps en temps.

mattdm
la source
Avez-vous un lien à portée de main pour demander cette fonctionnalité aux moins responsables?
blueFast
@gonvaled gnu.org/software/less
Michael Hampton
4

J'ai trouvé votre question en cherchant moi-même la même réponse.

Déçu par la réponse acceptée, j'ai trouvé une solution de contournement. C'est loin d'être idéal, mais cela me permet de marquer ma position dans le journal que je suis less, ce qui est tout.

J'ai créé un petit script exécutable (je l'ai appelé marklog) avec le contenu suivant, et l'ai mis sur mon chemin:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Bien sûr, cela ne fonctionne que si vous avez un accès en écriture au fichier journal - ce qui pourrait être une rupture dans de nombreuses situations. J'ai également créé cette version que j'utilise pour écrire dans des fichiers journaux que je ne possède pas (mais auxquels j'ai accès sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Ces scripts fournissent exactement le genre de coupure visuelle que je recherchais. Il y a au moins 3 façons de les utiliser:

  1. Au point où vous appuieriez normalement sur Entrée plusieurs fois lors de l'utilisation tail -f, exécutez plutôt à marklogpartir d'un autre terminal (en fournissant le chemin d'accès au fichier journal comme argument).

  2. Utilisez CtrlZpour suspendre lessafin que vous puissiez exécuter le script dans la même fenêtre de terminal, mais lorsque vous recentrez au premier plan less(en utilisant fg, bien sûr), il ne sera plus en mode `` suivre '', vous devrez donc taper à ShiftFnouveau ...

  3. Enfin - et cela pourrait être le moyen le plus pratique, car vous n'avez pas besoin de taper le chemin d'accès au fichier journal: exécutez marklogdirectement à partir de lessen tapant !marklog %. Lessremplacera le nom de fichier actuel par %. Cependant, lessne répondra pas au! pendant qu'il est en mode «suivi», vous devrez donc frapper d' CtrlCabord pour quitter le mode suivi, exécuter !marklog %, puis à ShiftFnouveau.

Avec la méthode 3, vous obtenez également le bonus supplémentaire de l'historique des commandes de Less: appuyez simplement sur !puis utilisez la flèche vers le haut pour sélectionner la commande la plus récente (pour moi, c'est toujours marklog).

J'espère que cela aide quelqu'un autant qu'il m'a déjà aidé.

Lambart
la source
1

Appuyez sur Shift+ Fà la fin du fichier et less commencera à fonctionner comme tail -f.

kofemann
la source
2
Non, ce ne sera pas le cas. Il suivra de nouvelles lignes, mais ne fonctionnera pas comme tail -f. Plus précisément, il n'acceptera pas l'entrée en tant que nouvelle ligne, ce qui est le seul point de ma question. D'ailleurs, je l'ai déjà mentionné Shift+Fdans la question (avec une petite erreur, je dois dire)
blueFast
1

Je ne pense pas que vous puissiez faire ça. J'ai utilisé met 'pour marquer des lieux d'intérêt, puis je les ai à nouveau, mais cela ne vous donne pas la séparation que vous demandez. Peut-être que quelque chose comme le multitail fera ce que vous voulez.

user9517
la source
-1

La réponse de Lambart m'amène à ma solution préférée. Merci à Lambart!

Interrompez simplement le mode suivi ctrlcet entrez !printf "\n\n---$(date)---\n\n" >> %. Après cela, vous devez appuyer enterune fois de plus et appuyer sur shiftfpour recommencer à la suite du fichier.

iRaS
la source