web-dev-qa-db-fra.com

Existe-t-il un moyen d'actualiser dynamiquement la commande less?

J'aime la commande watch, mais elle a ses limites .

Je suis curieux de savoir si je pourrais imiter la fonctionnalité de watch avec less. Je recherche principalement la possibilité de faire défiler mon répertoire car il est modifié dynamiquement via un script en cours d'exécution.

146
Zaid

Dans less, vous pouvez taper F pour continuer la lecture à la fin d'un fichier (comme tail -f); vous pouvez taper :e et un nom de fichier pour afficher un autre fichier, mais malheureusement, si vous entrez le nom du fichier actuel, less ne recharge pas le fichier. Cependant il y a une astuce pour lui faire relire le fichier courant, suggérée par sabgenton : type :e et entrez le nom d'un fichier inexistant ; qui provoque moins pour afficher un message d'erreur, puis recharger le fichier actuel.

Si vous cherchez une alternative à watch ls, Voici quelques-uns:

  • Les gestionnaires de fichiers modernes (par exemple Nautilus, Thunar, Konqueror, Dolphin, Finder) actualisent les vues en temps réel.
  • Emacs n'a pas d'actualisation en temps réel, mais avec auto-revert-mode, il rechargera le fichier ou le répertoire toutes les 5 secondes (le délai est configurable).
  • Bien que w3m soit principalement un navigateur Web, il crée un répertoire passable et une visionneuse de fichiers texte. Appuyez sur R pour recharger l'URL (locale).

Shift+F rendra less similaire à tailf. Autrement dit, il est actualisé si davantage de données sont ajoutées au fichier.

68
balki

Tapez simplement:

less +F filename

Cela émule en appuyant sur "F" dans l'éditeur.

44
jhclark

man les pages peuvent être très informatives. Ne vous laissez pas intimider par eux. Parmi tout le reste, man less indique que vous pouvez utiliser la commande R pour:

   R      Repaint the screen, discarding any buffered input.  Useful if the file is changing while it is being viewed.

(Je me rends compte que cette question a plus de 6 ans, mais elle revient sur les recherches Google, donc je ne suis pas le seul à avoir cliqué sur le lien pour arriver ici.)

23
destenson

La touche "F" lors de l'exécution de less fera un "suivi" similaire à tail -f, mais je ne sais pas si cela permettra d'atteindre ce que vous recherchez ici.

5
Dave Jennings

Je tape normalement G pour réduire la sortie sur une base unique. Je le trouve particulièrement utile sur un système de fichiers réseau comme CIFS.

5
jorb

R pour repeindre ne recharge pas toujours le fichier.[1]

Une solution de contournement qui recharge toujours le fichier consiste à appuyer sur hq, ce qui ouvrira la page d'aide, puis à quitter. Cela a pour effet secondaire de forcer le fichier à se recharger.


[1] Voici quelques exemples de situations que R font et ne rechargent pas:

  • > et >> changements: NE PAS se recharger
  • sed -i, gEdit, TextEdit: NE PAS se recharger
  • Sous Linux, vi changements: NE PAS se recharger
  • Sur Mac, vi changements: NE PAS se recharger

Je crois que la différence se résume à savoir si l'inode change (vous pouvez vérifier avec ls -i foo.txt). Si l'inode change, alors R ne fonctionnera pas.

3
wisbucky

Vous pouvez utiliser vim pour lire le fichier, puis ajouter le mappage suivant à votre .vimrc fichier et vous pouvez facilement recharger un fichier avec ,r:

let mapleader = ","
nnoremap <leader>r :edit <CR>

Notez que si vous avez déjà modifié le fichier, vim se plaindra. Changez simplement en

let mapleader = ","
nnoremap <leader>r :edit! <CR>

Pour ignorer les modifications.

1
puk

Vous pouvez le diriger vers tail -f à la place, cela vous obligerait à suivre la sortie. Vous perdriez cependant la possibilité de vous déplacer (faire défiler) votre sortie.

0
Gert

Je viens de trouver ce fil comme n'importe qui d'autre. Je voudrais ajouter la solution lorsque vous êtes déjà à la fin du fichier, en utilisant 'g' suivi de 'G' forcera une actualisation du fichier.

J'ai fini par faire un bouton macro pour cela dans mon programme de terminal (SecureCRT). La macro est simplement "gG".

0
ZMitchell

Si vous n'êtes pas opposé à l'utilisation d'un navigateur, vous pouvez lancer le serveur Web Algernon avec cette commande:

algernon -a -t /directory/name

Une liste de fichiers sera ensuite affichée et actualisée automatiquement à http: // localhost: 3000 /

0
Alexander