Bash - инкрементный поиск в истории (ctrl+r) - сопоставление нескольких не смежных слов

Пакет hardinfo (http://sourceforge.net/projects/hardinfo.berlios/) является довольно достойной системой benchmarker с хорошим GUI. Самый простой способ сравнить эти два состоял бы в том, чтобы сравнить, каждый сохраняет результаты и затем сравнивает его с Вашим сравнительным тестированием другого.

Править

В зависимости от Вашего дистрибутива у Вас может уже быть установленный hardinfo, например, на Lubuntu, это называют "Системным Профилировщиком и Сравнительным тестом".

8
14.06.2015, 11:07
2 ответа

Бэш справочник говорит :

Readline предоставляет команды для поиска в истории команд строк, содержащих указанную строку

Вам нужен регенерация вместо фиксированной строки.

Try hstr:
1. Installation
2. Configuration

Вы должны увидеть что-то подобное с hstr:
enter image description here

Update:
:
. Другим инструментом является fzf.

  1. Install: git-клон - глубина 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install

  2. Re-источник вашего ~/.bashrc: Источник ~/.bashrc

Вы должны увидеть что-то подобное с помощью fzf: enter image description here

3
27.01.2020, 20:13

Я не знаю ни одного встроенного способа сделать это, но вы можете написать небольшую функцию для выполнения grep и редактирования файла истории, чтобы результаты отображались в конце, а затем вы могли легко выбрать один из совпадений, просто двигаясь вверх по новой истории. (Это меняет порядок команд в вашей истории).

Вот такая функция. Я предполагаю, что вы хотите найти 2 (или более) слова независимо от того, в каком порядке они появляются. Вы можете установить максимальное количество совпадений, которое вы хотите принять; здесь 10. Я также предполагаю, что начальная команда grep не возвращает громоздкую строку, или вам придется использовать временные файлы вместо строк bash.

hist(){
    local maxmatches=10 word=$1 matches new nummatches
    shift
    history -w # write out history to HISTFILE
    matches=$(grep -e "$word" $HISTFILE)
    for word
    do   new=$(echo "$matches" | grep -e "$word")  || return # if str too big
         matches=$new
    done
    nummatches=$(echo "$matches" | wc -l)
    echo "$nummatches matches"
    if [ $nummatches -gt 0 -a $nummatches -le $maxmatches ]
    then echo "$matches" >>$HISTFILE # add matches to end of file
         history -c # clear history
         history -r # read history from file
         history $nummatches # show last few lines
    else echo "zero or too many matches. (max $maxmatches)"
    fi
}

Если вы не хотите, чтобы ваши слова соответствовали шаблону регулярного выражения, используйте fgrep вместо grep. Если вам нужен только указанный порядок, используйте одно слово, например «httpd. * Awk». Вы также можете удалить цикл for, используя только одно слово таким образом.

2
27.01.2020, 20:13

Теги

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