Share.Ninja

Командная строка

sninja — это Share.Ninja в терминале. Команда раздаёт файлы по ссылке и скачивает по чужим ссылкам, работает с тем же аккаунтом и теми же ссылками, что и приложения. Файлы шифруются на вашем компьютере ещё до отправки, а ссылка открывается у получателя в любом браузере.

Установка

macOS 13 и новее на Apple Silicon, через Homebrew:

brew install shareninjahq/sninja/sninja

Windows 10 и новее, x64, через winget:

winget install Share.Ninja.CLI

Проверить, что всё встало: sninja --version.

Раздать по ссылке

sninja put report.pdf photos/

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

Если указать имя каталога, раздаётся сам каталог. Слеш в конце или glob раздают только его содержимое:

sninja put build # a folder named build sninja put build/ # the contents of build

Параметры:

-d "Q3 slides"
Описание раздачи; его увидит тот, кто откроет ссылку.
--validity 12h
Срок жизни ссылки: секунды или 90s, 15m, 12h, 7d, 2w; 0 — пока не удалите сами. По умолчанию семь дней. Если запросить больше, чем разрешает тариф, срок урежется до максимума тарифа, и команда об этом скажет.
--streams 1
Загружать по одному файлу; по умолчанию пять параллельно.

Скачать

Сначала можно посмотреть, что внутри:

sninja list 'https://share.ninja/#…' --tree

--table покажет вместо дерева размеры и даты, --path docs начнёт с папки внутри раздачи, --non-recursive выведет только один уровень. Затем:

sninja get 'https://share.ninja/#…' -o ~/Downloads

Файлы попадают в каталог, указанный в -o, по умолчанию в текущий. Ссылку берите в кавычки, иначе оболочка отбросит всё после #.

--filter 'docs/**/*.pdf'
Скачать только файлы, чей путь подходит под шаблон.
--force
Если имя занято, положить файл рядом как «Имя 1», а не останавливаться.

Прерванное скачивание продолжается с того места, где остановилось: просто запустите тот же get ещё раз.

Ссылка без загрузки в облако

sninja direct build/ --ttl 3600

Команда сразу печатает ссылку и раздаёт файлы прямо с этого компьютера, пока работает. В облако ничего не загружается. Остановите её по Ctrl+C или задайте --ttl в секундах; в любом случае после этого скачивать будет нечего. В этом и смысл.

Аккаунт

Всё описанное выше работает без аккаунта. Войдите, если хотите видеть свои раздачи и на других устройствах:

sninja auth login

Команда откроет браузер для входа. Сессия хранится в системной связке ключей: sninja auth status её показывает, sninja auth logout удаляет.

Новое устройство получает доступ только после подтверждения с устройства, которому вы уже доверяете. Этот терминал не исключение:

sninja vault join --wait

Команда напечатает отпечаток устройства и будет ждать. Подтвердите запрос на доверенном устройстве, сверив отпечаток, и команда завершится с выполненным входом. Без --wait она вернётся сразу; sninja vault status покажет, на каком этапе вы находитесь.

После входа:

sninja links
Список ваших ссылок; без входа — ссылок этого устройства.
sninja link <token>
Подробности одной ссылки. С --mint команда напечатает свежую ссылку на ту же раздачу, готовую к отправке.

Закрыть раздачу пока можно только из приложения или на share.ninja; в командной строке такой команды ещё нет.

Скрипты

Прогресс и статус тоже печатаются в stdout, поэтому ссылку берите из последних строк, а не из всего вывода. list, link и links умеют писать результат в файл в формате JSON: --json <file>. Логи идут в stderr; --verbose делает их подробнее.