Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Забудьте о десятке утилит — этот Bash-скрипт решает всё! Я перешёл на него и рассказываю, как сможете и вы

Я перепробовал кучу приложений и сервисов для задач, заметок и контактов. Но всё что-то было не так: интерфейс неудобный, то забываешь вообще открывать программу. Вечно казалось, что вот-вот найду идеальный вариант. Я программист и давний фанат Linux, поэтому в итоге решил, что пора перестать мучиться и просто написать скрипт под себя. Он закрыл сразу все мои потребности! В этой статье я подробно расскажу, как у меня всё устроено, какие удобные штуки добавил и чем эта идея мне зашла в итоге. Мой скрипт, который я назвал prod, собрал в себе простые команды для терминала — по сути, заменил менеджер заметок, список задач, хранение контактов и даже календарь с напоминаниями. Весь код занимает меньше 300 строк — просто, прозрачно, и всегда можно добавить новую функцию, если понадобится. Я время от времени действительно что-нибудь дописываю под свои нужны. Основу составляют стандартные консольные инструменты, которые уже есть в любом Linux или macOS — никаких редких или сложных зависимостей
Оглавление

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

Я программист и давний фанат 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, откроется автоматически на редактирование.

-3

Чтобы не было ошибок во вводе, использую grep с регуляркой.

Хотя Bash позволяет делать такие проверки прямо средствами своего синтаксиса.

Имя редактора берётся из переменной EDITOR: скрипт сам открывает указанный файл в вашем стандартном редакторе.

Для поиска по заметкам (флаг -f) используется рекурсивный grep:

-4

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

Трекер задач: простой и мощный TODO прямо в терминале

Прозрачное хранение: задачи в Markdown, доступно и понятно

Задачи это обычный список того, что хочу сделать. Всё веду в Markdown — просто, видно глазами.

Посмотреть задачи в PDF — удобно, для этого использую команду pandoc:

-5

Каждая запись получает свой уникальный номер, что позволяет быстро удалять лишние задачи: например, prod todo -r 2 сотрёт вторую в списке. Для этого используется обычная команда sed — она удаляет нужную строчку по номеру:

Всё происходит внутри файла на лету, без каких-либо временных копий или лишних файлов.

Минималистичный календарь и планировщик прямо в терминале

Календарь cal — отличная база для своего планировщика

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

-6

Всё читается из stdin и сохраняется в переменную для последующей работы.

Я сделал отдельную функцию read_valid, ей передаю регулярку и она проверяет, корректен ли формат. Дата с временем всегда записываются верно. Ещё одна функция — read_future_date — не даст создать событие в прошлом.

Чтобы сразу узнать о следующем событии используйте prod when -l. Для удобства вывода применяется cal: нужная дата подсвечивается (можете передать свою через параметры -d/-H):

-7

Всё по-простому: контакты всегда под рукой

vCard — универсальный и удобный формат для контактов

Для контактов я использую vCard. Это простой текстовый формат, который спокойно понимают почти все почтовые клиенты, а нужные данные — имя, номер, email — находятся за секунду.

Получайте рассылку с полезными советами по shell-скриптам и автоматизации

Нужно сохранить контакт? Просто создаю vCard в отдельной папке, к которой скрипт prod всегда имеет доступ. Все карточки лежат в корневой директории — не запутаешься, достаточно самого обычного for и шаблонов.

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

-8

Вывод оформлен в простом DSV-формате (с разделителями) — удобно дальше обрабатывать через sed, grep, sort и любые другие стандартные инструменты.

В основе — связка echo, grep и cut: нужные поля, например телефон, легко вытащить вот такой командой:

Всё, что идёт после TEL;...: сразу же подхватится и сохранится автоматически.

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

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

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

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

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

Также подписывайтесь на нас в: