Справка по fish shell с учётом конфигурации CachyOS (cachyos-config.fish). Текст выверялся на fish 4.5.0 (февраль 2026); апстрим с тех пор ушёл к 4.8.x, так что при расхождениях стоит сверяться с fish --version и релиз-нотами своей сборки.
Архитектура конфигурации
Fish загружает конфиги в определённом порядке, и это критично для понимания, почему одни настройки перезатираются другими.
Порядок загрузки:
~/.config/fish/conf.d/*.fish— фрагменты конфигурации (алфавитный порядок)~/.config/fish/config.fish— основной пользовательский конфиг- Внутри
config.fishвыполняетсяsource /usr/share/cachyos-fish-config/cachyos-config.fish— конфиг дистрибутива
Autoload-функции из ~/.config/fish/functions/ загружаются лениво при первом вызове, но sourced-определения из config.fish перезатирают autoload-функции с тем же именем. Поэтому если CachyOS определяет function history в своём конфиге, твой functions/history.fish не будет работать — переопределять нужно в config.fish после строки source.
Навигация по истории
Интерактивный поиск: Ctrl+R
Основной способ работы с историей в fish. Открывает fuzzy-поиск по всей истории команд. Начинаешь вводить фрагмент — fish фильтрует в реальном времени. Enter выполняет, Tab вставляет в строку для редактирования.
!! и !$ (эмуляция bash)
В конфиге CachyOS определены keybindings для ! и $, которые эмулируют bash-поведение:
!!— подставляет предыдущую команду целиком. Работает только интерактивно, при наборе в командной строке. Типичный сценарий:sudo !!.!$— подставляет последний аргумент предыдущей команды. Например, послеcat /etc/pacman.confвводnvim !$подставит путь.
Важно: это не bash-синтаксис !42 для запуска команды по номеру. В fish такого механизма нет нативно.
Команда history
CachyOS переопределяет history так, что она всегда выводит timestamps в формате %F %T. Вывод идёт от новых к старым (поведение fish по умолчанию). Номера команд не отображаются.
Полезные варианты вызова:
history search --prefix "git" # поиск по префиксу
history search --contains "docker" # поиск по подстроке
history delete --prefix "secret" # удалить команды по префиксу
history clear-session # очистить историю текущей сессии
Навигация стрелками
↑/↓ — перемещение по истории (как в bash). Но если начать вводить текст и нажать ↑, fish отфильтрует историю по введённому префиксу — это часто удобнее Ctrl+R для коротких запросов.
Алиасы и утилиты из конфига
Файловая система
ls, la, ll, lt — всё работает через eza (замена ls с иконками, git-статусами и цветами). l. — показывает только dotfiles.
ls → eza -al --color=always --group-directories-first --icons
la → eza -a (без long format)
ll → eza -l (long format без hidden)
lt → eza -aT (дерево)
.. через ...... — быстрая навигация вверх по директориям (от 1 до 5 уровней).
Pacman / система
update → sudo pacman -Syu
cleanup → sudo pacman -Rns (pacman -Qtdq) # удаление orphan-пакетов
fixpacman → sudo rm /var/lib/pacman/db.lck # разблокировка pacman
mirror → sudo cachyos-rate-mirrors # обновление зеркал
big → список установленных пакетов по размеру
gitpkg → количество -git пакетов
rip → 200 последних установленных пакетов с датами
Архивы
tarnow <имя> <файлы> → tar -acf (автоопределение формата по расширению)
untar <архив> → tar -zxvf
Диагностика
hw → hwinfo --short
jctl → journalctl -p 3 -xb (только ошибки текущей загрузки)
psmem → процессы отсортированные по RAM
psmem10 → топ-10 по RAM
Утилиты
backup myfile.txt # создаёт myfile.txt.bak
copy dir1 dir2 # cp -r с автоопределением директорий
tb # nc termbin.com 9999 — быстрый pastebin из pipe
Man pages
Конфиг настраивает рендеринг man-страниц через bat с подсветкой синтаксиса:
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
Это означает, что man будет показывать страницы с цветовой подсветкой вместо стандартного less.
Уведомления о завершении команд
Плагин done.fish отслеживает длительные команды и показывает desktop-уведомление, когда команда, выполнявшаяся дольше 10 секунд (__done_min_cmd_duration), завершается. Уровень urgency — low, чтобы не отвлекать.
LF — файловый менеджер
Привязка Ctrl+O запускает lf (терминальный файловый менеджер) с автоматическим cd в выбранную директорию при выходе. Конфигурация загружается из ~/.config/lf/lfcd.fish.
Полезные встроенные возможности fish
Автодополнение
Fish автодополняет команды, пути, аргументы и даже man-страницы из коробки. Подсказка отображается серым — Tab принимает целиком, → принимает посимвольно, Alt+→ принимает пословно.
Abbreviations vs aliases
В конфиге используются alias, но fish также поддерживает abbr — аббревиатуры, которые раскрываются при нажатии Space/Enter. Преимущество abbr: видишь полную команду перед выполнением, она попадает в историю в развёрнутом виде. Для критичных команд (типа cleanup) это безопаснее.
abbr -a update 'sudo pacman -Syu'
Переменные окружения
В fish вместо export VAR=value используется set -x VAR value. Для персистентных переменных — set -Ux VAR value (universal, сохраняется между сессиями). В конфиге __done_min_cmd_duration и __done_notification_urgency_level установлены через set -U, поэтому достаточно выполнить их один раз.
PATH
Добавление в PATH: fish_add_path ~/bin (идемпотентно, не дублирует). В конфиге также используется set -p PATH для prepend с ручной проверкой на дубликаты — fish_add_path делает это автоматически и предпочтительнее.
Структура конфигурации
~/.config/fish/
├── config.fish # основной конфиг (sourced при запуске)
├── conf.d/ # фрагменты (sourced до config.fish)
├── functions/ # autoload-функции (одна функция = один файл)
│ └── имя_функции.fish # файл должен совпадать с именем функции
└── completions/ # пользовательские автодополнения
Системные конфиги CachyOS: /usr/share/cachyos-fish-config/.
Частые операции
Создание персистентной функции
function greet
echo "Hello, $argv"
end
funcsave greet # сохранит в ~/.config/fish/functions/greet.fish
Проверка, откуда загружена команда
type -a history # покажет все определения: функции, builtins, внешние команды
functions history # покажет тело функции
Перезагрузка конфига без перезапуска
source ~/.config/fish/config.fish
Для функций из functions/ перезагрузка не нужна — autoload подхватит изменения при следующем вызове.
Связанные заметки
- tmux cheatsheet — мультиплексор, в котором обычно живёт эта оболочка
- Kitty terminal guide — терминал, запускающий fish
- Neovim: рабочая справка — редактор из того же рабочего набора
- CLI-инструменты поиска: ripgrep, fd, fzf, jq — утилиты, чьи биндинги и переменные окружения живут в конфиге оболочки
- Домашний десктоп на CachyOS — машина, на которой fish стоит оболочкой по умолчанию
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.