Как я могу сохранить контент, который я читал от man после того, как я ушел?

Итак, мы используем man something , чтобы получить информацию об использовании и другую информацию о команде Any , когда соответствующий раздел информации найден, я бы хотел чтобы выйти из команды man , оставив информацию на экране. Итак, я могу ввести следующую команду с рефери, указанным выше. Есть ли способ добиться этого?

24
задан 26 June 2016 в 18:51
7 ответов

Я считаю, что дело не столько в самом man , сколько в выбранном вами пейджере (переменная среды PAGER ) в сочетании с используемым терминалом .

Я предполагаю, что ваш пейджер, вероятно, на меньше (типичный пейджер по умолчанию в настоящее время и соответствует описанию).

less имеет параметр -X , который может привести к поведению в соответствии с тем, что вы ищете.

   -X or --no-init
          Disables sending the termcap initialization and deinitialization
          strings  to  the  terminal.   This is sometimes desirable if the
          deinitialization string does something unnecessary, like  clear‐
          ing the screen.

Например, PAGER = "less -X" man man можно использовать для проверки, и если вы сочтете такое поведение предпочтительным вы можете установить это значение навсегда для PAGER .

38
ответ дан 28 November 2019 в 20:14

Если вы используете меньше пейджера (что очень часто), вы не нужно заниматься изменением вашего пейджера, просто перенаправьте ввод-вывод:

man <все, что вы хотите man> | cat -

Это распечатает копию на терминал, чтобы вы могли прокрутить вверх, когда вам это нужно.

11
ответ дан 28 November 2019 в 20:14

Без изменения пейджера, решение с конвейерами , который может работать в большинстве сред:

Примеры для man ls

  • Оставить всю страницу man на экране man ls | cat
  • Прочитать разбитый на страницы вывод man с возможностью оставить его в любое время с помощью q : man ls | подробнее
  • filter man содержимое с шаблоном и сохраняет совпадающие строки на экране: man ls | grep somestring
2
ответ дан 28 November 2019 в 20:14

сейчас 2016 год, просто откройте второй терминал, вкладку или окно или прочитайте человека в Интернете ..

-3
ответ дан 28 November 2019 в 20:14

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

Это команды smcup и rmcup , которые были разработаны, чтобы разрешить включение и перемещение где разрешена команда cup (положение курсора).

Вот функция оболочки, которую я использовал для автоматизации задачи, она работает по крайней мере с Solaris и, вероятно, с большинством дистрибутивов Linux:

fixterminfo()
{
  (
    [[ ! -d /tmp/terminfo ]] && { mkdir /tmp/terminfo || return ; }
    cd /tmp/terminfo || return
    TERM=xterm infocmp > xterm.src.org
    sed -e 's/rmcup=[^,]*,//'  -e 's/smcup=[^,]*,//' xterm.src.org > xterm.src
    if diff xterm.src.org xterm.src
    then
      echo xterm terminfo already patched
      return
    fi
    TERMINFO=/tmp/terminfo tic xterm.src
    if [ -f /usr/share/lib/terminfo/x/xterm ] ; then
      XTERM=/usr/share/lib/terminfo/x/xterm
    else
      if [ -f /lib/terminfo/x/xterm ] ; then
        XTERM=/lib/terminfo/x/xterm
      else
        if [ -f /usr/share/terminfo/x/xterm ] ; then
          XTERM=/usr/share/terminfo/x/xterm
        else
          echo xterm terminfo not found ; return
        fi
      fi
    fi
    if [ ! -f ${XTERM}.org ]
    then
      sudo cp ${XTERM} ${XTERM}.org || return
    fi
    cat /tmp/terminfo/x/xterm | sudo dd of=${XTERM}
  )
}

Если ваша запись в терминале не возвращается к xterm , вам следует заменить xterm правильным именем терминала в скрипте.

5
ответ дан 28 November 2019 в 20:14

Даже на своих серверах (FreeBSD) я устанавливаю X и xfce. Затем я выделяю большой буфер (например, 10 000 строк) для эмуляторов терминала, чтобы я мог полностью прокрутить страницу руководства в одном из них и использовать отдельный экземпляр терминала для сборки команды. Работает приятно.

-3
ответ дан 28 November 2019 в 20:14

Вы можете передать вывод по конвейеру команде cat

man man|cat

или использовать ее вместо пейджера по умолчанию, как в этом примере, который вызывает man на себе:

PAGER=cat man man
3
ответ дан 28 November 2019 в 20:14

Теги

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