Мне нравится, когда он короткий и без большого количества хаков или внешних скриптов. Вы можете запустить этот oneliner из ex (в vim )при необходимости (или поместить каждую команду в vimrc, когда открываются файлы журнала -.)
:set autoread | au CursorHold * checktime | call feedkeys("lh")
и дополнительно вы можете :set syntax=logtalk
раскрасить бревно
(если вы хотите перейти (почти )в конец файла, просто используйте "G" вместо "lh" с клавишами подачи)
Пояснение:
autoread
:читает файл при изменении извне (но сам по себе не работает, нет внутреннего таймера или что-то в этом роде. Он будет читать файл только тогда, когда vim выполняет действие, например команду в ex:!
CursorHold * checktime
:когда курсор не перемещается пользователем в течение времени, указанного в updatetime
(, которое по умолчанию составляет 4000 миллисекунд, выполняется )checktime
, который проверяет наличие изменений вне файла call feedkeys("lh")
:Курсор перемещается один раз вправо и назад влево. а дальше ничего не происходит (... значит, CursorHold
срабатывает, значит имеем цикл)Чтобы остановить прокрутку при использовании call feedkeys("G")
, выполните:set noautoread
-теперь vim сообщит, что файл был изменен, и спросит, хотите ли вы прочитать изменения или нет)
Мне нравится идея смотреть лог-файлы в vim (вместо tail -f ), например. когда вы работаете в сеансе ssh без screen/tmux.Кроме того, вы можете скопировать непосредственно из файла журнала, если это необходимо, или сохранить вывод напрямую, или... все, что вы можете сделать с помощью vim:)
*из этого ответа(со ссылкой на ответ PhanHaiQuang и комментарий flukus)
Is there a way to only copy the files that are the diff between the directories?
Да. В вашем случае не хватает только того, что каталог сравнения относится к месту назначения. Та же проблема относится и к каталогам ссылок. Решение здесь состоит в том, чтобы использовать абсолютный путь
Сценарий
mkdir /tmp/608927
cd /tmp/608927
mkdir testdiff{1,2} changed
touch testdiff1/testfil{1,2,3}
cp -p testdiff1/testfil{1,2} testdiff2/
Тестовый запуск, копирование файлов из testdiff1
в changed
, но только тех, которые не старше -до -даты в testdiff2
и не в changed
rsync -av --compare-dest "$PWD"/testdiff2/ testdiff1/ changed/
Выход
sending incremental file list
./
testfil3
sent 165 bytes received 38 bytes 406.00 bytes/sec
total size is 0 speedup is 0.00
Доказательства
ls changed/
testfil3
Обратите внимание, что если вы копируете между каталогами, которые выглядят так, как будто они находятся в локальной системе, rsync
фактически ухудшится до создания полных копий (или их отсутствия ). Если вы запустите rsync
через сетевое соединение, он может запустить свой экземпляр на каждом конце, и вы получите преимущество от передачи только изменений.