Что такое точно буфер scrollback и scrollback?

Вы скопировали целую фс, но Linux не монтирует iso9660 непосредственно (но через предохранитель с помощниками пространства пользователя), таким образом, он перестал работать.

Не используйте DD, чтобы сделать копию, самый легкий способ создать живую флеш-карту usbcreator-gtk в Ubuntu или Unetbootin;

Моим любимым путем является копия файлы ISO и установка grub2 вручную на флеш-картах, это - немного трудное, выдерживают сравнение с другими двумя. Но Вы получили поставленный grub2.

24
23.05.2017, 15:40
1 ответ

Это немного сложный вопрос. Я постараюсь ответить на ваши вопросы по очереди, но сначала общее описание:

Буфер прокрутки реализован эмулятором вашего терминала (xterm, Konsole, GNOME Terminal). Он содержит весь текст, который выводится на экран, включая как стандартный вывод, так и стандартную ошибку от каждой программы, которую вы запускаете в терминале. Это полностью терминальная функциональность, позволяющая вам посмотреть на прошлый вывод, который, возможно, прокрутился мимо вас, или проверить, что же было сказано ранее.

Буфер прокрутки можно рассматривать как длинную страницу лог-выхода, а терминальное окно - как окно, в котором в любой момент времени отображается только его часть. Если вы не прокрутили ни одну из них, то вы смотрите только на хвостовую часть буфера. Обычно в терминале настраивается ограничение на количество строк, которые он отслеживает, прежде чем начать забывать.

Предположим, что лимит - 1000 строк. Для первой тысячи строк вывода в вашей сессии вы просто добавляете их в буфер, и можете прокручивать вверх прямо к началу сессии. Как только Вы получите 1001-ю строку вывода, первая строка в буфере будет стерта, а самая дальняя, которую Вы можете прокрутить, будет второй строкой Вашей сессии. Буфер всегда будет содержать самые последние тысячи строк вывода, которые отображались на вашем экране, и вы можете прокрутить вверх, чтобы посмотреть на более ранний вывод в любое время.

  • Означает ли это "функция" как в "подпрограмме" или как в "функции"?

    Это "функция" как в "функции". Эмулятор терминала имеет функцию, которая записывает то, что находится на экране, и позволяет прокручивать его вверх и вниз. На некоторых системах приставки также поддерживают ограниченную прокрутку.

    Это становится немного сложнее, когда вы выбрасываете экран в микс. В этот момент screen эмулирует сам буфер прокрутки - поэтому вы можете копировать и вставлять из него внутри программы, а не только с (скажем) выбором X.

  • Есть ли стандарт Unix или API для этого буфера прокрутки?

    Короткий ответ - нет, он просто предоставляется вашим терминалом. Более длинный ответ мы получим внизу.

  • В "стеке" программ, таких как vim, запущенных на экране, запущенном в ssh, запущенном в терминальном эмуляторе, какая из этих программ управляет буфером прокрутки?

    В случае с vim и bash, они им вообще не управляют (опасно, опять же, внизу). Ваш терминал предоставляет буфер прокрутки для всех программ внутри него, начиная с вашего shell'а. Экран screen, как упоминалось выше, сам имитирует прокрутку.

  • Я также использовал экран для сброса прокрутки в файл. В этом файле было много белого пространства сверху, и кажется, что "вид", который показывает мне мой терминальный эмулятор - это просто несколько строк внизу буфера.

    Это внутренний буфер экрана . То, что находится на вашем экране в то время, как правило, будет то, что находится в самом низу буфера.

  • Поэтому такая программа как vim может "очистить" все мое терминальное окно, потому что получает временный доступ к буферу прокрутки родительского оболочки?

    Вот одна часть, где она становится намного сложнее. Практически все терминальные эмуляторы на базе X имитируют VT100, и одно, что они там делают, это поддерживают "Альтернативный буфер экрана". В отличие от обычного буфера, который используется для большинства терминальных взаимодействий с последовательным выводом, альтернативный буфер экрана - это просто точный размер терминала. В нем нет прокрутки вверх или вниз, потому что он не больше того, что отображается.

    Идея заключается в том, чтобы позволить полноэкранному приложению делать то, что ему нужно, не мешая ничему, что у вас уже было на экране, а затем позволить вам вернуться именно к тому дисплею, который у вас был раньше. Поэтому, когда вы вводите vim, оно заполняет весь экран, но когда вы его покидаете, то терминальный вывод, который у вас был заранее - все ваши прошлые подсказки и вывод команд - возвращается обратно. vim при старте переключается в буфер альтернативного экрана и при выходе из него возвращается в обычный буфер.

    Этот альтернативный буфер - одно из предостережений, о котором я упоминал выше. Иногда программа действительно имеет возможность указывать терминалу, что делать с буфером.

    screen - это другая программа, которая делает это, поэтому функциональность прокрутки вашего терминала, как правило, не работает во время сеанса работы с экраном - screen эмулирует сам буфер прокрутки, поэтому вам приходится использовать его внутреннюю функциональность, чтобы добраться до старого вывода.

  • Или vim использует свой собственный буфер прокрутки, который каким-то образом накладывается поверх родительского буфера прокрутки?

    Я в основном ответил на это в предыдущем вопросе, но короткий ответ на этот конкретный вопрос заключается в том, что vim получает свой собственный временный буфер, без прокрутки, из терминала, а затем выполняет внутреннюю прокрутку всех ваших документов.

Все те исключения, о которых я упоминал:

Все снова становится немного сложнее. Я сказал, что приложения не имеют никакого контроля над прокруткой, и что она полностью обеспечивается терминалом. В некоторых случаях, с некоторыми терминалами, взаимодействие ограничено. Программа распечатывает определенные экранирующие последовательности - если вы когда-нибудь использовали ручную раскраску терминала в прошлом, вы увидите, как они выглядят - и терминал может интерпретировать их и изменять свое поведение, или даже посылать обратно информацию в программу. Какие из доступных экранирующих последовательностей описаны в БД termcap (терминальная возможность).

Некоторые терминалы поддерживают ограниченные запросы и манипуляции с буфером прокрутки. Многие производные xterm имеют экранирующие последовательности, которые направляют терминал на прокрутку его вида. Многие терминалы также поддерживают указание определенной области экрана для прокрутки, оставляя все остальное нетронутым. Это имеет тенденцию ломать буфер прокрутки.

Почти все терминалы поддерживают последовательности для перемещения курсора по экрану, таким образом библиотека ncurses способна обновлять все различные части дисплея. Можно посмотреть на последовательности VT100, поддерживаемые xterm. Способ, которым они взаимодействуют с буфером прокрутки, может иногда быть немного странным, особенно в случае, когда что-то реализует свое собственное поведение прокрутки, например, команда less. Вы можете получить дублированные или пропущенные строки при прокрутке, потому что less перерисовывает текст сверху так, как не ожидал ваш терминал. Другие программы иногда заполняют буфер несколькими копиями всего дисплея.

29
27.01.2020, 19:41

Теги

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