Как да превърнем историята на Bash в мощна търсачка с fzf

Ако искате да оптимизирате работата си в терминала, правилното търсене в историята на Bash с fzf е едно от най-добрите подобрения, които можете да направите. Стандартното Ctrl+R често е ограничено, но чрез търсене в историята на Bash с fzf вие получавате визуален контрол и бързина
Какво е fzf?
fzf е универсален "fuzzy finder" (търсачка по приблизително съвпадение). Той позволява светкавично филтриране на текст и е идеален за управление на огромни списъци с команди.
Предимства при търсене в историята на Bash с fzf
Ще настроим терминала така, че при натискане на клавишната комбинация Ctrl+H, да се отваря стилен прозорец с вашата история, подредена хронологично, с европейски формат на датата и предварителен преглед на командите.
Стъпка 1: Инсталация на fzf
Първо трябва да инсталирате самия инструмент. За Debian/Ubuntu базирани дистрибуции използвайте:
sudo apt update
sudo apt install fzf
Стъпка 2: Конфигуриране на хронологията (History)
За да има смисъл от мощна търсачка, ви трябва голяма история. Отворете вашия .bashrc файл:
nano ~/.bashrc
И добавете или променете следните редове, за да съхранявате до 1 милион команди с правилен формат на датата:
# Настройки на историята
HISTFILESIZE=1000000
HISTSIZE=1000000
export HISTTIMEFORMAT="%d-%m-%Y %T " # Европейски формат: ДД-ММ-ГГГГ
shopt -s histappend
export PROMPT_COMMAND='history -a'
Стъпка 3: Магията – Интеграция на fzf в Bash
Сега добавяме специална функция в края на същия файл (~/.bashrc), която ще "напомпа" визуално нашето търсене:
# Функция за визуално търсене в историята с fzf
find_history_fzf() {
local selected_command
# Извежда историята, пуска fzf с цветове, заглавие и преглед
selected_command=$(history | fzf --height 45% \
--layout=reverse --border --ansi \
--header="📜 ИСТОРИЯ НА КОМАНДИТЕ (Ctrl+H)" \
--tiebreak=index \
--color="header:italic,fg:110,border:93" \
--preview='echo {}' --preview-window=bottom:3:wrap)
# Ако е избрана команда, тя се почиства от датата и се поставя на реда
if [ -n "$selected_command" ]; then
local clean_cmd=$(echo "$selected_command" | sed -E 's/^[ ]*[0-9]+[ ]+[0-9]{2}-[0-9]{2}-[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}[ ]+//')
READLINE_LINE="$clean_cmd"
READLINE_POINT=${#READLINE_LINE}
fi
}
# Свързваме функцията с клавишната комбинация Ctrl+H
bind -x '"\C-h": find_history_fzf'
📖
Стъпка 4: Прилагане на промените
За да влязат промените в сила, изпълнете:
source ~/.bashrc
Как работи?
- Натискате Ctrl+H.
- Отваря се панел, който заема 45% от екрана ви.
- Започвате да пишете части от командата (например "docker" или "git").
fzfще намери съвпаденията, дори да сте допуснали малка печатна грешка. - Използвате стрелките, за да изберете командата, и натискате Enter.
- Командата се появява директно на вашия команден ред, готова за изпълнение или редакция.

Заключение
С тази конфигурация превръщате терминала си в много по-интуитивна работна среда. Вече няма нужда да помните сложни параметри или да превъртате безкрайно историята – всичко е на един клик (или клавиш) разстояние!
📖Намерихте материала за полезен?
Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума.
Всяко дарение помага за поддръжката и развитието на портала.
