J'adore less
, que je peux utiliser pour suivre les journaux avec le +F
drapeau (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 -f
I, 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?
Réponses:
Ce n'est pas vraiment
tail
le 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.
la source
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: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):
Ces scripts fournissent exactement le genre de coupure visuelle que je recherchais. Il y a au moins 3 façons de les utiliser:
Au point où vous appuieriez normalement sur Entrée plusieurs fois lors de l'utilisation
tail -f
, exécutez plutôt àmarklog
partir d'un autre terminal (en fournissant le chemin d'accès au fichier journal comme argument).Utilisez CtrlZpour suspendre
less
afin que vous puissiez exécuter le script dans la même fenêtre de terminal, mais lorsque vous recentrez au premier planless
(en utilisantfg
, bien sûr), il ne sera plus en mode `` suivre '', vous devrez donc taper à ShiftFnouveau ...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
marklog
directement à partir deless
en tapant!marklog %
.Less
remplacera le nom de fichier actuel par%
. Cependant,less
ne 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 toujoursmarklog
).J'espère que cela aide quelqu'un autant qu'il m'a déjà aidé.
la source
Appuyez sur Shift+ Fà la fin du fichier et less commencera à fonctionner comme
tail -f
.la source
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+F
dans la question (avec une petite erreur, je dois dire)Je ne pense pas que vous puissiez faire ça. J'ai utilisé
m
et'
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.la source
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.la source