Опенсорс
May 25

The Fuck: когда консоль понимает тебя с полу... опечатки! 🤬🐍

Печатаешь команду, жмешь Enter, и... ошибка. Обидная опечатка, забытый sudo, неправильный флаг. Рука сама тянется к лицу, а в голове крутится то самое слово. Что ж, теперь это слово может стать вашим лучшим другом в терминале! Знакомьтесь – The Fuck, утилита на Python, которая исправляет ваши предыдущие консольные промахи.

Демонстрация работы The Fuck: исправление ошибок в консоли

Как это работает?

Все до безобразия просто. Вы вводите команду, она фейлится. Вместо того чтобы перепечатывать все заново или копаться в history, вы просто пишете: fuck

И The Fuck анализирует предыдущую команду и ее вывод, пытаясь подобрать подходящее правило для исправления. Если находит – предлагает вам уже исправленный вариант, который можно запустить, отредактировать или отменить.

Вот несколько классических примеров:

Забыли sudo?

➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]

Опечатка в команде git?

➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

➜ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]

Или просто puthon вместо python?

➜ puthon
No command 'puthon' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
 Command 'python' from package 'python3' (main)
zsh: command not found: puthon

➜ fuck
python [enter/↑/↓/ctrl+c]

Под капотом у The Fuck – целая система правил, покрывающая множество распространенных ошибок: от опечаток в именах команд (git brnch -> git branch) и неправильного использования аргументов до проблем с правами доступа и специфичных ошибок для разных утилит (docker, aws, npm, pip и многих других).

Главная фишка The Fuck – это не просто автозамена. Утилита анализирует контекст ошибки и предлагает наиболее вероятное логическое исправление.

Ключевые фичи и почему это стоит попробовать

  • Экономия времени и нервов: Самое очевидное. Меньше перепечатываний, меньше фрустрации.
  • Огромное количество правил "из коробки": Покрывает большинство ежедневных сценариев для git, apt, pip, docker и десятков других инструментов.
  • Простота установки и настройки: Пара команд – и готово.
  • Кастомизация:
    • Можно настроить алиас (например, eval $(thefuck --alias FUCK), чтобы ругаться ГРОМКО.
    • Отключить подтверждение изменений (fuck --yeah или fuck -y).
    • Рекурсивное исправление (fuck -r) до победного.
  • Расширяемость: Можно создавать свои собственные правила под специфичные задачи.
  • Python под капотом: Приятно для Python-разработчиков, и потенциально проще для контрибьюта.

Установка и первый "фак"

Требования минимальны: python (3.5+) и pip.

Основной способ установки (кроссплатформенный): pip3 install thefuck --user.

Или через пакетные менеджеры:

  • macOS (Homebrew): brew install thefuck
  • Ubuntu/Mint:sudo apt update sudo apt install python3-dev python3-pip python3-setuptools pip3 install thefuck --user
  • Arch Linux: sudo pacman -S thefuck
  • Другие варианты установки можно найти в официальном README.

Самое важное после установки – добавить алиас в конфигурацию вашей оболочки (например, .bashrc, .zshrc, .config/fish/config.fish и т.д.): eval $(thefuck --alias)

После этого перезапустите сессию терминала или выполните source ~/.bashrc (или ваш соответствующий файл конфигурации).

Немного о продвинутых настройках

Для тех, кто хочет тонко настроить поведение утилиты, есть файл ~/.config/thefuck/settings.py или переменные окружения (THEFUCK_RULES, THEFUCK_REQUIRE_CONFIRMATION, THEFUCK_PRIORITY и т.д.). Можно управлять списком активных правил, временем ожидания команды, отключать цвета и многое другое. Подробнее – в секции Settings в README.

Конечно, слепо доверять исправлениям не стоит (особенно с отключенным подтверждением), но в большинстве случаев The Fuck действительно угадывает, что вы имели в виду.