Назад | Перейти на главную страницу

Добавление поведения хвоста, где ввод добавляет пустые строки в less

я люблю less, который я могу использовать для отслеживания журналов с помощью +F флаг (или сдвигF горячая клавиша), поиск вперед и назад и, как правило, свободное перемещение по документу.

Но одного не хватает less: обычно я нахожусь в конце файла и хочу увидеть, что происходит. В tail -f Я бы просто ударил войти несколько раз, и новые строки журнала будут четко отделены от старых строк.

Можно ли добавить это в less? Как?

Это не совсем tailповедение - это терминал. Tail просто отправляет поток вывода на стандартный вывод, который поступает на ваш терминал, и вы вставляете пустые строки в середину этого вывода, нажимая Enter. Сам Tail на самом деле вообще не принимает от вас входных данных. Вы можете ввести все, что хотите, и это тоже появится.

lessОднако это консольное приложение, которое принимает и обрабатывает данные. Он управляет консолью с помощью последовательностей управления терминалом, что позволяет прокручивать страницу. Если вы позволите вам вставлять произвольные символы в поток, это приведет к нарушению отображения, и в любом случае ваш ввод будет меньше использовать для управления программой.

К сожалению, у него нет возможности визуально отметить текущее положение. Однако это не ужасный запрос функции, и меньше делает по-прежнему получать новые функции время от времени.

Я нашел ваш вопрос, пока искал для себя такой же ответ.

Разочарованный принятым ответом, я нашел обходной путь. Это далеко не идеально, но позволяет мне отмечать свою позицию в журнале, за которым я следую, с помощью less, в этом весь смысл.

Я создал небольшой исполняемый скрипт (назвал его marklog) со следующим содержимым и поместите его на свой путь:

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

Конечно, это работает только в том случае, если у вас есть доступ для записи в файл журнала, что во многих ситуациях может помешать сделке. Я также создал эту версию, которую использую для записи в файлы журнала, которые мне не принадлежат (но к которым у меня есть доступ 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"

Эти сценарии обеспечивают именно тот вид визуального перерыва, который я искал. Их можно использовать как минимум тремя способами:

  1. В точке, где вы обычно нажимаете ввод несколько раз при использовании tail -f, вместо этого запустите marklog с другого терминала (указав в качестве аргумента путь к файлу журнала).

  2. Использовать CtrlZ приостановить less поэтому вы можете запустить скрипт в том же окне терминала, но когда вы перейдете на передний план less (с помощью fg, конечно), он больше не будет в режиме отслеживания, поэтому вам нужно будет нажать сдвигF очередной раз...

  3. Наконец - и это может быть наиболее удобный способ, потому что вам не нужно вводить путь к файлу журнала: Выполнить marklog прямо из less набрав !marklog %. Less заменит текущее имя файла на %. Тем не мение, less не будет отвечать на! пока он находится в режиме "следования", поэтому вам придется нажать CtrlC сначала для выхода из режима следования запустите !marklog %, затем сдвигF очередной раз.

С помощью метода 3 вы также получаете дополнительный бонус в виде истории команд Less: просто нажмите ! а затем используйте стрелку вверх, чтобы выбрать самую последнюю команду (для меня это всегда marklog).

Надеюсь, это поможет кому-то так же, как уже помогло мне.

Нажмите сдвиг+F в конце файла и less начнет работать как tail -f.

Я не думаю, что ты сможешь это сделать. Я использовал m и ' отмечать достопримечательности, а затем идти к ним снова, но это не дает вам разделения, о котором вы просите. Возможно, что-то вроде мультитейла сделает то, что вы хотите.

Ответ Ламбарта подводит меня к моему любимому решению. Спасибо Ламбарту!

Просто прервите режим следования ctrlc и введите !printf "\n\n---$(date)---\n\n" >> %. После этого нужно нажать войти еще раз и ударил сдвигж чтобы снова начать следить за файлом.