Десять лет в девопсе. Десять. И я гуглю tar -xzf. Не раз в год — раз в неделю. Ну, может раз в десять дней, если повезёт. Открываю хром, набираю «tar extract gz linux», пролистываю три рекламы, нахожу ответ на SO, копирую, вставляю, закрываю вкладку. Через неделю — по новой.

Я не идиот. Точнее, может и идиот, но не поэтому. Просто tar — это такой синтаксис, который у меня физически отказывается залезать в долговременную память. Там дефис или нет? xzf или xfz? Или zxf? Вроде порядок не важен? Или важен?..

Короче. Месяц назад я написал скрипт, который это решил. А потом скрипт решил больше, чем я хотел.

Зачем вообще

Я выгрузил историю хрома за последний год — ну, не целиком, отфильтровал по командной строке. Там tar extract — 47 раз. find files larger than — 31. kill process on port — 28. crontab format — 22 раза, Карл. Crontab. Я его настраиваю на каждом втором сервере.

Всего насчитал 168 запросов на вещи, которые я по идее должен знать. Ну ладно, find -exec {} \; я никогда не помнил, бог с ним, но chmod 755?

По 30 секунд на запрос (если сразу нашёл) — это полтора часа в год. Не катастрофа, да. Но раздражает неимоверно.

И я подумал — а что если просто спрашивать терминал по-русски?

Скрипт

Требования: ноль внешних зависимостей, потому что я не собираюсь тащить pip install на каждый прод-сервер (хотя кого я обманываю — на проде я его в итоге не поставил, но об этом позже). Любой LLM-бэкенд. И подтверждение перед выполнением — это не обсуждается.

#!/usr/bin/env python3
"""ai-bash: спрашиваю по-русски — получаю bash"""
import sys, os, json, urllib.request

API_KEY = os.getenv("OPENAI_API_KEY", "")
API_URL = os.getenv("AI_BASH_URL",
                     "https://api.openai.com/v1/chat/completions")
MODEL   = os.getenv("AI_BASH_MODEL", "gpt-4o-mini")

SYSTEM = (
    "Ты — терминальный ассистент. Пользователь описывает задачу "
    "на русском языке. Отвечай ТОЛЬКО bash-командой — одной строкой. "
    "Без пояснений, без markdown, без обратных кавычек. "
    "Несколько команд — через && или |. ОС: Linux."
)

def ask(question: str) -> str:
    body = json.dumps({
        "model": MODEL,
        "temperature": 0,
        "max_tokens": 200,
        "messages": [
            {"role": "system", "content": SYSTEM},
            {"role": "user",   "content": question},
        ],
    }).encode()

    req = urllib.request.Request(API_URL, data=body, headers={
        "Content-Type":  "application/json",
        "Authorization": f"Bearer {API_KEY}",
    })

    with urllib.request.urlopen(req) as r:
        data = json.loads(r.read())

    return data["choices"][0]["message"]["content"].strip()

def main():
    if len(sys.argv) < 2:
        print("Использование: ai 'найди файлы больше 100мб'")
        sys.exit(1)

    cmd = ask(" ".join(sys.argv[1:]))
    print(f"\n  \033[1;33m➜  {cmd}\033[0m\n")

    if input("Выполнить? [y/N] ").strip().lower() in ("y", "д"):
        os.system(cmd)

if __name__ == "__main__":
    main()

50 строк. urllib.request — стандартная библиотека, не нужно ничего ставить. Берёт фразу, шлёт в API с промптом «ответь одной командой», показывает результат жёлтым, спрашивает «y/N». Всё.

Установка:

mkdir -p ~/bin
chmod +x ~/bin/ai-bash.py
echo 'alias ai="python3 ~/bin/ai-bash.py"' >> ~/.bashrc

Ключ OpenAI в .bashrc или в .env — кому как нравится. Я сначала гонял через API, потом поставил Ollama с qwen2.5:7b локально — тоже работает без изменений кода, просто меняешь переменные окружения:

export AI_BASH_URL="http://localhost:11434/v1/chat/completions"
export AI_BASH_MODEL="qwen2.5:7b"
export OPENAI_API_KEY="local"

На моей 3060 ответ приходит за полторы-две секунды. Не мгновенно, но быстрее, чем открыть хром.

Как оно на практике

Ну вот. ai "сколько места на диске" → df -hai "распакуй archive.tar.gz" → tar -xzf archive.tar.gzai "убей процесс на порту 8080" → kill $(lsof -t -i:8080). Нормально работает.

Самое полезное для меня оказалось вот что:

ai "переименуй все .jpeg в .jpg" → for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done

Вот эта конструкция ${f%.jpeg} — parameter expansion. Я её гуглил КАЖДЫЙ раз. Каждый. Гуглил, использовал, забывал. По кругу. LLM выдаёт за секунду.

Или кронтаб. Мне нужно было ротировать логи в полночь. Я бы полез на crontab.guru, потом на SO, потом обратно на crontab.guru, потому что вечно путаю, где день недели, а где месяц. А тут — ai "crontab: ротация логов в полночь" и готово.

Кстати, не все ответы одинаково хороши. Забегая вперёд — за месяц из 847 запросов 23 раза LLM выдала фигню. Не синтаксическую ошибку — синтаксически всё валидно. А по смыслу — не то. Или опасное. Про опасное отдельно расскажу.

Вот тут я, наверное, должен сравнить с tldr и thefuck

Ладно, скажу сразу, чтобы потом не отвечать на одно и то же в каждом втором комменте.

tldr tar — покажет примеры для tar. Но ты должен знать, что тебе нужен tar. Если ты хочешь «сделай бэкап постгреса с датой в имени файла» — тлдр тебе не поможет, потому что у тебя в голове нет слова pg_dump.

thefuck — классная штука, я ей пользуюсь до сих пор. Но она исправляет ошибку ПОСЛЕ того, как ты её допустил. Мне нужно ДО.

navi — вот тут не уверен, честно говоря. Я ставил её год назад, потыкался и забросил. Может, с тех пор стало лучше. Если кто активно пользуется — расскажите, интересно сравнить. По-моему, там каталог шаблонов, и на произвольную задачу он не ответит, но я могу ошибаться.

Copilot CLI — 10 баксов в месяц. Мой скрипт за месяц сжёг 1.80 через OpenAI API. Через Ollama — ноль.

Ну и да, мой скрипт понимает русский. Мелочь, но мне лично удобнее формулировать задачу на родном языке. Не знаю почему — скорее всего привычка, я на работе всё по-русски обсуждаю.

Отступление про man-страницы

Вот сейчас будет ворчание не по теме, но я не могу не сказать.

Знаете, почему я гуглю, а не делаю man tar? Потому что man tar — это 800 строк, из которых мне нужны две. И они на экране 340 из 800. И я ищу их грепом по ману, что само по себе абсурд. man — гениальный инструмент, спроектированный для вдумчивого чтения на бумаге в 1971 году. Я в 2026 году в панике ищу, как распаковать архив, пока тимлид в слаке спрашивает «ну что там?».

Это не жалоба на man. Man — ОК. Это жалоба на то, что за 55 лет не появилось нормальной альтернативы. Ну, tldr появился, да. Но я про это уже сказал.

Ладно, возвращаюсь к теме.

Статистика за месяц

Я добавил логирование — каждый запрос пишется в ~/.ai-bash.log с таймстампом. Через 30 дней выгрузил.

847 запросов. В среднем 28 в день. По-моему, это дофига. Я не ожидал столько. Видимо, раньше часть этих задач я решал по памяти (пусть и с ошибками), а тут стал пропускать через скрипт вообще ВСЁ, вплоть до ls -la. Ну, не ls -la, конечно, но du -sh * | sort -rh — уже да.

Медианное время ответа — 0.9 сек через OpenAI, 2.1 через Ollama. Ошибочных ответов — 23 штуки, 2.7%. Три из них были реально опасные.

Стоимость API — $1.80 за месяц. По-моему, это смешно. Я на кофе из автомата больше трачу.

Самый частый запрос — «убей процесс на порту [что-нибудь]». 41 раз за месяц. Это ненормально. Это значит, что у меня что-то не так с тем, как я запускаю сервисы. Вот это, кстати, неожиданный побочный эффект — лог показал мне паттерны моей работы, которые я сам не замечал.

Но. Но-но-но.

Чужой сервер

Третья неделя. Пятница. Меня позвали починить деплой на сервере, к которому у меня ssh и больше ничего. Моего скрипта нет, Ollama нет, алиаса ai нет. Нужно распаковать архив.

Набираю tar...

И всё. Пальцы встали. -xzf-xfz? Дефис или без? Раньше я не задумывался, просто набирал — мышечная память. А тут она пропала. Вру, не совсем пропала — я вспомнил секунд через пятнадцать. Но это были ДЛИННЫЕ пятнадцать секунд.

Я потом сел и проверил себя по десятку команд. По-честному, без гугла и скрипта. И вот что вышло (субъективно, конечно, точнее оценить сложно):

  • tar -xzf — раньше набирал на автомате, теперь с запинкой

  • find -name -exec {} \; — ну тут я и раньше не помнил, так что не считается

  • chmod 755 vs 644 — помню, но задумываюсь на секунду дольше

  • rsync -avz — помню, его я не гонял через скрипт почему-то

  • awk '{print $3}' — раньше мог вспомнить, сейчас нет

  • df -hdu -sh — помню, они слишком короткие, их я набирал руками

Получается, деградировало примерно пять из десяти. Не полностью — скорее перешло из «помню мгновенно» в «помню через 10-20 секунд» или в «не помню совсем». И закономерность такая: то, что я и раньше гуглил — не ухудшилось (нечему). То, что я набирал совсем на автомате — тоже не ухудшилось (слишком вбито в пальцы). Пострадало среднее — команды, которые я ПОЧТИ помнил.

Мозг, видимо, решил: зачем хранить то, что можно получить за секунду извне? И выкинул.

Так это плохо или нет?

Не знаю. Честно — не знаю.

С одной стороны — я с телефонными номерами так же. Лет десять назад помнил штук двадцать наизусть. Сейчас — ноль. Мамин не помню. Ну и ладно, телефон помнит за меня, и никто не считает это деградацией.

С другой стороны... Номера телефонов — это просто данные. Десять цифр, никакого навыка. А tar -xzf — это навык. Ну, ладно, скорее микронавык. Но это способность действовать без посредника. Когда ты не помнишь мамин номер — ты не можешь позвонить маме без телефона. Когда ты не помнишь tar — ты не можешь работать без интернета.

Хотя. Если подумать. Когда я последний раз работал без интернета?

...

Ну вот. Я не могу ответить на этот вопрос, потому что не помню. Кажется, в самолёте полгода назад, и то у меня была Ollama на ноутбуке.

