19

I use tail -f in my Linux shell, to view log files, as I like how it auto-updates with the incoming text: I like to see the new stuff come scrolling in.

However, I also like the search functionality of less, which isn't available in tail (or is it?). Is there a "best of both worlds" solution?

If there was a mode I could switch on in less which would make it auto-update with incoming text, then that might be ideal.

VL-80
  • 4,475
  • 2
  • 28
  • 38
Max Williams
  • 2,917
  • 6
  • 29
  • 38

4 Answers4

24

You can run less +F filename in order to view file in tail -f fashion.

You can press Shift+F while viewing file in less to switch to forwarding mode, and Ctrl+C to leave this mode.

Nikolai
  • 520
  • 3
  • 13
5

From less -help:

F Forward forever; like "tail -f".

so presumably less +F /var/log/messages

Oliver Salzburg
  • 86,445
  • 63
  • 260
  • 306
linuxdev2013
  • 1,301
  • 11
  • 21
  • You can also press Shift+F while viewing file in **less** to switch to forwarding mode, and Ctrl+C to leave this mode. – Nikolai Apr 16 '15 at 12:20
  • @linuxdev2013 - starting it with "less -F " doesn't work for me. @Nikolai - `shift&f` is perfect, thanks! If you want to make that an answer i'll mark it as correct. (btw, in case anyone else is reading, to get out of forwarding mode, it's `ctrl&c`, or whatever your regular cancel/interrupt keycode is. – Max Williams Apr 16 '15 at 12:55
3

Nicolai's answer is probably closest to what you asked for, but have you thought about using tmux?

In my tmux sessions, I like to tail -f logs, then simply enter tmux's copy mode to search up and down exactly like searching in less, then exit copy mode to find my tail -f still going.

Create a tmux session:

tmux

Tail the log file and the last 1000 lines to start:

tail -f -n1000 /var/log/syslog

Enter copy mode using the leader key and a left bracket:

[ctrl+leader] + [

the default tmux leader key is the letter b, so for example:

[ctrl+b] [

Now you can scroll and search up and down just like in less.

Exit copy mode to return to your tail -f with:

[crtl+c]

Bonus material: Open a second terminal prompt:

[ctrl+leader] + c

Switch between the two terminal prompts:

[ctrl+leader] + l
revacuate
  • 131
  • 2
0

You could just do

tailf logname.log | grep "query-here"