Я перепробовал кучу приложений и сервисов для задач, заметок и контактов. Но всё что-то было не так: интерфейс неудобный, то забываешь вообще открывать программу. Вечно казалось, что вот-вот найду идеальный вариант.
Я программист и давний фанат Linux, поэтому в итоге решил, что пора перестать мучиться и просто написать скрипт под себя. Он закрыл сразу все мои потребности! В этой статье я подробно расскажу, как у меня всё устроено, какие удобные штуки добавил и чем эта идея мне зашла в итоге.
О скрипте
Удобный набор команд, который легко дорабатывать
Мой скрипт, который я назвал prod, собрал в себе простые команды для терминала — по сути, заменил менеджер заметок, список задач, хранение контактов и даже календарь с напоминаниями.
Весь код занимает меньше 300 строк — просто, прозрачно, и всегда можно добавить новую функцию, если понадобится. Я время от времени действительно что-нибудь дописываю под свои нужны.
Основу составляют стандартные консольные инструменты, которые уже есть в любом Linux или macOS — никаких редких или сложных зависимостей. Тут даже Python не нужен, всё делается чисто на shell script.
Для проверки кода я использовал ShellCheck — чтобы не было глупых ошибок в синтаксисе.
Запускать просто: скачали скрипт, поместили его в папку из PATH и дали права на исполнение. Файл называется prod.sh, команды вызываются так: prod who, prod notes, prod pomo и так далее. Я сделал себе символическую ссылку, чтобы вызывать просто prod. Если запустить без параметров — покажет краткую справку по всем функциям:
Ноутбук на Linux Intel NUC13
Соберите мини-ПК под себя: выбор из трёх процессоров Intel и множество дистрибутивов Linux — только выберите то, что нужно именно вам.
Работа с заметками: быстрое создание и мгновенный поиск
Обычные текстовые файлы, простая структура папок и стандартные утилиты
Для заметок важны только две вещи:
Обе легко реализуются с обычными текстовыми файлами, плюс команды grep и find и ваш любимый редактор. Структура у меня простая: для создания или правки заметки достаточно такой команды:
Если нужной папки, например text/wifi, ещё нет — скрипт создаст всё сам (через mkdir -p), а файл, например home, откроется автоматически на редактирование.
Чтобы не было ошибок во вводе, использую grep с регуляркой.
Хотя Bash позволяет делать такие проверки прямо средствами своего синтаксиса.
Имя редактора берётся из переменной EDITOR: скрипт сам открывает указанный файл в вашем стандартном редакторе.
Для поиска по заметкам (флаг -f) используется рекурсивный grep:
Мне очень нравится, что найденные совпадения сразу подсвечиваются: нужное слово подчеркивается с помощью ANSI-escape-кодов.
Трекер задач: простой и мощный TODO прямо в терминале
Прозрачное хранение: задачи в Markdown, доступно и понятно
Задачи это обычный список того, что хочу сделать. Всё веду в Markdown — просто, видно глазами.
Посмотреть задачи в PDF — удобно, для этого использую команду pandoc:
Каждая запись получает свой уникальный номер, что позволяет быстро удалять лишние задачи: например, prod todo -r 2 сотрёт вторую в списке. Для этого используется обычная команда sed — она удаляет нужную строчку по номеру:
Всё происходит внутри файла на лету, без каких-либо временных копий или лишних файлов.
Минималистичный календарь и планировщик прямо в терминале
Календарь cal — отличная база для своего планировщика
Больше всего работы потребовал именно календарь — тут нужно правильно обрабатывать ввод пользователя и проверять каждое поле. Для каждого события есть название, дата, время начала и окончания, всё это скрипт запрашивает по одному:
Всё читается из stdin и сохраняется в переменную для последующей работы.
Я сделал отдельную функцию read_valid, ей передаю регулярку и она проверяет, корректен ли формат. Дата с временем всегда записываются верно. Ещё одна функция — read_future_date — не даст создать событие в прошлом.
Чтобы сразу узнать о следующем событии используйте prod when -l. Для удобства вывода применяется cal: нужная дата подсвечивается (можете передать свою через параметры -d/-H):
Всё по-простому: контакты всегда под рукой
vCard — универсальный и удобный формат для контактов
Для контактов я использую vCard. Это простой текстовый формат, который спокойно понимают почти все почтовые клиенты, а нужные данные — имя, номер, email — находятся за секунду.
Получайте рассылку с полезными советами по shell-скриптам и автоматизации
Нужно сохранить контакт? Просто создаю vCard в отдельной папке, к которой скрипт prod всегда имеет доступ. Все карточки лежат в корневой директории — не запутаешься, достаточно самого обычного for и шаблонов.
Сложные функции мне ни к чему — одной опции хватает, чтобы посмотреть все данные сразу:
Вывод оформлен в простом DSV-формате (с разделителями) — удобно дальше обрабатывать через sed, grep, sort и любые другие стандартные инструменты.
В основе — связка echo, grep и cut: нужные поля, например телефон, легко вытащить вот такой командой:
Всё, что идёт после TEL;...: сразу же подхватится и сохранится автоматически.
Простые скрипты меняют взгляд на работу
Не поймите меня превратно: я не призываю выкидывать ваши любимые программы. Главное — просто напомнить: всегда можно сделать проще, чем кажется.
С помощью обычных текстовых файлов и пары стандартных команд просто настроить работу под себя — сильнее, чем многие думают. Этот опыт вдохновил меня развивать свои скрипты и автоматизацию, ведь оно того реально стоит!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru