Как вести заметки в терминале

terminal

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

Почему терминал — хорошее место для заметок

Шелл подходит для записи по трём причинам:

  • Вы уже там. Посреди отладки, деплоя или код-ревью командная строка открыта и ждёт ввода.

  • Вывод — это текст. Сообщения об ошибках, упавшие тесты и вывод команд уходят в заметку через пайп, без скриншотов и перепечатывания.

  • Шелл есть везде. По SSH, внутри tmux, на CI-машине — где есть шелл, там работает и ваш способ записи.

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

Способ 1: обычный файл, в который только дописывают

Самая простая система, которая работает:

Bash
echo "$(date +%F) - use SIGTERM not SIGKILL in the entrypoint" >> ~/notes.md

Оберните это в функцию шелла, и запись станет привычкой в пару нажатий:

Bash
note() { echo "$(date +%F) $*" >> ~/notes.md; }

Найти запись — это grep -i keyword ~/notes.md. Такая система ничего не стоит, синхронизируется тем же, чем синхронизируется ваша домашняя папка, и никогда не ломается.

Ограничения видны, когда записей становится много: у одного плоского файла нет структуры, grep находит только точные слова, а на второй компьютер ничего не попадёт, пока вы сами не настроите синхронизацию.

Способ 2: заметки в редакторе, открытом из шелла

vim ~/notes/$(date +%F).md или небольшой скрипт, который открывает заметку на сегодня, дают настоящий редактор и по файлу на каждый день. Инструменты этого семейства (скрипты для ежедневных заметок, nb, CLI-дневники) добавляют ровно столько структуры, сколько нужно, — файлы по датам, иногда теги, — и при этом остаются локальными и скриптуемыми.

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

Способ 3: отдельный CLI для записи и синхронизируемое хранилище

Третий способ отделяет запись от хранения: маленький CLI умеет только одно — взять текст из шелла и передать его в систему заметок, которая уже сама отвечает за поиск, синхронизацию и организацию.

Так устроен Notez CLI. Это бинарник на 3 МБ для macOS, Linux и Windows; после однократного notez login запись выглядит так:

Bash
notez "the flaky test is timezone-dependent — freeze the clock"
echo "worth keeping" | notez
notez --title "Postmortem notes" "timeline starts 14:02 UTC"

Заметки попадают в рабочее пространство, которое открывается и в веб-приложении, поэтому поиск не зависит от grep: он работает по смыслу (запрос «flaky tests» находит заметку про часовой пояс), а записи потом можно пометить тегами, связать с другими заметками или дописать в полноценном редакторе. URL распознаются автоматически и сохраняются как закладки, а с выводом --json CLI встраивается в скрипты и git-хуки.

Компромисс здесь зеркальный: вы получаете поиск, синхронизацию и структуру, а взамен заметки живут в сервисе, а не в одном локальном файле. Если для вас это важно, проверьте, можно ли из сервиса уйти. Notez, например, экспортирует всё рабочее пространство в .zip с Markdown-файлами и вложениями, и эту планку разумно требовать от любого инструмента.

Приёмы, которые работают в любой системе

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

Пайп вместо перепечатывания

Главный довод в пользу записи из терминала: материал уже лежит перед вами в виде текста.

Bash
./run-tests.sh 2>&1 | tail -20 | notez --title "auth test failure"

Заметка с настоящим выводом ошибки стоит десяти заметок, где он пересказан своими словами.

Записывайте, что помогло, а не только что сломалось

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

Время — автоматически, заголовки — по необходимости

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

Одни входящие

Отправляйте все быстрые записи в одно место и разбирайте потом (или никогда). Как только вы заставляете себя выбирать место в момент записи, возвращается то самое трение, от которого вы избавлялись.

Какой способ выбрать

  • Обычный файл: вам не нужны зависимости, а заметки — это короткоживущая рабочая память.

  • Редактор и файлы по датам: заметки длинные, и вы работаете на одном компьютере.

  • CLI для записи и синхронизируемое хранилище: вы записываете часто, с нескольких машин, и находить заметки для вас так же важно, как записывать.

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

Читайте также