skip to content
Архитектура в курилке
kevin

Thefuck, или лучшее имя для CLI

/ чтиво на 2 минуты

Содержание

TLDR

GitHub

Terminal window
# Для macOS
brew install thefuck
# Для Arch
sudo pacman -S thefuck

Где-то в .bashrc, .zshrc:

Terminal window
eval $(thefuck --alias)

Шта

Я наткнулся относительно недавно на статью, в которой автор говорил о важности маленьких инструментов или «трюков», из которых состоит работа IT-шника. Будь то вспомогательные штуки вроде fzf, или скрипты, которые надо быстро дёрнуть для починки или проверки микросервисов на работе.

Мне очень близка эта мысль. Так у меня у самого полно каких-то alias-ов, которые каждый день помогают что-то делать быстро, например, один из самых частых - это gen_uuid:

Terminal window
gen_uuid() {
python3.11 -c "import uuid; print(uuid.uuid4())"
}
alias uuid="gen_uuid"

Очень удобно, когда где-то в API надо что-то протестировать и нужен рандомный UUID, а не как у xkcd:

xkcd Random Number

Вообще приколы с python -c очень удобны, чтобы выносить 1-2 строки кода на питоне, а не сохранять где-то целый скрипт, чтобы его потом вызывать. Хотя может это и правильный подход. Те же модели Anthropic постоянно предлагают портянку кода через этот python -c, только в их случае всё это еще и обрамляется целой тонной экранирований, из-за чего порой просто нереально читать. В общем, как и всегда - с большой силой приходит большая ответственность.

Но сейчас не об этом.

Сейчас я хочу рассказать тебе об одном из моих guilty pleasure, который может быть вполне себе серьезным подспорьем.

Это утилита thefuck.

Это по сути своей набор эвристик, чтобы какие-то опечатки или же ошибки в командах можно было поправить одной простой командой:

Terminal window
fuck

Это просто гениально по своей сути! Автор, насколько я понимаю, англоговорящий, из-за чего эта фраза, я более чем уверен, не раз звучала где-то в офисе.

Ставим по классике:

Terminal window
# Для macOS
brew install thefuck
# Для Arch
sudo pacman -S thefuck

Дальше добавляем инициализацию в .zshrc1:

Terminal window
eval $(thefuck --alias)

А потом происходит магия - эвристики понимают, что за команда должна была быть, и подставляют правильную.2

Пример из репы

Мой постоянный флоу - это публикация новой ветки:

Git push

Да, понимаю, что можно настроить автосоздание remote-а в конфиге git-а. Можно через IDE все делать. Не знаю, каждый раз немного гыгыкаю, как Кевин из «Офиса», да и вообще это удобно, чтобы понимать, есть ли такая ветка или нет.

На самом деле приколов много. По умолчанию thefuck ждет подтверждения команды, которая будет выполнена, но можно пропустить этот выбор МАКСИМАЛЬНО КРУТЫМ СПОСОБОМ:

Terminal window
fuck --yeah

Или же, если исправленная команда тоже может оказаться ошибочной, можно запустить рекурсивно:

Terminal window
fuck -r

Всегда можно переопределить ключевое слово для триггера:

Terminal window
eval $(thefuck --alias BLYAT)

Ну или если надо почему-то SFW-вариант (safe for work):

Terminal window
eval $(thefuck --alias оказия)
Оказия

Можно еще настраивать и создавать свои правила. Мне, к примеру, приходит в голову такое: на виртуалке, когда кончается место, писать в терминал советы - мол, сделай то, то и это.

Можно включить ЭКСПЕРИМЕНТАЛЬНЫЙ МОМЕНТАЛЬНЫЙ режим, чтобы ошибки сразу же фиксили сами себя.

В общем, тут просто широкий простор для фантазии, думаю, много кому может быть полезно. Лично я так на все свои рабочие тачки ставлю. Может, даже стоит все-таки ставить и на VM-ки…

В общем, пользуйся, кринжуй, кайфуй - вот тебе еще одна тулзовина в коробочку с инструментами!

Берегите себя и своих близких!

Сноски

  1. Ну или куда тебе удобно. Тут уж по классике, если надо объяснять, то не надо объяснять. ↩

  2. Тут кто-то может сказать, что лучше настроить себе alias на случай опечаток, но, как и все в этом мире, это уже вкусовщина. ↩