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