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