При этом за этот месяц я закрыл заметно больше задач. На сколько — точно не скажу, потому что месяц на месяц не приходится, может просто задачи были проще. Но ощущение такое, что каждое переключение в браузер — это маленький разрыв потока. Ты думал про деплой, полез гуглить rsync, увидел уведомление на почте, прочитал, вернулся — и три секунды вспоминаешь, что ты делал. Убрал это переключение — и поток идёт ровнее.

Скорее всего, правда где-то посередине, и я выгадал в скорости, но проиграл в автономности.

Три раза, когда я сказал «нет»

Это та часть, которую я хочу зафиксировать. Потому что эти три случая — причина, по которой строчка input("Выполнить? [y/N]") не просто UX-фича, а, без преувеличения, штука, которая спасла мне рабочий день.

Случай первый. Я пишу: «удали временные файлы». Скрипт отвечает: rm -rf /tmp/*. Казалось бы — именно то, что я просил. Но у меня в /tmp/ лежали юникс-сокеты запущенных сервисов. Я это ЗНАЛ, но забыл в момент запроса. Скрипт этого знать не мог.

Второй. «Очисти логи старше 7 дней». Ответ: find /var/log -mtime +7 -delete. Видите? Без -type f. Удалило бы директории вместе с файлами. Синтаксически идеально, по смыслу — катастрофа.

Третий. «Дай права на запись всем в текущей папке». Ответ: chmod -R 777 .. Я стоял в директории проекта. С .git. С ssh-ключами в подпапке. chmod 777 на ssh-ключи = ключи перестают работать (ssh отказывается использовать ключ с широкими правами). Это я бы чинил полчаса, и то если бы сразу понял, в чём дело.

Вывод, который я для себя сделал: скрипт экономит время на генерацию команды. Проверка — моя ответственность. Не LLM-а, не скрипта — моя. Если перестану читать то, что он мне выдаёт, перед нажатием «y» — рано или поздно словлю rm -rf или что-нибудь в этом духе.

Я потом, кстати, добавил в скрипт блеклист паттернов — rm -rf /chmod -R 777 /, ещё пару вещей. И режим --explain, который вместо выполнения разбирает чужую команду на русском. Скрипт раздулся до 120 строк, но всё ещё стандартная библиотека, всё ещё ноль зависимостей.

Итого

Я пользуюсь этой штукой месяц. Обратно к гуглу не вернулся. По-моему, для меня лично это нетто-позитив — я быстрее работаю, меньше отвлекаюсь, меньше бешусь от рекламы на SO.

Но я соврал бы, если бы сказал, что меня не напрягает потеря мышечной памяти на tar. Напрягает. Не сильно, но где-то фоном.

Ну и главный вопрос, который я себе задаю и не могу ответить: если я за месяц разучился tar, то через год я разучусь... что? grep? awk? В какой момент я перестаю быть инженером, который использует инструмент, и становлюсь оператором, который без инструмента бесполезен?

Может, этот момент уже наступил, и я просто не заметил.

А может, это нормальная эволюция, и мои дети будут смеяться над тем, что я вообще запоминал команды — как я смеюсь над тем, что дед помнил наизусть расписание электричек.

Не знаю. Скрипт работает. tar забыл.


«Иногда пишу про такое в токены на ветер — иногда о том, как LLM думают, или просто притворяются»


UPD: Перечитал и понял, что написал «847 запросов, 28 в день» — а 847/30 это 28.2, то есть я работал без выходных. На самом деле нет, в выходные я тоже иногда дёргал терминал, просто реже. В будни было скорее 35-40, в выходные 5-10. Не то чтобы это сильно меняет суть, но для точности.

Комментарии (219)


  1. hremlin
    19.02.2026 04:15

    Боюсь себе представить, что с вами случится, если вы откроете себе Midnight Commander или, не дай бог, Far2l.


    1. ScriptShaper Автор
      19.02.2026 04:15

      MC - это база, согласен. Но он хорош для файлов. А мой костыль умеет и однострочники на awk собирать, и кронтабы крутить, и порты убивать. Это попытка сделать универсальный интерфейс к терминалу для тех, кто (как я) устал контекстно переключаться между разными утилитами. Хотя за напоминание про Far2l спасибо. Надо проверить, помнят ли пальцы F5-F6


      1. Anton_lah
        19.02.2026 04:15

        Мне кажется вы изобрели упрощённую версию claude. В смысле не замену, а именно новый похожий инструмент для shell.

        Последее время я все больше пишу в нем причем на разных языках включая страницы в html и css. И вместо того чтобы бороться и вспоминать синтаксис (или учить новый css) - просто говорю что мне нужно сделать.

        Теперь в вашими скрипом у меня будет ещё один инструмент, спасибо. Но если нужно написать какой-то скрип даже на bash - обратно к claude


        1. lil_master
          19.02.2026 04:15

          Следующим шагом после изобретения автором упрощенной версии claude будет изобретение GUI, и окажется что вообще не нужно помнить команды, тратить время на запрос к ЛЛМ и набор текста, просто нажал кнопку и всё


    1. RulenBagdasis
      19.02.2026 04:15

      Я открыл, а потом закрыл. Когда я 20 лет назад перешёл на линух, мне очень не хватало Windows/Total Commander-а и Far-а, использовал Midnight Commander и что-то ещё, уже и не помню что. Но потом как-то естественным образом перешёл на работу просто в консоли и фаовым менеджером пользоваться перестал. Это оказалось удобнее и быстрее.


      1. Xziut
        19.02.2026 04:15

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


        1. Arty_Fact
          19.02.2026 04:15

          Просто зависит от профиля работы. Условно, если мне нужно грепнуть и я знаю что и где лежит, то конечно мне проще написать команду. А вот писать команды для мува, разархивирования, удаления и копирования мне абсолютно лень, мне проще F5, F6, F8 нажать. Да и сразу через встроенный просмотрщик глянуть файл без дополнительных команд. chmod и chown я больмень помню, но mc нагляднее. Обычно у меня mc запущен и я просто через ctrl+O переключаюсь между консолью и менеджеров в зависимости от задачи.


          1. elestrin
            19.02.2026 04:15

            а я иногда удаляю через mc, чтобы про себя пропеть строчку "я нажал F8 и веселый нортон удалял мне всё подряд"


        1. frei480
          19.02.2026 04:15

          Могу предлоджить вариант - МС двухпанельный, таким образом, в "левой" вкладке делаем соединение через ssh на удаленный сервер, в "правой" либо локальная ФС, либо так же, удаленный сервер через ssh и копируем файлы.


      1. Vilgelm
        19.02.2026 04:15

        Total Commander - Krusader
        Far - MC


        1. FSA
          19.02.2026 04:15

          Krusader в подмётки не годится Total Commander. Много раз пробовал, но вообще не заходит. Это при том, что я активно пользовался Total Commander на Windows. Ну а сейчас больше пользуюсь Double Commander. Но не так активно, как TC на Windows. Больше времени в MC провожу, даже с тем учётом, что Far никогда не пользовался.


      1. Anton_lah
        19.02.2026 04:15

        зовите меня динозавром, но тоже перешел на линукс 20 лет назад. И до сих пор пользуюсь mc (fyi, раньше был deco), и экспериментирую с far2l.
        Мне до сих пор удобней в двух консолях с совершенно разными путями, например. Манипуляция файлами, проверка размера подкаталога, запуск дополнительных программ типа гуевого meld для сравнения файлов из разных подкаталогов. Помнить и вбивать пути каждый раз к этим файлам просто задалбливает, а в mc можно сохранить их по ctrl-\.
        Ну а пример с архивами - это вообще универсальное средство. Kлючи ко всем архиваторам разные - 7z, .gz, bz2, всякие .deb и тд. Один распаковывается, другой распаковывается и архив удаляется, да елки! А в mc ничего не нужно помнить, просто зашел в него как фолдер, сделал что нужно, и вышел. Вот напишите на память, например, как вытащить из .deb архива один файл, и сколько команд вам на это потребуется?


        1. RulenBagdasis
          19.02.2026 04:15

          fyi, раньше был deco

          Только на фряхе с ним дело имел.

          проверка размера подкаталога

          Попробуйте ncdu

          Ну а пример с архивами - это вообще универсальное средство.

          Последний раз я имел дело с архивами лет 15 назад. Не, иногда я их скачиваю откуда-нибудь, но мне всегда хватает в гуях пкм -> exctract here

          Вот напишите на память, например, как вытащить из .deb архива один файл, и сколько команд вам на это потребуется?

          Ни разу в жизни этого не делал, попробовал вот так, сработало. Зачем в консоль ради этого идти?


          1. Anton_lah
            19.02.2026 04:15

            разговор был про исключительно консоль. Понятно, что в любом UI это делается проще.


            1. RulenBagdasis
              19.02.2026 04:15

              Не было никогда разговора исключительно про консоль, зачем себя ограничивать? Я писал, что использовал консольный Midnight Commander, но потом понял, что в самой консоли работать удобнее. Другие инструменты я никогда не отрицал.


      1. IceGerda
        19.02.2026 04:15

        В файловом менеджере можно настроить быстрые каталоги и перемещаться по папкам в считанные секунды.. Как в консоли набирать adminidtrator/settings и т.п дремучие папки профайлов - где мне нужный видеофайл, не понимаю. Так же у меня там есть и bat файлы где без всяких питонов можно набирать что типа sysdmcpl и забыть и новых изысках создателей графических интерфейсов. Ясно, что подобное можно и вручную, и на питонах, и через баши и т.д. Ещё через файл-менеджер можно открывать файлы например с помощью своего плеера и прог, который в одной папке с программой. В андроиде тот же тотал самое простое свойство устанавливать apk. Для меня прямой способ борьбы с дизайнерами и развивателями "новых функций" ОС . Комстрока это для серверов, но не для домашнего применения


        1. RulenBagdasis
          19.02.2026 04:15

          В файловом менеджере можно настроить быстрые каталоги и перемещаться по папкам в считанные секунды.. Как в консоли набирать adminidtrator/settings и т.п дремучие папки профайлов - где мне нужный видеофайл, не понимаю.

          Алиасы. В те 5 папок кроме хомяка, в которые я хожу регулярно, я хожу алиасами (вы же в курсе, что просто "cd" переходит в хомяк, а "cd -" возвращает вас в папку, в которой вы были до последнего перехода?) А ещё поставьте себе fzf и вызывайте его по Ctrl+r вместо стандартного поиска по истории. Это просто охренительно удобно и быстро и не только для смены каталогов. Во все остальные папки я хожу именно так. Набираете Ctrl+r, settings и вот у вас уже все папки settings перед глазами в которые вы ходили, стрелками можно выбрать или набрать ещё пару символов, чтобы уменьшить количество вариантов.

          Комстрока это для серверов, но не для домашнего применения

          Полная ерунда, я перешёл на десктопный линух, во многом, ради линуховой консоли и использую её постоянно для повседневных задач.


    1. nbkgroup
      19.02.2026 04:15

      В консоли nnn в целом намного удобнее, хотя и не без косяков.


    1. andreylavrov
      19.02.2026 04:15

      в процессе)


  1. eps
    19.02.2026 04:15

    ноль внешних зависимостей

    Я сначала гонял через API, потом поставил Ollama с qwen2.5:7b

    Это уже совсем не ноль внешних зависимостей.

    А складывать API-ключи с привязанной кредиткой в .bashrc – это не прямо катастрофа, но поведение крайне опасное


    1. ScriptShaper Автор
      19.02.2026 04:15

      Согласен, замечания по делу.

      Под «ноль зависимостей» имел в виду именно стандартную библиотеку Python (без pip/venv). Но вы правы, сама Ollama зависимость та ещё.

      Про ключи в .bashrc вредная привычка из разряда «пока тестирую, потом поправлю». Лучше так не делать. Спасибо за внимательность!


      1. leftToddler
        19.02.2026 04:15

        А если прокидывать локальный порт на VM (Remote Forward)? Тогда можно использовать в принципе без параметров. Не знаю конечно насколько это возможно для всех сценариев работы. По идее локально можно и простую проксю поднять к OpenAI, благо подобных сервисов на github уже много.


    1. Goron_Dekar
      19.02.2026 04:15

      Не большая, чем факт наличия ключей с кредиткой. Сама идея - дыра в безопасности.
      Если уж вы пользуетесь API с оплатой за потребление и без настроенных лимитов, то не особенно важно, как вы храните ключи.


      1. vvzvlad
        19.02.2026 04:15

        Ну, эм, нет. Так у вас любой софт может взять и сложить в файл диагностики ваш env, а вы его отправите разработчику или выложите на pastebin.


    1. Groosha
      19.02.2026 04:15

      А куда их лучше положить тогда?


      1. eps
        19.02.2026 04:15

        В идеале – в system keychain, но .env в каталоге проекта – нормальный вариант.

        Проблема с заданием переменных окружения в .bashrc в том, что каждый запущенный пользователем процесс будет автоматически знать OPENAI_API_KEY. User environment может попасть даже в некоторые изолированные окружения, если там нет whitelisting.

        Попросил нейросеть вас попугать, она предложила два сценария:

        • IDE и редакторы: Если вы запускаете PyCharm, VS Code или любой другой редактор из терминала (командой code . или pycharm .), этот редактор унаследует переменную OPENAI_API_KEY. Если в редакторе есть плагин (например, для Copilot, для форматирования кода или даже для отправки телеметрии), этот плагин в теории имеет доступ к переменной. Плагин может быть вредоносным или просто иметь баг, из-за которого отправит окружение на свой сервер.

        • Система сборки (CI/CD локально): Вы запускаете тесты или сборку Docker-образа. Переменная уходит внутрь контейнера. Если вы потом закоммитите этот образ в Docker Hub (публичный репозиторий), ключ окажется в слое образа. Даже если вы его удалите из итогового образа, он останется в истории слоев.


        1. xenon
          19.02.2026 04:15

          Выглядит как "не кладите вилку на стол! а то пустите в дом злоумышленника, он у вас вилку-то и украдет! вешайте вилку на люстру и каждый раз ее оттуда берите".

          Но во-первых, если у меня злоумышленник в доме - то он вилку и на люстре найдет (grep -r OPENAI /), а во-вторых, помимо вилки, у него еще будет достаточно способов доставить мне неприятности, что потеря вилки будет далеко не самой большой проблемой.


          1. eps
            19.02.2026 04:15

            Частично соглашусь. Это защита от чужого раздолбайства, не от злоумышленников.

            Чтобы защититься от прямо злоумышленников, лучше

            • Хранить такие секреты в hardware encrypted system keychain (с чего я собственно и начал)

            • Запускать непонятные closed-source программы в песочнице (всё, что из Flatpak в Linux; всё, что из App Store в Mac OS)

            • Поставить уже себе application firewall и не давать непонятным программам соединяться с непонятными серверами.

            grep -r OPENAI /

            В Mac OS, кстати, это кучу privacy warnings выкинет поверх всех окон. Такую кучу, что пользователь прибьёт эту программу просто от того, что достала.


            1. xenon
              19.02.2026 04:15

              Чтобы...

              Тут все-таки нужно взвешивать и выбирать, а не "в любой непонятной ситуации - всего опасайся". Если у нас какая-то важная (и простая!) рабочая система, на OpenAI баланс в сотни тысяч долларов - тогда это хорошая практика. Например, наше какое-то большое продакшн приложение, а на этой машине крутится только ИИшный микросервис (так проще его защитить). И тут рекомендации уместны.

              Но если это домашняя машина разработчика, которая динамичная - мы то одно на ней делаем, то другое, то начали какой-то проект, то забросили, то поменяли половину системы под другие требования (или под собственный каприз, захотелось попробовать другой desktop environment) - то строить такой зацементированный бункер будет очень дорого. При этом, на счету в OpenAI (стоимость кражи токена) - 20 баксов... Да лучше чтобы с шансом (сильно завышенно) в 1% мы рискнули этой двадцаткой, чем потратить рабочего времени на (занижено) 200 баксов, чтобы на домашней машине выстроить такой же бункер.


              1. eps
                19.02.2026 04:15

                Где вы усмотрели "зацементированный бункер", который "дорого строить" (и откуда столько точных чисел), ума не приложу.

                Предпочитать sandboxed приложения? Поставить application firewall? Это не бункер, это информационная гигиена. Это "мыть руки перед едой" и "не поднимать с земли всякую гадость", только эпохи интернета и ИИ-стартапов.


      1. Barnaby
        19.02.2026 04:15

        Мне вот что ИИ посоветовал

        ai() {
            OPENAI_API_KEY="$(cat ~/.openai_key)" python3 ~/bin/ai-bash.py "$@"
        }
        
        echo "sk-..." > ~/.openai_key
        chmod 600 ~/.openai_key
        
        source ~/.bashrc


  1. bbc_69
    19.02.2026 04:15

    Интересная статья. Мне вот интересно, а не проще ли было сделать что-то типа описания типовых случаев (по типу FAQ). Я так навскидку в статье где-то около 10 вариантов увидел. Модель qwen2.5:7b весит около 5 ГБ, там мнооооого информации можно было бы вложить. Или просто скрипт был бы в пару кБ.

    С другой стороны, то, что надо меньше в интернет лезть, мне нравится.


    1. ScriptShaper Автор
      19.02.2026 04:15

      FAQ это круто, но он статичен. А LLM вывозит любой мой сиюминутный «поток сознания», который в шпаргалку просто не влезет. А 5 Гб на диске сегодня небольшая цена за спокойные нервы.


      1. not-allowed-here
        19.02.2026 04:15

        совместить - через openclaw с памятью


      1. bbc_69
        19.02.2026 04:15

        Как будто статика не является проблемой. Я по себе сужу. Меня вымораживало писать и запоминать git команды. Сделал себе алиасы, в итоге получилось 12 шт. С прочей мелочёвкой даже до 20 не доходит.

        Касаемо FAQ, я имел в виду примерно следующее:

        Скрытый текст
        alias what-tar='echo "Распаковка данных:"; \
                      echo "  tar -xzf archive.tar.gz        # распаковать .tar.gz"; \
                      echo "  tar -xjf archive.tar.bz2      # распаковать .tar.bz2"; \
                      echo "  tar -xf archive.tar            # распаковать обычный .tar"; \
                      echo ""; \
                      echo "Упаковка данных:"; \
                      echo "  tar -czf archive.tar.gz /path/to/dir  # создать .tar.gz из директории"; \
                      echo "  tar -cjf archive.tar.bz2 /path/to/dir # создать .tar.bz2"; \
                      echo "  tar -cf archive.tar /path/to/dir       # создать обычный .tar"; \
                      echo ""; \
                      echo "Дополнительные опции:"; \
                      echo "  -v — выводить подробный список файлов (verbose)"; \
                      echo "  -C /dir — распаковать в указанную директорию"; \
                      echo "  --exclude=\"pattern\" — исключить файлы по шаблону"; \
                      echo ""; \
                      echo "Примеры:"; \
                      echo "  tar -xzvf archive.tar.gz                # распаковать с выводом списка файлов"; \
                      echo "  tar -czvf archive.tar.gz /home/user --exclude=\"*.tmp\"  # упаковать, исключив *.tmp"'
        

        Можно в виде скрипта оформить, тут без разницы. Смысл в том, что этот набор будет весьма ограниченным и вряд ли перевалит за 10. Ну 20.

        Касаемо размера, это мой загон, но как будто неправильно использовать ГБ там, где можно обойтись кБ. С другой стороны - всё лучше, чем в интернет лесть с тоннами рекламы.


        1. LazyTalent
          19.02.2026 04:15

          я пользовался tldr https://github.com/tldr-pages/tldr


    1. Zulu0
      19.02.2026 04:15

      а не проще ли было сделать что-то типа описания типовых случаев (по типу FAQ)

      Я себе поднял dokuwiki на компе, и там все храню. По разделам. Один раз нашел, скопировал, добавил раздел. Оч удобно. Рекомендую


  1. wsf
    19.02.2026 04:15

    Раз уж имеется статистика, было бы интересно посмотреть на сколько в среднем стали длиннее или короче команды от изначально ввода на естественном языке до конечного результата на баше.


    1. ScriptShaper Автор
      19.02.2026 04:15

      Точную статистику не вел, но по ощущениям: в символах выходит примерно так же. А вот «когнитивная нагрузка» падает в разы, сформулировать задачу на русском на порядок быстрее, чем вспоминать ключи в мане.


      1. wsf
        19.02.2026 04:15

        Если честно, плохо представляю какую команду можно вбить в поиск чтобы получилось короче чем chmod, df или tar перечисленные в статье. Деды уже все что можно посокращали чтобы меньше кнопок нажимать.


    1. kamaz1
      19.02.2026 04:15

      я кстати попробовал в chatgpt просто повбивать типа
      find dirs 4g+
      extr bz
      kill port 8080
      вполне себе однострочники которые ИИ успешно конвертировал в то что надо, читая мои мысли. так что можно и очень коротко, особенно если напомнить ему что на выходе всегда должна быть linux команда. больше всего нелюблю частые переключения языка в процессе набора, оно еще и тупит по секунде на винде и на маке (на линуксе кажется побыстрей).


      1. YuriyPashkov
        19.02.2026 04:15

        частые переключения языка в процессе набора, оно еще и тупит по секунде на винде и на маке

        Что касается мака - вы возможно переключаете раскладку кнопкой с глобусом слева внизу на клавиатуре, и там при переключении показывается источник ввода всегда, из-за этого не сразу происходит смена раскладки. Повесьте на капслок переключение, или на другую какую комбинацию удобную (ну или дефолтный ctrl+space, не удерживая ctrl, чтобы также не показывать источники ввода) - переключение мгновенно будет происходить


        1. kamaz1
          19.02.2026 04:15

          Это я уже нагуглил спасибо, но все равно бывают варианты когда печатаешь, и переключение просто не срабатывает, возможно я жму букву слова одновременно и комбинацией, тут уж ниче не поделать


        1. Dr_Zlo13
          19.02.2026 04:15

          Переключение раскладки капслоком на маке требует после капслока сделать небольшую, но заметную паузу, иначе переключение не произойдёт. При быстро наборе это использовать практически невозможно.


          1. numark
            19.02.2026 04:15

            Да, я переключаю капсом и постоянно это замечаю. Есть какие-нибудь рекомендации на что можно поменять, чтобы быстро переключать одной кнопкой (глобус, ctrl+space не очень удобно).


  1. megahertz
    19.02.2026 04:15

    Я достаточно быстро забываю комманды / опции своих скриптов, если не пользуюсь регулярно. tar тоже всегда гуглю. По причине такой памяти, для меня вещи типа vim мало юзабельны. Мешает, но не критично.


    1. ScriptShaper Автор
      19.02.2026 04:15

      Жму руку. Рад, что я не один такой. В vim, для меня, без шпаргалки до сих пор некомфортно заходить.


      1. Okeu
        19.02.2026 04:15

        Нужно мышечную память нарабатывать. Например отказаться от nano/mcedit
        и даже на винде поставить себе vim и только им открывать все текстовики - шпаргалка отпадет достаточно быстро и все станет казаться простым. Другой вопрос, например, лично мне - ЛЕНЬ. Мне лень заниматься самооптимизациями, даже если они отобьют себя с лихвой - мне нужно решить задачу здесь и сейчас. Поэтому на каждую такую таску я трачу лишние секунды на гугл, вместо того, чтоб один раз набить руку и получить выигрыш в будущем)) Но иногда у меня наступает озарение и я начинаю в свободное время занимаясь со своими домашними компами намеренно использовать без гугла те инструменты - в которых вот так "плаваю" - помогает. Но лень))


      1. Daiichi
        19.02.2026 04:15

        В vim, для меня, без шпаргалки до сих пор некомфортно заходить.

        behave mswin "Luke!


    1. select26
      19.02.2026 04:15

      Для этого добавляю в тело скрипта комментарии и ключ -h.

      Иначе - лапша уже через год.


      1. megahertz
        19.02.2026 04:15

        Это база. Стараюсь делать хелп даже для 10 строчного скрпита, если он не одноразовый


      1. Okeu
        19.02.2026 04:15

        если скрипты на питоне, то там есть несколько либ, которые помогают в составлении справки в т.ч. описание опций и аргументов, разной степени сложности


    1. code07734
      19.02.2026 04:15

      Знакомо. Попробуйте helix. Быстрый, и всегда хоткеи на виду. Мощный редактор


  1. borey
    19.02.2026 04:15

    Вот эта штука решает такие и не только задачи. https://github.com/sigoden/aichat/wiki/Role-Guide#built-in-roles. Тут делал обзор юзкейсов https://habr.com/ru/articles/938418/


    1. ScriptShaper Автор
      19.02.2026 04:15

      О, спасибо за наводку, не видел. Моя поделка — это скорее DIY-велосипед на коленке. Изучу на досуге ваш обзор!


  1. Olgeir
    19.02.2026 04:15

    В итоге получается, что всё равно нужно гуглить, чтобы проверить полученный вариант. Это не говоря о том, что лезть куда-то с запросом с прод сервера, ну такое себе.

    При наличии статистики запросов проще было написать простые узконаправленные баш скрипты. Больше безопасности и контроля.


    1. wsf
      19.02.2026 04:15

      Да тут половина команд вообще как будто по старинке алиасами в .bashrc закрывается. Другой вопрос что за опытный девопс такой у которого за 10 лет такой фаил не появился.


  1. gotch
    19.02.2026 04:15

    eXtract gZip File действительно сложно запомнить. Но если хорошо потренироваться, то можно запомнить и Create gZip File

    Но если и это сверхзадача, то откройте для себя вместо гугла cheat.sh/tar


    1. select26
      19.02.2026 04:15

      действительно сложно запомнить

      За десять то лет? Я даже не вспоминаю это в голове - пальцы сами помнят.

      Это не проблема запоминания, по моему.


      1. gotch
        19.02.2026 04:15

        Это был сарказм, конечно.


      1. Sagittarius67
        19.02.2026 04:15

        Согласен, это какое-то заболевание. У меня все эти ключи спустя 20 лет в голове после трёх лет ежедневной солярки, хотя nix пользуюсь с тех пор не каждый день.


    1. albatross
      19.02.2026 04:15

      Кстати да, на мой взгляд проблема здесь тоже не в проблеме запоминания, а в непонимании почему эти ключи так назваются а не иначе. Мне, например, было достаточно много лет назад один раз прочитать документацию и понять что "X/C" - это от eXtract/Create, "Z" - от gZip, "F" - от File (и это название ключа для имени файла уже практически стандарт) чтобы никогда не иметь проблем с "вспоминанием". Ассоциации и понимание в абсолютном большинстве случаев более эффективный инструмент памяти чем тупая зубрежка.


      1. drWhy
        19.02.2026 04:15

        Вероятно люди, начинавшие писать полезный инструмент для себя не задумывались над обобществлением ассоциаций? А после было поздно что-то менять.. А инструмент разрастался.
        Апогей апофеоза - несколько уровней вложенности мана, различающихся по объёму на порядок, как например у FFMpeg или VLC Player, включающих массу библиотек, кодеков, и прочая, когда можно потратить массу усилий сперва на поиск нужных опций, затем на попытки разобраться в правильном синтаксисе, порядке опций и возможных несовместимостях.. Тут впору отдельный конструктор писать.


        1. radioxoma
          19.02.2026 04:15

          Подбор ключей к ffmpeg, yt-dlp сродни поэзии. Или проекту выходного дня.

          Скачай в x264, не более 1080p, субтитры извлеки, субтитры автогенерируемые всё равно извлеки, старайся mp4, но mkv тоже пойдёт... Но если не можешь, то делай как можешь...
          Скачай пестню с YouTube, да через прокси, да в opus, да cover вставь, да id3 заполни...
          Склей файло с видеорегистратора, да через USB, да пережми, да в два прохода, чтобы влезло на DVD.
          Из всех серий сериала все субтиты извлеки, в SRT рядом в папку положи.


      1. edogs
        19.02.2026 04:15

        проблема здесь тоже не в проблеме запоминания, а в непонимании почему эти ключи так назваются а не иначе

        Проблема скорее в зоопарке похожих стандартов.

        eXtract/Create ? окей. Для tar. А потом Вы узнаете о zip в котором ключа не надо, зато обязательно указать рекурсию для папки. А потом учите 7z в котором внезапно для архивации надо (A)dd.
        Список файлов? tar -t, unzip -l, 7z l. Потому что (T)able, (L)ist и тире не везде надо.
        А потом к этому добавляются еще утилиты типа df, rar, iptables, nftables в которых для похожих операций (список, удаление, добавление) еще дополнительный зоопарк.

        И вот в случае такой похожести - ассоциации только портят, т.к. запутывают. Create или Add? Попробуй тут проассоциируй.

        Мы по этой же причине никак не можем адекватно 1С использовать, потому что в английском однозначно "for" и все, оно запомнено как цикл без контекста и ассоциаций (хотя мы знаем конечно что это "для"), а вот в русском из-за ассоциации с циклом даже в такой простой ситуации пытаемся натужно вспомнить "цикл"? "для"? "перебор"? Потому что блин ассоциации.


      1. xenon
        19.02.2026 04:15

        Я помню ключи tar потому что довольно часто пользуюсь (и начал с древнейших времен). Но я вовлечен в десяток наших проектов, по каждому куча задач, и когда мне задают вопрос о проекте, на котором я работал 3 года назад - мне трудно что-то вспомнить, приходится ковыряться, разбираться.

        Легко помнить одну вещь, можно помнить, условно, N вещей, но когда кладешь на эту полочку конечного размера N+1'ую - то что-то с нее слетает.


    1. NN1
      19.02.2026 04:15

      Есть и альтернативная мнемоника для лёгкого запоминания для неанглоязычных:
      eXtract Ze File
      Create Ze File


  1. DarthVictor
    19.02.2026 04:15

    На всякий случай напомню, что восклицательный знак в большинстве оболочек (zsh, bash и т.д.) запускает поиск по истории введенных вами комманд.


    1. saga111a
      19.02.2026 04:15

      еще можно ctrl+R далее ввод части команды. Если еще раз нажать ctrl+r то переключится на следующее совпадение. Причем стрелки вверх/вниз позволяют искать по соседним командам. Я иногда помню с каким файлом работало, но не помню команды и наоборот


  1. garwall
    19.02.2026 04:15

    но почему вы везде приводите тар с дэшем, когда он там не нужен?


  1. select26
    19.02.2026 04:15

    Десять лет в девопсе. Десять. И я гуглю tar -xzf. Не раз в год — раз в неделю. Ну, может раз в десять дней, если повезёт.

    Пожалуйста , отнеситесь серьёзно к моему комментарию!

    Обратитесь к врачу! Нехороший симптом: Не то, что вы не знаете синтаксис tar, а то, что вы не можете запомнить команду, котоую регулярно на протяжении 10 лет используете.

    Я cам devops.


    1. AllFiction
      19.02.2026 04:15

      это нормально если ты работаешь с много чем кроме tar

      каждый лепит кто во что горазд и проще потратить 10 сек и узнать валидную команду чем сидеть вспоминать или разбиратся, а почему не сработало как ожидалось. Другое дело что есть -h

      Вообще история команд это лучшее что придумали для консолей, но если много всего разного и повторяющегося, то проще себе в файлик выписать и копипастить из него

      никогда не понимал этой избыточной любви к консоли, когда все пытаются через нее тянуть даже то что вообще неудобно (те же дифы)


      1. HardlinePeak936
        19.02.2026 04:15

        На листочек записать и приклеить на стенку рядом с рабочим местом. Или даже на крышку ноутбука/поверхность стола ;)


      1. iBljad
        19.02.2026 04:15

        Если перестану читать то, что он мне выдаёт, перед нажатием «y» — рано или поздно словлю rm -rf или что-нибудь в этом духе.

        То есть по сравнению с файлом на 168 строк (+ещё столько же комментариев для удобства поиска) решение автора обладает двумя преимуществами:

        • нужна видеокарта (своя или за деньги)

        • результат непредсказуем

        Не переживай, работы много, зато платим мало! ©


    1. mapcuk
      19.02.2026 04:15

      Я тоже не помню синтаксиса команды tar, find, xargs, ps и т. д., и я постоянно работаю в консоли, а ещё не помню каких-то конструкций языков программирования за меня это IDE добавляет. Это нормально не помнить, и периодически посматривать в шпаргалку.


    1. max1960
      19.02.2026 04:15

      Это абсолютно нормально. Мозг не хочет нагружать себя ненужной рутиной.


  1. tkutru
    19.02.2026 04:15

    Раз автор всё логирует, то можно написать и "тренажёр мышечной памяти". Смотреть, что чаще всего спрашивал и делать llm кой заметки или тест на тему. Можно найти и не очевидные "общие узкие места", но кажется моделька должна быть помощнее чем qwen2.5:7b.


  1. unreal_undead2
    19.02.2026 04:15

    Просто tar — это такой синтаксис, который у меня физически отказывается залезать в долговременную память.

    Уж xzf за десятилетия пальцы запоминают ) Вот к новомодным bzip2/xz так и не привык.


  1. ri1wing
    19.02.2026 04:15

    Начало статьи:

    И я гуглю tar -xzf. Не раз в год — раз в неделю. Ну, может раз в десять дней, если повезёт. Открываю хром, набираю «tar extract gz linux», пролистываю три рекламы, нахожу ответ на SO, копирую, вставляю, закрываю вкладку. Через неделю — по новой.

    <...> Просто tar — это такой синтаксис, который у меня физически отказывается залезать в долговременную память. 

    Конец статьи:

    Пальцы встали. -xzf-xfz? Дефис или без? Раньше я не задумывался, просто набирал — мышечная память. А тут она пропала.

    Откуда взялась мышечная память на tar, если вы его каждый раз c SO копировали?


    1. ScriptShaper Автор
      19.02.2026 04:15

      Мышечная память на Ctrl+C  Ctrl+V. А если серьезно, то я имел в виду ту стадию, когда пальцы начинают писать команду, но на середине ты зависаешь.


    1. lampslave
      19.02.2026 04:15

      Достаточно заставить себя не скопировать, а перенабрать команду, так намного лучше запоминается, особенно, если делаешь это постоянно, а не раз в год.


  1. xi-tauw
    19.02.2026 04:15

    Видимо, чтобы сэкономить 100500 часов разрабам и девопсам достаточно стикер с двумя строчками:

    memcpy(dest, src, size);

    tar -xzf archive.tar.gz


  1. VIskander
    19.02.2026 04:15


  1. Dmitry_Shumkov
    19.02.2026 04:15

    Хотел написать саркастичный комментарий в духе - 10 лет в девопсе, а не знает про ctrl-r. Но я сам об этом поиске узнал случайно от коллеги программиста, когда уже из администрирования ушел. На минутку уже 20 лет стажа в ИТ индустрии было. Если что - ключевое слово для гугления - bck-i-search


    1. red_dragon
      19.02.2026 04:15

      history удобнее, IMHO.


    1. lampslave
      19.02.2026 04:15

      ctrl+r не всегда подходит, особенно если одновременно открыто много терминалов. Выручает grep ~/.bash_history*


    1. navferty
      19.02.2026 04:15

      Воу, классная штука, не знал. Спасибо!


      1. MountainGoat
        19.02.2026 04:15

        А теперь ещё на автокомплит в fish shell посмотрите.


    1. bbc_69
      19.02.2026 04:15

      Там ещё Ctrl+S должен работать для поиска в другом (прямом) направлении, но на эту клавину забита остановка ввода. Сам я так и не удосужился его выключить. Обидно бывает, когда, то что ты ищешь перепрыгиваешь из-за лишнего нажатия.

      Может и стоит вырутить, не знаю даже.


  1. Bobos
    19.02.2026 04:15

    «Инженер — это человек, который не обязан знать всё, но обязан точно знать, где и как это всё найти».

    25 лет коммерческой разработки и каждый раз гуглю ожидаемый результат array.sort — когда вернуть 1, а когда -1. Никак не могу запомнить


    1. CaptainFlint
      19.02.2026 04:15

      Там, кстати, довольно элементарно. Всё идёт из операции сравнения, которая по сути вычитание. Самый элементарный сравниватель — это буквально "a-b" (в некоторых языках/библиотеках проверяется только знак возвращаемого значения и не требуется обеспечивать строго -1/0/1).


  1. kukovik
    19.02.2026 04:15

    Наверное вы на себя наговариваете. Либо вам просто лень запомнить несколько букв. Таром можно создать (c), развернуть (x) или проверить (t) tar-архив. Можно наблюдать (v) за процессом. Можно сжать bzip2 (j) или gzip (z). При развертывании или проверке нет необходимости указывать способ сжатия -- оно само. Можно указать имя файла (f), иначе оно в лицо полетит. И эта буква должна быть последней, поскольку за ней как раз и надо писать имя (которое может быть -, если вы таки хотите в лицо, но решили указать это явно).

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


  1. domix32
    19.02.2026 04:15

    мнемоника для тара довольно простая - нужно просто быть немцем и читать это как

    "eXtract Ze File" и "Compress Ze File". А вообще проще поставить в оболчку подсказку команд или какой-нибудь atuin, чтобы можно было в истории подсмотреть как было в прошлый раз. Или хотя бы tldr. На порядок проще и энергоэффективнее, чем теребить кланкеров.


  1. drWhy
    19.02.2026 04:15

    Спасибо, было интересно прочесть, коллега. Как раз недавно перечитывал
    Айзек Азимов - Профессия.

    С одной стороны ожидаемо в нашем насыщенном информацией мире просить оператора "Загрузить программу управления вертолётом". С другой - как же предки, давшие имена физическим величинам, как Мария Склодовская-Кюри стала матерью радиохимии без поддержки нейросетей?


  1. tba
    19.02.2026 04:15

    Для меня проблема решилась через

    Ctrl+R

    history | grep <token>

    .bash_aliases

    .bash_functions -- можете, например, написать функцию "архив()" если хотите непременно на русском

    curl cheat.sh/<команда> для новых или редко используемых команд


    1. AcckiyGerman
      19.02.2026 04:15

      Аналогично. Когда сам написал alias untar="tar -xvf" или space="du -hs * | sort -hr | head" потом эти команды не забываются. Ну и Ctrl+R для всего что еще не в алиасах.

      p.s. a еще есть unzip


  1. Maxor1k
    19.02.2026 04:15

    я сам люблю нейронки, но использовать их для такой фигни? лол?
    почему просто автоматически не парсить скриптом введенную фразу "распаковать FILENAME" и заменять слово "распаковать " в команду? Чисто словарь иметь для парсинга фраз


  1. davidaxxon
    19.02.2026 04:15

    Поправил системный промпт, получил забавного зверька :)


  1. RranAmaru
    19.02.2026 04:15

    Отключил intellsense, после того как коллега спросил как называется ф-я делающая то-то, а я смог вспомнить только первые 3 буквы.


    1. Astrowalk
      19.02.2026 04:15

      Часто вспоминаю коллегу по работе (разработка на C++), который принципиально пользовался редактором Emacs с дефолтной конфигурацией и без подсветки синтаксиса. Может быть, он был не так уж чудаковат, как казалось...


  1. ProgerMan
    19.02.2026 04:15

    У меня на этот случай в корне папки с проектами лежат текстовые файлы с говорящими названиями. Dotnet.txt для команд, связанные с dotnet и проектами на C#. Git.txt для редко используемых команд git, а также AWS, Docker, Go и т.д.

    Практически никакого больше "Гугла", с моим описанием, что и для чего использовать. А также нужный порядок для серии команд. Так что трудно забыть и невозможно потерять.


  1. BeLord
    19.02.2026 04:15

    Вообще вредная привычка все гуглить, что будете делать в закрытом контуре, где инета нет? Как по мне проще, если что-то не запоминается сделать себе склеротичку. Не так много вещей, которые постоянно используешь. И еще мозг штука ленивая, если он знает кратчайший путь, то им пользоваться и будет, на выходе память улетит в ноль, а способность думать самостоятельно сильно упадет. Восстанавливать навыки будет крайне сложно.


    1. randomsimplenumber
      19.02.2026 04:15

      что будете делать в закрытом контуре, где инета нет?

      Не попадать туда.


  1. Daiichi
    19.02.2026 04:15

    chmod 755 vs 644

    (Печально смотрит)

    Ну есть же символические обозначания прав, вот эти все u(ser)g(roup)o(ther)a(ll)=r(ead)w(rite)(e)x(ecute),… ? Зачем страдать и мучиться, запоминая восьмиричные маски?

    chmod u=rwx,og=rx (user: read+write+execute, others,group: read+execute) вместо chmod 755

    chmod u=rw,og=r (user: read+write, others,group: read) вместо chmod 644


    1. AllFiction
      19.02.2026 04:15

      Странно, мне было проще запомнить в цифрах группы чем что могут значить все эти сокращения. Плюс в коде ты всегда указываешь цифрами опять-таки если создавать файл.


      1. Daiichi
        19.02.2026 04:15

        Странно, мне было проще запомнить в цифрах группы чем что могут значить все эти сокращения.

        Нуу, лично мне проще запоминать слова, а не цифры, и, как показывает само наличие символических обозначений масок прав, так проще не только мне. А потому как таких людей подавляющее большинство, для облегчение сопровождения ими своего кода, желательно использовать именно символические обозначения. Считаю, что незачем злить цифрами интеллектуальное большинство ^_^

        Плюс в коде ты всегда указываешь цифрами опять-таки если создавать файл.

        Почему цифрами? Зачем цифрами? На каждый бит маски прав есть соответствующий #define. man 2 chmod соврать не даст, да: S_IRUSR, S_IWUSR, S_IXUSR и так далее для GRP и OTH. Полагаю, в других языках также наверняка должны быть соответствующие константы.


        1. CaptainFlint
          19.02.2026 04:15

          IMHO, эти константы ещё сложнее запомнить. USR или USER? или просто U? G/GRP/GROUP, O/OTH/OTHER? read-user или user-read? И что за I в начале, и почему префикс S_?

          И даже в команде chmod с простыми однобуквенными обозначениями есть свои сюрпризы. Помнится, в каких-то системах буквенные rwx по умолчанию означали "установить указанные права", а в других — "добавить права к имеющимся". А число — что указал, ровно то и будет.


          1. Daiichi
            19.02.2026 04:15

            IMHO, эти константы ещё сложнее запомнить. USR или USER? или просто U? G/GRP/GROUP, O/OTH/OTHER? read-user или user-read? И что за I в начале, и почему префикс S_?

            Автокомплит в помощь! Не знаю, как в исхолниках на С, а в исходниках на перле автокомплит vim'а увеиенно находил все имена функций и констант из подключаемых модулей.

            Помнится, в каких-то системах буквенные rwx по умолчанию означали "установить указанные права", а в других — "добавить права к имеющимся". А число — что указал, ровно то и будет.

            Это во всех системах так, если вместо знака = между ugoa и rwx поставить знак +. И это совершенно стандартное документированное поведение chmod.


            1. CaptainFlint
              19.02.2026 04:15

              Автокомплит в помощь!

              И как автокомплитить, если даже не помнишь, что константа начинается именно с S_? Да и констант таких как бы не так уж мало.

              $ grep -E '\bS_' -r /usr/include/ | wc -l
              222
              

              Ну, ОК, 202, если исключить упоминания в комментариях. И 148 из них начинаются с S_I. То есть чтобы получить внятную подсказку автодополнения, нужно ввести бо́льшую часть самого имени, а для этого надо его помнить. Разве что система дополнения жутко умная и подставляет не все константы, а только соответствующие контексту в вызове функции. Но опять же, а если я в переменную засовываю значение, чтобы потом применить? Контекста уже не будет.

              Это во всех системах так, если вместо знака = между ugoa и rwx поставить знак +. И это совершенно стандартное документированное поведение chmod.

              Я про запуск без указания оператора. Кроме того, если не указывать, к кому применять права (типа chmod +rwx), то где-то это будет применено к юзеру, а где-то — ко всем. В общем, не супер-важная проблема, можно указывать и явно. Но лично мне проще вписать 0755 и не дёргаться. Буквенные использую, только когда права нужно именно частично модифицировать, а не установить полный набор.


              1. Daiichi
                19.02.2026 04:15

                И как автокомплитить, если даже не помнишь, что константа начинается именно с S_?

                А чё это, только с S_ , а не с S_I? ;) А если ещё помнить, что за S_I в нужной нам константе должны идти либо R, либо W, либо X, то диапазон поиска совершенно драматически сужается до USR, GRP и OTH. Там, правда, затесались ещё WXU, WXG, и WXO, но ничего страшного, это просто RWX для пользователя, группы и всех остальных, соответственно:

                grep -hE '\bS_I' -r /usr/include \
                | sed -nEe '/^\s*#define\s+(S_I[RWX][^[:space:]]+)\>.*$/ s!!\1!p' \
                | sort -u


      1. MountainGoat
        19.02.2026 04:15

        Через цифры не выразить операцию "всем файлам убрать execute, всем папкам проставить" и некоторые подобные, придётся городить через поиск.


    1. RTFM13
      19.02.2026 04:15

      Зачем страдать и мучиться, запоминая восьмиричные маски?

      в моём случае это было 25 лет назад и я помню их гораздо лучше чем таблицу умножения.

      а вот эти буковки могут значить что угодно (хотя их тоже помню но не использую)


      1. Daiichi
        19.02.2026 04:15

        а вот эти буковки могут значить что угодно

        Как это, что угодно? Что в мане написано, то они и значат.

        (хотя их тоже помню но не использую)

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


        1. RTFM13
          19.02.2026 04:15

          В программировании для установки/сброса бит есть & |

          тоже удобнее буковок.


          1. Daiichi
            19.02.2026 04:15

            В программировании для установки/сброса бит есть & |

            Есть. Но если пользоваться символическими обозначениями прав при вызове chmod, то программу писать попросту не нужно, chmod og-wx . вычислит результирующие разрешения самостоятельно, убрав права группы и всех остальных и не затронув разрешения пользователя.

            тоже удобнее буковок.

            Но быстрее пользоваться уже существующими программами, чем каждый раз писать их заново, ещё и рискуя ошибиться при этом.


  1. Daiichi
    19.02.2026 04:15

    Там дефис или нет? xzf или xfz? Или zxf? Вроде порядок не важен? Или важен?..

    Ага, угу, а для системных бэкапов надо ещё не забыть -С / --one-file-system --acls --selinux --xattrs --xattrs-include=\* и опционально --wildcards. И не забыть, что -С / надо указать после имени архива но до имён извлекаемых/добавляемых файлов, иначе случатся абсурд и коррупция, потому что tar всосёт или, наоборот, загадит текущую директорию.


    1. Astrowalk
      19.02.2026 04:15

      Вот была бы такая команда, которая создавала бы короткое имя для вызова утилиты с набором опций... Да нет, фантастика какая-то!


      1. Daiichi
        19.02.2026 04:15

        Вот была бы такая команда, которая создавала бы короткое имя для вызова утилиты с набором опций... Да нет, фантастика какая-то!

        Команда есть, называется alias, но беда в том, что созданные с её помощью короткие имена для команд остаются в настроенных системах, а что делать, если попал в ещё не настроенную? Так что надо тренировать моторную память, надо.


        1. Andrusha
          19.02.2026 04:15

          Если речь именно про ещё не настроенную систему, а не про мысленные эксперименты с защищёнными контурами и безопасниками, которым больше заняться нечем, то очевидно скопировать туда свой .bash_aliases с настроенной.


      1. JBFW
        19.02.2026 04:15

        На самом деле мало смешного.
        Многие люди реально не понимают, что для задач типа "системных бекапов" не надо ПОМНИТЬ и НЕ ЗАБЫВАТЬ 100500 ключей.

        Достаточно их написать один раз в скрипт сделать_хорошо.


        1. Daiichi
          19.02.2026 04:15

          Достаточно их написать один раз в скрипт сделать_хорошо.

          … чтобы потом в каком-нибудь ограниченном контуре попасть на систему, где твоего скрипта отродясь не было, и поставить его нельзя, потому что за спиной стоит безопасник и нежно и страстно дышит в ухо с невысказанным вопросом: «А чё это ты тут, падла ты кулхацкерская, какой-то скрипт пишешь, ты бэкап делай!»


          1. Dr_Faksov
            19.02.2026 04:15

            Вы ещё забыли добавит, что в этой конторе на всех разъёмах стоят заглушки. С пластилиновыми печатями. На ниточках. И даже позвонить вовне, в свой офис, можно только через коммутатор и телефонистку.


            1. Daiichi
              19.02.2026 04:15

              И даже позвонить вовне, в свой офис, можно только через коммутатор и телефонистку.

              … а смартфон отобрали на входе и теперь уже никак не получится даже одним глазком подсмотреть в исходник своего скрипта сделать_хорошо, который стопицот лет уже как был заботливо записан в отдельный каталог его диска среди прочего барахла вроде мемчиков, котиков, снимков супермегаважных договоров и этикеток разного коньтуперного барахла с партнамберами и серийными номерами и инсталляций из него различной степени упоротости :)


              1. randomsimplenumber
                19.02.2026 04:15

                А вас поймали на улице, привезли с мешком на голове и сказали программировай? ;)

                Можно и подготовиться заранее, шпаргалку распечатать..


                1. Daiichi
                  19.02.2026 04:15

                  А вас поймали на улице, привезли с мешком на голове и сказали программировай? ;)

                  Какое программировай? Бэкапай же!

                  Можно и подготовиться заранее, шпаргалку распечатать..

                  Если приглашённый специалист, чтобы сделать бэкап, немедленно полез за шпаргалкой — это уже очень серьёзный удар по его имиджу в глазах обступившей его сплочённой группы товарищей :)

                  Ладно бы man или info полез читать, а то сразу за шпаргалкой. Не, ну это же не серьёзно!


                1. drWhy
                  19.02.2026 04:15

                  Можно на всякий случай наколки набить - ну там tar -xzf, regexp..


  1. Andrusha
    19.02.2026 04:15

    Пока читал, вспомнил другую статью про оверинжиниринг. Но там автор всё же решил исходную проблему ;)


  1. test4ment
    19.02.2026 04:15

    https://xkcd.com/1168/


    1. Daiichi
      19.02.2026 04:15

      tar zcvf /dev/null .

      Воть!!!


  1. ZlodeiBaal
    19.02.2026 04:15

    Для мелких команд всё так же гуглю.
    А если что-то серьёзное делаю - то почти на всех машинах стоит codex или его аналоги. Которым можно сказать "настрой то-то и то то" и они вполне неплохо справляются.

    Но в целом да, идея хороша. Единственное, так как часто работаю с мелкими железками - всё равно надо будет через openrouter или аналог стримить.


  1. neenik
    19.02.2026 04:15

  1. Hexlight
    19.02.2026 04:15

    Еще лет 20 пройдет, и линуксоиды изобретут человеческий GUI с кнопками на экране, вместо прикручивания LLM к консоли


    1. Dr_Faksov
      19.02.2026 04:15

      Есть такое понятие - мазохист. И фраза "понты дороже денег". Просто вспомнилось почему-то.


      1. Hexlight
        19.02.2026 04:15

        Да нет, мне кажется это массовый психоз. Консольный ввод был нужен 40 лет назад, когда иных вариантов не было.

        Когда люди в 2026 году ,сидя перед 4K мониторами и очевидно имея GPU, стирают глаза о бесконечные простыни текста и думают, что так и должно быть....это клиника.


        1. garwall
          19.02.2026 04:15

          что-то удобнее делать в gui, что-то - через cli. нет одного интерфейса, чтобы править всеми.


        1. JBFW
          19.02.2026 04:15

          вот сейчас у меня примерно 8 окон к разным системам в разных местах. В некоторых 128 гигов RAM, в некоторых - 128 мегабайт.
          Устанавливать везде и гонять графику с кнопками туда-сюда ради того чтобы распаковать архив? Серьезно?

          А потом, если надо автоматизировать - писать копроприложение, которое будет двигать мышь по экрану и пытаться поймать кнопки, вместо того чтобы просто сохранить нужные команды в текстовый файлик?

          Да, такой он, windows-way. Ну его нафиг.


        1. Ravius
          19.02.2026 04:15

          А потом когда число "параметров/конопок" вырастает...становится больше двух.

          Все возвращаются к набору команд, которые можно скопипастить.


    1. max9
      19.02.2026 04:15

      лет 20 примерно как есть

      Скрытый текст


      1. Astrowalk
        19.02.2026 04:15

        Вот, кстати, наглядный пример, почему многим людям удобнее использовать CLI вместо GUI. Тут на нас вываливается куча мусора, в которой надо повозиться мышью.


        1. max9
          19.02.2026 04:15

          да +- как и в венде


        1. mayorovp
          19.02.2026 04:15

          Только если нет необходимости гуглить команды или читать маны. Иначе мусора в CLI вываливается ещё больше чем в этом меню на скриншоте.


        1. milkground
          19.02.2026 04:15

          Вам шашечки или ехать? Пока автор гуглит, у @max9 уже создастся архив и он сможет быстрее вернуться к чтению Хабра.


    1. wsf
      19.02.2026 04:15

      В это может быть сложно поверить, но линуксойды часто обделены мониторами, и ресурсами на рисование всяких гуев.


    1. bbc_69
      19.02.2026 04:15

      Если ты точно знаешь, что тебе надо, то куда быстрее это написать, чем пытаться найти то, что тебе нужно. Особенно если создатели дистрибутива любят всё менять в каждой версии стремятся предоставить актуальный дизайн. Если же ты очень примерно представляешь, что тебе надо, то да - гуй незаменим.

      Ну и да, бывают ситуации, когда гуя просто нет и альтернатив тоже. Ну знаешь, там сервер какой-нибудь настроить.


    1. MountainGoat
      19.02.2026 04:15

      Есть в мире один пример, когда у системы всё управление оформлено в своего рода графический и наглядный интерфейс. Это кабина самолёта. Все видели, надеюсь. А знаете что самолётостроители делают с ней сегодня? Понемногу переходят к командной строке для всего, что не может потребоваться вот прям в одну секунду.


  1. LF69ssop
    19.02.2026 04:15

    Это не синтаксис tar плохой. Это у автора профдеформация, когда вместо чтения документации сразу спрашивают гугль или того хуже ИИ.
    Но справедливости ради, это касается ныне практически большинства.


    1. mayorovp
      19.02.2026 04:15

      Так документацию откуда брать? Я её обычно гуглю...


      1. ajijiadduh
        19.02.2026 04:15

        смотря для чего, а так man


        1. mayorovp
          19.02.2026 04:15

          Как бы это странно не звучало,не всегда под рукой компьютер с линуксом, чтобы на нём маны смотреть. И не всегда на нём эти маны установлены...


          1. invasy
            19.02.2026 04:15

            Это действительно странно.

            Если нет под рукой компа с линухом, зачем нужна команда tar вместе с опциями?


            1. mayorovp
              19.02.2026 04:15

              Для написания скриптов деплоя


              1. JBFW
                19.02.2026 04:15

                То есть кто-то пишет скрипты вслепую, не имея инструментов под рукой?

                "А если будете хорошо плавать - нальём воду!"


        1. MountainGoat
          19.02.2026 04:15

          man это не инструкция, это справочник. Это антиобразец удобства. Большинство манов, если не все, отсортированы тупо по алфавиту. То есть у программы могут быть опции, которые нужны одному человеку во всём мире (он их и написал), но каждый новый изучающий программу будет их читать прежде чем сможет первый раз воспользоваться программой.

          Иногда в TealDeer более полезная информация. Хотя часто она, наоборот, слишком примитивна.

          У Rust та же проблема: у популярных пакетов справочник есть, документации нету. Я как-то сутки потратил, пытаясь понять, как из PNG файла прочитать нестандартную метадату, хотя либа для этого находится слёту. А вот как ей пользоваться, хрен поймёшь, несмотря на обилие текста в doc.rs.


          1. JBFW
            19.02.2026 04:15

            В man есть волшебная кнопка /, которую можно нажать для поиска нужной опции, типа /-f

            Это примерно как f1, "типовая вещь которую все знают"

            Для особых случаев можно вообще вывести в файл man program > zzz, после чего открыть zzz в своем любимом редакторе и читать хоть с конца к началу.


            1. MountainGoat
              19.02.2026 04:15

              Да, но /wtf this app does не работает без ИИ, а бывает нужен. Угадать, как называется нужная опция, тоже не всегда просто.


            1. CaptainFlint
              19.02.2026 04:15

              Вот только этот поиск найдёт не только -f, но и всякие "--first", "--delete-file", "well-formed" и так далее. Надо изгаляться с пробелами, но лишний пробел — и вот мы уже не можем найти нужную опцию, потому что там не "-f", а "-f, --force".

              Особенно доставляют инструкции вида "а вот это описано в разделе Pattern Matching", но чтобы найти этот раздел, надо сначала прокликать Next'ом ещё сто двадцать упоминаний этого раздела.

              В общем, man — штука полезная, тут спорить сложно, но вот юзабилити у неё не ахти.


            1. mayorovp
              19.02.2026 04:15

              Что-то мне даже интересно стало, а если написать man man - там про кнопку / расскажут, или это надо man less читать?


  1. rrrrex
    19.02.2026 04:15

    Тут бы полезнее оказался консольный псевдо gui с чекбоксами, полями ввода и прочим. Поставил галочку извлечь, указал место и т.д., а на выходе уже стандартная команда для выполнения


    1. JBFW
      19.02.2026 04:15

      Это будет тупо дольше, чем набрать текстом команду, или иными словами - заколебёт.

      Нечто среднее - использование хотя бы того же Миднайта: наступить на архив - он откроется, дальше просто копирование файлов между двумя панелями.
      +100 к наглядности, -10 к быстроте выполнения.


  1. itcaat
    19.02.2026 04:15

    Вот коллега делал https://github.com/antonmedv/howto


  1. MomoTMR
    19.02.2026 04:15

    Все комменты не прочитал. Статья интересная, я бы докрутил кэш запросов, что бы каждый раз апи не дергать, а хранить небольшую базу с готовыми ответами.


  1. 1pyxa1
    19.02.2026 04:15

    если нужно писать запрос на русском и команда автоматически не выполняется, чем не подходит браузер с любой LLM через веб-клиент на локальной машине? все тоже самое с нулем трудозатрат. нет рекламы, с сервера не нужно ходить во внешний интернет, если продолжать один и тот же диалог, тогда LLM впоследствии вам и cheat sheet соберет удобный на один А4 из ваших же запросов. ну да, команду нужно скопипастить.

    автоматизация ради автоматизации потому что могу?


    1. Ravius
      19.02.2026 04:15

      У меня в браузере 100 вкладок. И 8 терминалов открыто.

      Я пианист на ALT+TAB.

      Вот и вся причина.


  1. UserNoUser
    19.02.2026 04:15

    Мда))) конечно автору было проще загуглить, чем в терминале набрать man tar


  1. max9
    19.02.2026 04:15

    rm -rf /

    не работает так давно уже


  1. 192IP
    19.02.2026 04:15

    Интересно, что же произойдёт если попадёт доступ в интернет? Или внезапно доступ к модели будет не доступен?)


  1. Magn
    19.02.2026 04:15

    Таких проектов довольно много.
    В качестве примера - https://github.com/sigoden/aichat

    -> % ai -e show current directory size                                                              
    du -sh .
    > execute | revise | describe | copy | quit: e
    1.6G    .




  1. erley
    19.02.2026 04:15

    Следующий этап - не прикасаться к клавиатуре, а управлять всем этим голосом :-)

    Но если серьёзно, то у вас или задачи слишком простые / некритичные или вы не понимаете досконально как всё работает. Извините, не хочу обидеть, но базовые команды чтобы управлять системой нужно знать очень хорошо и понимать что там происходит внутри.


    1. ildarz
      19.02.2026 04:15

      Есть очень большая разница между "понимать, как все работает" и "запоминать кучу команд с неочевидными названиями и синтаксисом". Знание наизусть ключей tar никак не приближает к пониманию чего бы то ни было.


  1. rpc1
    19.02.2026 04:15

    Я использую ctrl + r в bash, поиск команды занимает секунды


    1. Stanislavvv
      19.02.2026 04:15

      Ровно до тех пор, пока не понадобится редкоиспользуемая команда, которая уже вымылась из истории. Или вообще никогда там не была, так как делается один раз на свежем сервере.

      Другой вопрос, что непонятно, накой делать что-то повторяющееся руками. Ситуация повторяется каждые N дней — что мешает автоматизировать? Есть же тот же ансибл, в котором есть модуль unarchive. Вобщем, по-моему, вместо того, чтобы закрутить шуруп хотя бы отвёрткой за неимением шуруповёрта, его тут вбивают молотком.


  1. JBFW
    19.02.2026 04:15

    Мелочь, но мне лично удобнее формулировать задачу на родном языке. Не знаю почему — скорее всего привычка, я на работе всё по-русски обсуждаю.

    Это не мелочь.
    Это причина того, что вместо tar eXtract gZipped File вам приходится лезть в гугель за магическими букавками xzf.
    И даже не попытаться посмотреть man tar, а ведь там всё написано...


  1. 2Miron
    19.02.2026 04:15

    Было бы интересно увидеть что-то подобное, но допустим по командам ЯП, или по возможностям фреймворка.

    У меня самого было так, что когда переложил часть задач по коду на нейронку, забыл простое open('file', '-r') в Python ))


    1. lampslave
      19.02.2026 04:15

      '-r' - это как?


      1. 2Miron
        19.02.2026 04:15

        '-r' - значит read (то есть открыть файл в режиме чтения)


        1. mayorovp
          19.02.2026 04:15

          Режим чтения - это просто 'r'. Что означает минус?


          1. 2Miron
            19.02.2026 04:15

            Хтьфу, извините, я забыл что без минуса нужно писать.

            В том смысле что когда я программирую я помню, а когда писал комментарий забыл.


  1. achekalin
    19.02.2026 04:15

    А потом кто-то переименует ai в матерное слово, и получится прямо "ёп как найти самый большой файл"


  1. AndreySitaev
    19.02.2026 04:15

    Автор только что изобрел Warp Terminal (https://www.warp.dev/) на минималках.


    1. achekalin
      19.02.2026 04:15

      Пошел почитать, начал хихикать, закрыл. За "бесплатно" у них ограниченное изучение кодовой базы, и ограниченный доступ к топовым моделям. В общем, выглядят как те девушки, которые хотят так раздеться, чтобы не выглядеть доступными, но все же и не неприступными.

      Кроме что терминал - это где много всего творится. То пароль вводится, то ключик в файле лежит - а это всё "в облако, в облако!"


  1. kroggy
    19.02.2026 04:15

    Ctrl+R или history помогает. А так для команд веду для себя заметки в joplin. Пока достаточно.


  1. initum
    19.02.2026 04:15

    а нельзя просто создать файл 'COMMANDS.md' с наиболее востребованными командами? Можно даже в Path поместить специальный скрипт для поиска нужной команды в этом файле, если лень его открывать и искать команду вручную


  1. webhamster
    19.02.2026 04:15

    Да, в Linux традиционно много названий программ и командных опций, которые невозможно запомнить. Всякие "tar -vfx", "gdb", хотя хотелось бы "dbg", "find" с одинарным "-" перед многобуквенной опцией... Такое впечатление, что авторы консольных утилит специально делают такие незапоминающиеся и сложные названия и выбор опций, чтобы максимально затруднить их использование.

    Поэтому я 17 лет назад, когда допиливал собственный PIM-менеджер MyTetra, первым же делом сделал себе записульки:

    Команды для работы с архивами tar.gz, tar.bz2, tar.xz

    Синтаксис команды find

    ... и прочие подобные записи.

    И этим действием я закрыл все свои потребности. Но если я оказываюсь за не своим компьютером, на котором нет MyTetra, я ничего не могу сделать: я просто ничего не помню. Так что автор не один такой.
    Другое дело, что 50 строк - это не все что нужно. Нужен еще и постоянный доступ в интернет и доступ к LLM, которого может и не быть. А по законам Мерфи именно в самый нужный момент либо интернет отвалится, либо LLM станет недоступной.

    Если же мы позуем локальную LLM, то тогда это не 50 строк на пистоне, а вся среда исполнения LLM вместе со всеми библиотеками и несколько десятков гигабайт весов.


    1. MountainGoat
      19.02.2026 04:15

      А если немножко подумать, то у tar все опции это стандартные акронимы, а порядок их, кстати, не важен.

      gdb это GNU Debugger потому что существует он в паре с GNU C Compiler.

      А find уже и забыть можно, он правда очень древний и поэтому чудаковатый.


  1. ajijiadduh
    19.02.2026 04:15

    И я ищу их грепом по ману, что само по себе абсурд.

    определённо, ведь есть /

    Я его настраиваю на каждом втором сервере.

    может пора освоить ansible?


    1. bbc_69
      19.02.2026 04:15

      Как-то именно в ансибле я разочаровался в итоге. helm больше понравился. Правда, он кубер ворочал, может в этом дело. Терраформ вроде тоже ничего.


  1. Smartor
    19.02.2026 04:15

    Именно для подобных случаев и придумали графический интерфейс :)


  1. winorun
    19.02.2026 04:15

    Если вы наберете в Google как распаковать gzip то увидите что сделать это можно командой tar xzf файл, если вы наберете tar - и нажмете таб, то вылезут подсказки и вы узнаете что можно и tar -x -z -f файл, сделать. Возможно вас будет удручать что в 2026 году не догадались сделать автоматическое определение типа архива. Но возможно случится чудо и вы наберете man tar. И увидите там на 20 строке:

    tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]

    А на 30 это

    tar {--extract|--get} [--file ARCHIVE] [OPTIONS] [MEMBER...]

    Для тех кто совсем не может в англиский, что бы распаковать файл достаточно набрать

    tar -xf файл


  1. RS6
    19.02.2026 04:15

    О, интересно. У меня похожая проблема с гитом - очень люблю гит, но не очень люблю командную строку. И прям жутко бесит вбивать руками то, что вбивать на самом деле не обязательно, так как информация уже есть у машины - названия файлов, хэши коммитов и так далее. Поэтому пилю по-немногу такую штуку - вызывается по хоткею, вылезает как панель в Windows 10, понимает текущий репозиторий в активном приложении (VS, VS code, Explorer), анализирует текущее состояние (наличие локальных коммитов, сабмодулей, detached head, незапушенные тэги и т.д.) и предлагает релевантные действия. При выборе действия позволяет визуально задать параметры, например выбрать в табличке коммиты для сквоша.
    Естественно, всё легко кастомизируемо: можно добавлять новые кондишены и экшены, UI для задания параметров создаётся автоматически.

    Скрытый текст
    пока только POC для проверки юзабилити
    пока только POC для проверки юзабилити


    1. str1ker17
      19.02.2026 04:15

      Зумеры придумали TortoiseGit?


      1. randomsimplenumber
        19.02.2026 04:15

        С бубнами и шаманами. Gui для git чуть более чем дофига.


      1. RS6
        19.02.2026 04:15

        Да нет же. Tortoise использовал много лет, но сейчас всё меньше потому что все базовые операции неплохо реализованы в IDE. Смысле в черепахе немного лично для меня. Но как только какая-то нестандартная ситуация случается, в IDE просто ничего нет, приходится запускать консоль и вспоминать/гуглить. Именно для таких edge-cases и хочется удобства.


  1. muwrec
    19.02.2026 04:15

    Поднял мне самооценку) теперь я просто ОБЯЗАН попасть в девопс


  1. LarexSetch
    19.02.2026 04:15

    Не могу понять это рофл какой то или искренне автор гордиться оверинжинирингом для простых команд?

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


  1. vvzvlad
    19.02.2026 04:15

    Блин, огонь. Объеденил решение в статье с идеей @davidaxxonи за пару часов сделал себе штуку, которая не только генерирует команды, но еще и обьясняет, как именно она работает. + записывает команду в историю. https://github.com/vvzvlad/ai_bash


    1. Moog_Prodigy
      19.02.2026 04:15

      ЛЛмка писала? там есть ряд мелких косячков. И вообще для полного счастья надо чтобы llm перед выполнением запроса ознакомилась с кратким хелпом того, с чем она будет работать. Например, она собирается использовать graphic magick для изменения размеров изображений в папке. Или тот же aircrack-ng. Пусть сначала делает для себя --help или нечто подобное.

      Вот тута result = subprocess.run([CURRENT_SHELL, "/c", cmd], check=False) исправил под винду, а писалось "-c" под линукс. Ну это так, мелкие всякие штуки. Логирование тоже исключительно под линукс, тогда зачем распознавать шелл и систему?


  1. alepron
    19.02.2026 04:15

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


    1. LeraKholod
      19.02.2026 04:15

      Ну так гугл поможет, но не заменит понимание


  1. jingvar
    19.02.2026 04:15

    Про синтаксис некоторых тулзов которые поперек сознанию это прям да


  1. StriganovSergey
    19.02.2026 04:15

    Спасибо, собрал себе такое же на основе этого кода с некоторыми доработками.
    Доработка подгружает в системный промт данные из двух файлов.
    1 - автогенерируемый файл с базовыми характеристиками сервера - версия ОС, ядра, подробности о железе.
    Он создается при старте сервера ( и иногда пересоздается ).
    Такая информация позволяет подбирать более подходящие команды конкретно для этой машины.
    2 - файл с описанием желательного поведения в некоторых задачах.
    например: для получения метрик температур ( процессор, система, видеокарты) - делать вызов заранее подготовленного скрипта, в котором уже реализована логика - в каком виде нужно их показать.Вообще, всегда найдется некоторое количество уже готовых типовых скриптов для разных задач, можно их все перечислить с описанием когда использовать.


  1. lv333
    19.02.2026 04:15

    А что если... Просто в текстовый файлик записать все эти "откровения"? А потом просто поиском по нему пройтись в поисках нужного??? Да не... Ерунда какая то, а как же ИИ, модели и вот это все стильное, модное, молодежное...

    А ещё можно вообще блокнот бумажный использовать...))


    1. bbc_69
      19.02.2026 04:15

      А ещё можно вообще блокнот бумажный использовать...))

      А ctrl+C, ctrl+V как делать?


  1. hazard2005
    19.02.2026 04:15

    Автор, а ты когда последний раз проходил собеседование?

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


  1. LeraKholod
    19.02.2026 04:15

    Мышечная память умирает быстрее, чем кажется


  1. Uglevod
    19.02.2026 04:15

    Все к этому и идёт )

    1. Как внешний референс ллм можно использовать апи hugginface и там 7b модельку.

    2. Сделать сервисом что бы можно было обратится через curl/wget

    3. Сделать обвес внутри Кеша запросов. Можно через вектор.

      Можно типа своего MCP ( ковырял context7, ну вот векторный поиск он и есть )

    4. Понемногу подсаживать на свой сервис других девопсников )))


  1. Semy
    19.02.2026 04:15

    Не надо сокеты хранить в /tmp. Для этого /var/run предназначен.


  1. vovanmozg
    19.02.2026 04:15

    Цивильный фазан (cvfz) и х**вый фазан (xvfz)


    1. polar_yogi
      19.02.2026 04:15

      create, extract, verbose, filename, permissions, gzip, Change dir - недостаточно очевидно?


  1. alfatek
    19.02.2026 04:15

    Про oh-my-zsh ещё не говорили? Начинаешь набирать команду, потом стрелкой вверх ходишь по истории всего что начиналось с этих символов.

    Для bash имеется oh-my-bash


    1. thunderspb
      19.02.2026 04:15

      А если еще fzf поставить.... :)


  1. hypermachine
    19.02.2026 04:15

    После слов:

    > Десять лет в девопсе. Десять. И я гуглю tar -xzf.

    Читать дальше не стал.


    1. A1EF
      19.02.2026 04:15

      Да вот да. Даже не знаю, что меня больше шокировало - этот факт или число "плюсов" к статье..


  1. alexeyKatsuro
    19.02.2026 04:15

    Ощущение что какой-то велосипед.

    Есть же готовые AI терминалы Warp, Chaterm, TmuxAI


    1. StriganovSergey
      19.02.2026 04:15

      Спасибо за список. Эту статью стоило написать уже только для того, чтобы найти в комментариях список аналогов :)

      Пока буду смотреть как работает этот "велосипед" из статьи.
      Но Chaterm заинтересовал, попробую и его.


  1. MaximKiselev
    19.02.2026 04:15

    По мне автор изобрел велосипед который не нужен. Не помнишь команду - зайди в гугл, мануал или спроси chatgpt. Сам грешу таким же правда с ffmpeg и прочими консольными монстрами. Плюс очевидно есть время подумать, не сломает бездумное выполнение команды что-то тем более что агенты иногда ошибаются даже с командами приложений, особенно если в новой версии тулзы вырезали какие то опции или добавили что-то. Такое часто бывает. А без рук, она все равно ниче не напишет.


  1. Lagovi
    19.02.2026 04:15

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


  1. freemorger
    19.02.2026 04:15

    Это все конечно круто, но только один пишет длинные тире. Еще никогда штирл.. ГПТ не был так близок к провалу. Да и стиль повествования в его стиле


    1. Stanislavvv
      19.02.2026 04:15

      Длинные тире в некоторых случаях набираются несложно — в линуксе достаточно просто настроить клавиатуру и использовать Compose Key. В моём случае это lv3:ralt_switch,misc:typo в дополнительных настройках клавиатуры и далее через RAlt и "-" получаю длинное тире.

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

      Другой вопрос, что сама идея вынести часть мышления на аутсорс заманчива, но вот конкретно это — не мышление, а хреновая память на базовые вещи и обходится не галлюцинациями нейросетки, не запросом в поисковик, а собственноручно написанной шпаргалкой. Причём, желательно, без автодополнения, каждую букву набирать самостоятельно — есть шанс, что хоть что-то запомнится.


  1. WhiteBehemoth
    19.02.2026 04:15

    мне, как нечасто, но периодически работающему в терминале linux, прямо очень оказалось полезным. Ну вот от души спасибо за идею.
    Там выше еще ссыль была на реализацию через GO - в конце вместо запроса на вылопление, ответ выводится в терминал с возможностью редактирования. Мне показалось это удобнее, - сделал как там. Ну и вообще скрипт под себя расширил, докинув пару параметров. Удобно, комфортно, быстро. Спасибо еще раз.