Документация
Всего шесть команд. Если понадобилась седьмая, то скорее всего вам нужен не shelf.
Команды
shelf add URL [--tag ТЕГ] [--note ТЕКСТ]- Добавляет запись. Заголовок тянется со страницы если она открывается, иначе останется пустым.
shelf find СЛОВО [--tag ТЕГ]- Поиск по заголовкам, заметкам и адресам. Регистр не учитывается.
shelf list [--tag ТЕГ] [--limit N]- Последние записи, свежие сверху.
shelf open НОМЕР- Открывает ссылку через
xdg-open, то есть в браузере по умолчанию. shelf rm НОМЕР- Удаляет запись. Номера не переиспользуются.
shelf tags- Список тегов с количеством записей.
Где лежат данные
По умолчанию - ~/.local/share/shelf/shelf.txt. Путь переопределяется переменной окружения:
export SHELF_FILE=~/Documents/notes/bookmarks.txt
Каталог создаётся сам при первом запуске. Файл открывается только на дозапись, старые строки никогда не переписываются - так сложнее потерять данные.
Формат файла
241 2026-08-14T19:02:11Z https://example.org/article чтение,фс Как устроен кэш в файловых системах
Поля разделены табуляцией: номер, время в UTC, адрес, теги через запятую, заголовок. Удалённая запись помечается минусом перед номером и никуда из файла не девается. Восстановить то что стёр не глядя, оказалось нужнее чем экономить байты.
Синхронизация
Своего механизма нет и не будет. Файл текстовый, так что достаточно положить каталог под git:
cd ~/.local/share/shelf
git init
git add shelf.txt
git commit -m "закладки"
При слиянии двух копий бывают конфликты по номерам. Это сознательный размен: с uuid файл стало бы невозможно читать глазами, а конфликт правится в редакторе за минуту.
Выход и коды возврата
0- успех, в том числе пустая выдача поиска1- запись не найдена2- ошибка в аргументах3- файл недоступен или повреждён