Существует ли способ динамично обновить меньше команды?

/bin/false системная команда, которая используется каждый раз, когда необходимо передать команду программе, которая должна сделать не что иное как выход с ошибкой. Это - компаньон к /bin/true. Оба из них являются очень старыми и стандартными утилитами POSIX и никаким продуктом любой вывод по определению. верный иногда используется для сценария оболочки, который должен циклично выполниться неограниченно долго, как:

while true; do
    ...
    # Waste time
    if [ $wasted_time -gt 100000 ]; then
        exit 0
    fi
    ...
done

/usr/sbin/nologin специально предназначено для замены оболочки и производит вывод, жалуясь, что Вы не можете войти в систему. Прежде чем это существовало, было распространено использовать /bin/false для фиктивных пользователей, но могло сбивать с толку, так как пользователь не знает, почему они начаты.

144
13.04.2017, 15:36
11 ответов

В less, можно ввести F продолжать читать в конце файла (как tail -f); можно ввести :e и имя файла для просмотра другого файла, но к сожалению, если Вы вводите имя текущего файла, less не перезагружает файл. Однако существует прием, чтобы заставить его перечитать текущий файл, предложенный sabgenton: ввести :e и введите имя несуществующего файла; это заставляет меньше отображать сообщение об ошибке и затем перезагружать текущий файл.

Если Вы ищете альтернативу watch ls, вот некоторые:

  • Современные файловые менеджеры (например, Наутилус, Thunar, Konqueror, дельфин, Средство поиска) обновляют представления в режиме реального времени.
  • Emacs не имеет обновления в реальном времени, но с auto-revert-mode, это будет перезагружать файл или каталог каждые 5 секунд (задержка настраивается).
  • Хотя w3m является, прежде всего, веб-браузером, он делает проходимый каталог и средство просмотра текстового файла.Пресса R перезагружать (локальный) URL.
126
27.01.2020, 19:28
  • 1
    Для меня: e randomnamejkdlfjldf не удается загрузиться, несуществующее имя файла затем перезагружает назад в текущий файл :D –  sabgenton 18.03.2016, 12:36
  • 2
    @sabgenton Спасибо, я не знал это. Это - большой прием. Я добавил его к своему ответу, но Вы могли отправить его как собственный ответ (который я надеюсь, что Zaid принял бы). –  Gilles 'SO- stop being evil' 18.03.2016, 18:14
  • 3
    @CMCDragonkai нет, less +F только часы для добавленного содержания. Использовать :e nonexistentfile перечитывать полностью измененный вход. –  Gilles 'SO- stop being evil' 19.04.2016, 14:08
  • 4
    Существует ли флаг командной строки для этого? –  CMCDragonkai 19.04.2016, 14:18
  • 5
    @PaulWagland нет, R надежно не обновляет файл. Это обновляет экран и вытирает некоторые входные буферы, но это на самом деле не перезагружает данные из файла при всех обстоятельствах (только если файл является большим? Я не вырыл глубоко в код). –  Gilles 'SO- stop being evil' 20.04.2017, 12:53

Shift+F сделает less подобный tailf. Таким образом, это обновляется, если больше данных добавляется в файл.

67
27.01.2020, 19:28
  • 1
    Обратите внимание, что это только работает на, добавляет. Если строки удалены или отредактированы оперативные, less не покажет те изменения. –  Nathaniel M. Beaver 30.11.2016, 03:26
  • 2
    , Как я останавливаю следующий режим и повторно ввожу режим с возможностью прокрутки? –  Tom Hale 09.02.2017, 14:18
  • 3
    <kbd> Ctrl+C </kbd> –  balki 09.02.2017, 22:41

"F" ключ при выполнении less сделает "следование" подобным tail -f, но я не уверен, достигнет ли это того, что Вы ищете здесь.

5
27.01.2020, 19:28

Вы могли передать его по каналу к tail -f вместо этого, это привело бы к Вам после вывода. Вы проиграли бы, способность переместиться (прокручивают) через Ваш вывод все же.

0
27.01.2020, 19:28

Просто тип:

less +F filename

Это эмулирует нажатие "F" в редакторе.

42
27.01.2020, 19:28
  • 1
    Спасибо; добавленный псевдоним alias check="less +F" к моему .bashrc. –  Luke Davis 28.07.2017, 00:31

Я обычно просто тип G для конца вывода на одноразовой основе. Я нахожу это особенно полезным по сетевая файловая система как CIFS.

