Comment ouvrir un fichier texte dans un terminal avec une actualisation automatique instantanée à chaque fois qu'il est modifié?
J'ai regardé vim
avec :set autoread
, mais cela nécessite une entrée élémentaire (comme une pression de touche à l'intérieur vim
) pour déclencher le rafraîchissement.
Je souhaite que l'actualisation automatique soit mains libres. Y a-t-il un hack pour faire ça?
J'utilise Crunchbang 11, mais je suis assez à l'aise avec le terminal.
tail -f $file
.inotify
. En le recherchant, c'est une API à laquelle j'ai besoin d'accéder avec la programmation C, ce que je ne suis pas enclin à faire de sitôt. Je recherche une solution de commande shell.inotify-tools
. Ceux-ci utilisent une fonctionnalité intégrée au noyau appelée inotify. Chaque fois qu'un fichier est traité, un événement est envoyé via inotify sur lequel vous pouvez agir. Beaucoup de prog. langs. tels que Python, Perl, etc. ont des bibliothèques qui encapsulent l'API Inotify. Voir Wikipedia pg: en.wikipedia.org/wiki/InotifyRéponses:
Cela devrait vous montrer le fichier une fois par seconde:
la source
watch -tpcn 1 pygmentize -g filename
watch -g
, cela ne fonctionne pas comme vous vous en doutez .-g
commutateur est en fait pourpygmentize
. Quoi qu'il en soit, merci pour l'avertissement.watch -n 1 tail file
?Affiche les mises à jour syslog à mesure qu'elles sont ajoutées au fichier.
la source
J'utiliserais
watch
comme l'autre réponse le suggère, mais juste pour vous montrer comment on peut aborder un problème apparemment compliqué en utilisant les blocs de construction fournis par un shell tel qu'Unix; une boucle while peut être un moyen simple d'effectuer votre boucle.Exemple
L'écran s'efface puis après une seconde, cela s'affiche:
la source
Comme suggéré dans les commentaires, vous pouvez également l'utiliser
inotify
même s'il est exagéré. De loin le plus simple est d'utiliserwatch
. Voici une façon de le faire avecinotify
:Installez le
inotify-tools
packageUtilisez
inotifywatch
pour vérifier les modifications de votre fichier. Exécutez-le en boucle etcat
le fichier si un changement est détecté (c'est pourquoi jegrep
pour la chaînetotal
):la source
-q
(ou--quiet
) àgrep
fera taire la ligne correspondante avec "total".watch(1)
est un outil vraiment utile. [1]Je ne recommanderais pas d'utiliser
cat
cependant.Utilisez plutôt
head
outail
pour voir si vous avez besoin de voir le début ou la fin du fichier.la source