LINUX.ORG.RU

Поиск по истории команд в консоли по определенной маске

 ,


1

1

Добрый день,

С помощью клавиш вверх и вниз я могу перебирать историю команд в консоли. Но часто бывает ситуация, когда я помню часть команды которая мне нужна. В этом случае я бы хотел вбить часть команды в консоль и клавишами вверх/вниз пролистывать только те команды, которые удовлетворяют введенному шаблону.

То есть, нужнен аналог cat ~/.bash_history | grep some но в интерактивном режиме. Я вбиваю в консоль some и клавишами вверх вних перебираю только те команды, в которых участвовало это выражение.

Это возможно ? Как настроить ? Интересует вариант как для bash, так и для zsh.

Заранее спасибо.

★★

А ctrl+r как в zsh и bash работает? Не оно?

another ★★★★★
()
Последнее исправление: another (всего исправлений: 1)

Из мана про баш:

Если вы помните кусочек команды которую хотите найти, то можно просто нажать в bash'e комбинацию Ctrl + R и набрать этот кусочек. bash вам покажет последнюю команду с такой подстрокой. Можно продолжать нажимать Ctrl + R и bash будет выдавать более старые подходящие команды, подходящие под искомую строку.

another ★★★★★
()

Можно еще сделать так, чтоб ты ввел часть команды, которую помнишь, а потом стрелками вверх-вниз вызываешь «продолжения» из истории. Как ^R, только чуть проще.

alozovskoy ★★★★★
()

cat ~/.bash_history | grep some

grep some ~/.bash_history

anonymous
()
Ответ на: комментарий от another

Кто бы ещё сказал комбинацию для обратного поиска, а то бывает при долгом поиске проскакиваешь нужную команду

zolden ★★★★★
()
Ответ на: комментарий от zolden

ЕМНИП, ctrl+f (на работе винда, проверить не могу)

feofan ★★★★★
()

/etc/inputrc:

# map "page up" and "page down" to search history based on current cmdline
"\e[5~": history-search-backward
"\e[6~": history-search-forward

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 1)

~/.zshrc или /etc/zshrc:

# create a zkbd compatible hash;
# to add other keys to this hash, see: man 5 terminfo
typeset -A key

if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" up-line-or-search
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" down-line-or-search
fi

# Finally, make sure the terminal is in application mode, when zle is
# active. Only then are the values from $terminfo valid.
function zle-line-init () {
    echoti smkx
}
function zle-line-finish () {
    echoti rmkx
}
zle -N zle-line-init
zle -N zle-line-finish

UVV ★★★★★
()
Последнее исправление: UVV (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.