4/27/2009

Поиск по истории команд в bash

Маленькие хитрости при работе с историей введенных в терминале команд.

1. Жмем в терминале Ctrl+R и начинаем набирать текст, который хотим найти.
Если совпадений несколько, то для перебора можно использовать стрелки вверх, вниз и клавиши PageUp и PageDown.

2. Сначала пишем начальные символы текста, который хотим найти, затем перебираем варианты нажимая клавиши PageUp, PageDown.

3. Команда history | grep текст_для_поиска. Тут я думаю все понятно.

13 комментариев:

  1. Что-то у меня только третий пункт работает :) Первый и второй - нет. Может, что-нибудь в профайле прописать нужно? Переменные какие-нибудь?

    ОтветитьУдалить
  2. В профайле ничего писать не нужно.
    В чистом Bash работает =) Только что проверил.
    Жмем CTRL+R стандартная строка bash'a меняется на такое:
    (reverse-i-search)`': После этого набираем текст, который нужно найти.
    Какая у тебя используемая оболочка:

    ОтветитьУдалить
  3. bash --version
    GNU bash, version 3.2.39(1)-release (i686-pc-linux-gnu)

    Gentoo Linux

    ОтветитьУдалить
  4. GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) от Ubuntu 8.10

    Не знаю в чем дело, но PageUpы не работают. В доках упоминания про PageUpы не нашел. Стрелки верх-вниз работают для перебора предыдущих команд, а не для перебора совпадений.

    Для перебора совпадений используется повторное нажатие Ctrl+r (будет листать совпадения назад по списку). Чтобы листать вперед - Ctrl+s.

    ОтветитьУдалить
  5. Александр, скорее всего у тебя переопределены сочетания клавиш в inputrc.

    ОтветитьУдалить
  6. Da, skore imenno tak i est.
    Esli interesno, to mogu podelit'sa.

    ОтветитьУдалить
  7. Если не трудно, было бы здорово.

    ОтветитьУдалить
  8. Вот мой конфигурационный файл
    inputrc

    ОтветитьУдалить
  9. Небольшой совет. Никогда не вводите "рекурсивные" команды с текущей директорией в качестве параметра: 'chown -R user:group' . или ещё хуже 'rm -frd .'

    Если вы случайно возьмёте эту команду из истории, то скорее всего текущая директория окажется ... другой, например, / :) А в остальном, CTRL+R очень полезная команда. Она, кстати, работает и в mysql.

    ОтветитьУдалить
  10. leonko.blogspot.com/2011/07/bash.html
    Описано как правельно работать с рекурсивным поиском.

    ОтветитьУдалить
  11. Спасибо за ссылочку.
    Почитаем

    ОтветитьУдалить
  12. Спасибо!
    2-ой вроде удобнее но не работает на сервере "из коробки"
    1-ый работает, буду использовать Ctrl+R.
    ОС. Centos 7!
    Thanx!

    ОтветитьУдалить
  13. P.S. Работает с оговоркой! У меня Bash.
    1) стрелочки и пейджапы - выбирают команду из истории.
    2) последующие Ctrl+R выводят более старые совпадения если таковые имеются

    ОтветитьУдалить