5
27.01.2020, 19:28
  • 1
    Это - больше обновления по запросу файла, открытого с меньше. В дополнение к переходу в конец файла это также перезагружает файл, если он изменился. –  jorb 06.06.2017, 16:23
  • 2
    Спасибо. В первый раз это не обновлялось для меня, но теперь это, кажется, работает правильно. В человеке это не записано это, это обновляет файл. man less: 'G или> или ESC-> Переходят к строке N в файле, принимают значение по умолчанию конец файла'. Я удаляю свои старые неправильные комментарии здесь, извините для них. –  Yaroslav Nikitenko 08.06.2017, 16:56
  • 3
    BTW, что Вы называете 'одноразовым основанием? Специалист по обслуживанию less, Mark Nudelman, которому отвечают следующее: "Команда G обычно не вызывает перечитанный из файла как команда R, делает. Это может казаться, делают это, если конец файла еще не был считан, когда G вызывается, так, чтобы переход в конец файла считал данные там впервые. Например, если Вы переходите в конец с G, затем переходите назад к началу с 1G, затем другая программа изменяет данные в конце файла (не изменяя длину)", (продолжение следует) –  Yaroslav Nikitenko 12.06.2017, 23:14
  • 4
    (продолжение следует) "затем Вы переходите в конец снова с G, Вы не будете видеть измененные данные. Но если Вы не переходите в конец и назад к началу, затем в первый раз, когда Вы выполняете команду G, она должна считать данные там впервые, и конечно она будет видеть любые модификации, которые произошли, так как меньше было сначала вызвано". –  Yaroslav Nikitenko 12.06.2017, 23:14
  • 5
    В этом случае я упомянул это являющийся одноразовым обновлением в противоположность динамическому обновлению, которое является частью того, что спрашивает исходный вопрос. –  jorb 12.06.2017, 23:31

Можно использовать энергию для чтения, файл затем добавляют следующее отображение на Ваш .vimrc файл и Вы можете легко перезагрузить файл с, r:

let mapleader = ","
nnoremap <leader>r :edit <CR>

Отметьте, отредактировали ли Вы уже файл, энергия будет жаловаться. Просто изменение в

let mapleader = ","
nnoremap <leader>r :edit! <CR>

Проигнорировать изменения.

1
27.01.2020, 19:28

man Страницы могут быть очень информативными. Не пугайтесь их. Помимо всего прочего, в man less говорится, что вы можете использовать команду R для:

   R      Repaint the screen, discarding any buffered input.  Useful if the file is changing while it is being viewed.

(Я понимаю, что этому вопросу уже более 6 лет, но он всплывает в поиске Google, так что я не единственный, кто перешел по ссылке, чтобы попасть сюда)

.
22
27.01.2020, 19:28

Rpara volver a pintar no siempre vuelve a cargar el archivo.[1]

Una solución alternativa que siempre vuelve a cargar el archivo es presionar hq, lo que abrirá la página de Ayuda y luego salir. Tiene el efecto secundario de forzar la recarga del archivo.


[1] Aquí hay algunos ejemplos de situaciones que Rhacen y no recargan:

  • >y >>los cambios :SÍ se recargan
  • sed -i, gEdit, TextEdit :NO recargar
  • En Linux, vilos cambios :SÍ se recargan
  • En Mac, vilos cambios :NO se recargan

Creo que la diferencia se reduce a si el inodo cambia (, puede verificar conls -i foo.txt). Si el inodo cambia, Rno funcionará.

10
27.01.2020, 19:28

Acabo de encontrar este hilo como cualquier otro. Me gustaría agregar la solución de cuando ya está al final del archivo, usar 'g' seguido de 'G' forzará una actualización del archivo.

Terminé haciendo un botón de macro para esto en mi programa de terminal (SecureCRT ). La macro es simplemente 'gG'.

0
27.01.2020, 19:28

Я решил эту проблему с помощью сценария оболочки, который автоматически -перезагружается lessпри выходе:

while true; do less -K file.txt || exit; done

С помощью этого скрипта я могу нажать q, чтобы перезагрузить файл, и CTRL+C, чтобы вернуться обратно в оболочку bash. Поведение CTRL+Cвключается с помощью опции -K. Ваш последний поисковый запрос будет сохранен.

Это можно дополнительно реорганизовать, используя двоеточие(:)для создания пустого выражения через do :...

while less -K file.txt; do : ; done

Недостатки

Текущей позицией просмотра всегда будет остальная часть строки 0.

Практический пример с использованиемmintty

В моем окружении Windows (GitBash )я установил скрипт, который открывает новое окно терминала (minty )меньше -просмотр файла:

lesswin() { mintty bash -c "while less -K \"$@\"; do : ; done;" & }
1
25.01.2021, 09:58

Теги

Похожие вопросы