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

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

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

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

5 ответов

Решение

Это не совсем tail Поведение - это терминал. 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"

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

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

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

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

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

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

Нажмите Shift+F в конце файла и меньше начнет работать как tail -f,

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

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

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

Другие вопросы по тегам