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

Как да превърнем историята на 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'
📖
Може да ви е интересно още
UniGetUI: Магическото копче, което инсталира всичко вместо вас

Стъпка 4: Прилагане на промените

За да влязат промените в сила, изпълнете:

source ~/.bashrc

Как работи?

  1. Натискате Ctrl+H.
  2. Отваря се панел, който заема 45% от екрана ви.
  3. Започвате да пишете части от командата (например "docker" или "git"). fzf ще намери съвпаденията, дори да сте допуснали малка печатна грешка.
  4. Използвате стрелките, за да изберете командата, и натискате Enter.
  5. Командата се появява директно на вашия команден ред, готова за изпълнение или редакция.
Търсене в историята на Bash с fzf

Заключение

С тази конфигурация превръщате терминала си в много по-интуитивна работна среда. Вече няма нужда да помните сложни параметри или да превъртате безкрайно историята – всичко е на един клик (или клавиш) разстояние!

📖
Може да ви е интересно още
aliasctl – Модерен мениджър за Bash алиаси

open source spirit
🛠️
$

Намерихте материала за полезен?

Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума. Всяко дарение помага за поддръжката и развитието на портала.

PayPal Revolut

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 8 - 7 ? (въведете числото)