Как я могу получить доступ к буферу истории в sh? (не в Баше)

Есть ли история команд в sh , например, как получить к ней доступ, а также, как обеспечить ее четкость?

Чтобы прояснить оболочку здесь: допустим, вы вошли в систему, отличную от Gui Linux, и $ SHELL не настроен на Bash, а скорее в Dash или в какой-либо такой Bourne-оболочке, которая может быть.

Страницы с man ссылались на команду «history», которую я видел в некоторых BSD-системах, но на самом деле это не было в моей оболочке, и я не мог легко найти ответ на последующих страницах sh man и info.

Комментарий decriptor в этом сообщении заставил меня подумать, может быть, это больше связано с необходимостью узнать о ключевых привязках в sh, а не о чем-то вроде различий между оболочками.

Для будущих читателей, вот отличный пост по истории оболочки .

  • У меня есть многострочная строка, которую мне нужно перебрать, но я не использую bash. Совет?
  • подстановка команды bash с перенаправлением: дескриптор файла
  • Вызов скрипта с sudo игнорирует shebang
  • В сценарии проверьте, не поступает ли стандартный ввод из файла или канала
  • dash: строка синтаксического анализа на две переменные
  • Пара арифметических связанных команд, Dash, POSIX shell, sh, Increment
  • Обработка опций Getopts, возможно ли добавить не переносимый ?
  • Получение истинного абсолютного пути сценария в / bin / sh
  • 2 Solutions collect form web for “Как я могу получить доступ к буферу истории в sh? (не в Баше)”

    если он явно не задан, нет истории оболочки оболочки по умолчанию. чтобы проверить, есть ли у вас это или нет, команда env|grep -i hist может быть выполнена, и если вы видите переменные, такие как histfile и т. д. (может быть заглавными), это означает, что ваша история оболочки включена, и вы должны увидеть, где история файл находится. Чтобы очистить, вы можете сделать любой достойный метод, кроме удаления файла

    Не все оболочки поддерживают историю. dash имеет ограниченную поддержку истории через команду fc если она скомпилирована с поддержкой libedit, но не поддерживает ее в противном случае. dash не удается сохранить файл истории.

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

    Некоторые другие оболочки (в частности, но и другие) используют readline, что обычно сохраняет историю в вашем домашнем каталоге как ~/.*_history , причем * заменяется именем программы. Например, Python 3 использует readline и сохраняет свою историю в ~/.python_history .

    В зависимости от оболочки местоположение сохранения может быть или не быть настраиваемым. bash и zsh используют HISTFILE (все кепки). Если ваша оболочка настроена правильно, это не должно быть переменной окружения, поэтому, если вы видите ее в env вы сделали ошибку (но она все равно должна отображаться на выходе set или printf %s\\n "$HISTFILE" ).

    Если программа не поддерживает историю (например, ed , shell-скрипты с использованием read или более старых версий mysql ), существует кросс-платформенное приложение, называемое rlwrap которое будет использовать readline, чтобы дать ему rlwrap вкладку, стрелку обработки и истории.

    Interesting Posts

    несколько путей библиотеки ffmpeg, как можно исключить устаревшие установки ffmpeg?

    Как предотвратить зависание чувствительных аргументов CLI в журналеctct при использовании sudo?

    Как установить skype на arch

    Как я могу направить цветное дерево на меньшее или большее?

    Почему denyhosts не запрещает * некоторые * грубые силы root SSH попытки входа?

    Виртуальный бокс Oracle и клавиатурные шпионы

    Использовать локальное (на диске) зеркало для debootstrap

    Fedora 23 как установить драйвер для BCM43142 802.11?

    Отложить неважные обновления ОС на Fedora (dnf)

    Как отлаживать ввод с устройства ввода (/ dev / input / event *)

    В Linux, (как) я могу «горячую отключить» память?

    Как правильно установить R в Debian?

    Какие приоритеты можно использовать в модулях net_prio групп?

    Установка альтернативных устройств (с различными вариантами крепления) в одной точке подключения

    Изменение сетевых настроек в зависимости от SSID

    Linux и Unix - лучшая ОС в мире.