Share.Ninja

La línea de comandos

sninja es Share.Ninja en el terminal. El programa comparte archivos por enlace y descarga los enlaces de otros, con la misma cuenta y los mismos enlaces que las apps. Los archivos se cifran en tu ordenador antes de salir de él, y el enlace se abre en cualquier navegador de quien lo recibe.

Instalación

macOS 13 o posterior en Apple Silicon, con Homebrew:

brew install shareninjahq/sninja/sninja

Windows 10 o posterior, x64, con winget:

winget install Share.Ninja.CLI

Para comprobar que está todo: sninja --version.

Compartir por enlace

sninja put report.pdf photos/

El programa cifra los archivos, los sube e imprime el enlace. Envíaselo a quien quieras: se abre en cualquier navegador, y quien lo recibe no necesita ni app ni cuenta.

Con el nombre de una carpeta se comparte la carpeta entera. Con una barra al final, o con un glob, solo lo que hay dentro:

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

Opciones:

-d "Q3 slides"
Una descripción del compartido; la ve quien abre el enlace.
--validity 12h
Cuánto dura el enlace: segundos, o 90s, 15m, 12h, 7d, 2w; 0 significa hasta que lo borres tú. Por defecto, siete días. Si pides más de lo que permite tu plan, se recorta al máximo del plan y el programa te lo dice.
--streams 1
Subir de un archivo en uno; por defecto son cinco a la vez.

Descargar

Primero puedes mirar qué hay dentro:

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

--table muestra tamaños y fechas en vez del árbol, --path docs empieza en una carpeta interior, --non-recursive muestra un solo nivel. Después:

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

Los archivos van a la carpeta de -o, por defecto la actual. Pon el enlace entre comillas, o el shell se comerá todo lo que hay después del #.

--filter 'docs/**/*.pdf'
Descargar solo los archivos cuya ruta coincide con el patrón.
--force
Si el nombre ya existe, guardar el archivo al lado como «Nombre 1» en vez de parar.

Una descarga interrumpida sigue donde se quedó: basta con ejecutar el mismo get otra vez.

Un enlace sin subir nada

sninja direct build/ --ttl 3600

El programa imprime un enlace al momento y sirve los archivos desde este ordenador mientras siga en marcha. A la nube no sube nada. Páralo con Ctrl+C o dale una duración en segundos con --ttl; en cualquier caso, después ya no queda nada que descargar. De eso se trata.

Tu cuenta

Todo lo anterior funciona sin cuenta. Inicia sesión si quieres ver tus compartidos también en tus otros dispositivos:

sninja auth login

Abre el navegador para iniciar sesión. La sesión se guarda en el llavero del sistema: sninja auth status la muestra, sninja auth logout la borra.

Un dispositivo nuevo solo entra cuando lo aprueba uno en el que ya confías. Este terminal no es una excepción:

sninja vault join --wait

El programa imprime la huella del dispositivo y espera. Aprueba la solicitud en un dispositivo de confianza, comprobando que la huella coincide, y el comando termina con la sesión iniciada. Sin --wait vuelve al momento; sninja vault status te dice en qué punto estás.

Con la sesión iniciada:

sninja links
Tus enlaces; sin sesión, los enlaces de este dispositivo.
sninja link <token>
Un enlace en detalle. Con --mint imprime un enlace nuevo al mismo compartido, listo para enviar.

Dejar de compartir, por ahora, solo se puede desde la app o en share.ninja; la línea de comandos aún no tiene ese comando.

Scripts

El progreso y el estado también salen por stdout, así que toma el enlace de las últimas líneas y no de toda la salida. list, link y links pueden escribir el resultado en un archivo JSON: --json <file>. Los logs van a stderr; --verbose los hace más detallados.