Добавление поведения хвоста, где ввод добавляет пустые строки к меньшему
Я люблю 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 способа их использования:
В точке, где вы обычно нажимаете ввод несколько раз при использовании
tail -f
вместо запускаmarklog
с другого терминала (указав путь к файлу журнала в качестве аргумента).Используйте CtrlZ, чтобы приостановить
less
так что вы можете запустить скрипт в том же окне терминала, но когда вы переориентируетеless
(с помощьюfg
, конечно), он больше не будет в режиме "следовать", поэтому вам нужно будет снова нажать ShiftF...И наконец - и это может быть наиболее удобным способом, потому что вам не нужно вводить путь к файлу журнала: Выполнить
marklog
прямо изless
набрав!marklog %
,Less
заменит текущее имя файла для%
, Тем не мение,less
не будет отвечать на! пока он находится в режиме "следуй", поэтому сначала тебе нужно нажать CtrlC, чтобы выйти из режима следования, запустить!marklog %
, затем ShiftF снова.
С помощью метода 3 вы также получаете дополнительный бонус истории команд Less: просто нажмите !
а затем используйте стрелку вверх, чтобы выбрать самую последнюю команду (для меня это всегда marklog
).
Надеюсь, это поможет кому-то так же, как уже помогло мне.
Нажмите Shift+F в конце файла и меньше начнет работать как tail -f
,
Я не думаю, что вы можете сделать это. Я использовал m
а также '
отметить достопримечательности, а затем перейти к ним снова, но это не дает вам разделение, которое вы просите. Возможно, что-то вроде мультитейла будет делать то, что вы хотите.
Ответ от Ламбарта подводит меня к моему любимому решению. Спасибо Ламбарту!
Просто введите следующий режим CtrlC и введите !printf "\n\n---$(date)---\n\n" >> %
, После этого вы должны нажать ввод еще раз и нажать Shiftf, чтобы начать снова после файла.