Share.Ninja

La riga di comando

sninja è Share.Ninja nel terminale. Il programma condivide file con un link e scarica i link degli altri, con lo stesso account e gli stessi link delle app. I file vengono cifrati sul tuo computer prima di uscirne, e il link si apre in qualsiasi browser di chi lo riceve.

Installazione

macOS 13 o successivo su Apple Silicon, con Homebrew:

brew install shareninjahq/sninja/sninja

Windows 10 o successivo, x64, con winget:

winget install Share.Ninja.CLI

Per controllare che sia tutto a posto: sninja --version.

Condividere con un link

sninja put report.pdf photos/

Il programma cifra i file, li carica e stampa il link. Mandalo a chi vuoi: si apre in qualsiasi browser, e chi lo riceve non ha bisogno né dell'app né di un account.

Con il nome di una cartella si condivide la cartella intera. Con una barra finale, o con un glob, solo quello che contiene:

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

Opzioni:

-d "Q3 slides"
Una descrizione della condivisione; la vede chi apre il link.
--validity 12h
Quanto dura il link: secondi, oppure 90s, 15m, 12h, 7d, 2w; 0 vuol dire finché non lo cancelli tu. Il default è sette giorni. Se chiedi più di quanto consente il tuo piano, la durata viene ridotta al massimo del piano e il programma te lo dice.
--streams 1
Caricare un file alla volta; il default è cinque in parallelo.

Scaricare

Prima puoi guardare cosa c'è dentro:

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

--table mostra dimensioni e date al posto dell'albero, --path docs parte da una cartella interna, --non-recursive mostra un solo livello. Poi:

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

I file finiscono nella cartella indicata con -o, di default quella corrente. Metti il link tra virgolette, altrimenti la shell si mangia tutto quello che segue il #.

--filter 'docs/**/*.pdf'
Scaricare solo i file il cui percorso corrisponde al pattern.
--force
Se il nome è già occupato, salvare il file accanto come «Nome 1» invece di fermarsi.

Un download interrotto riprende da dove si era fermato: basta rilanciare lo stesso get.

Un link senza caricare nulla

sninja direct build/ --ttl 3600

Il programma stampa subito un link e serve i file direttamente da questo computer finché resta in esecuzione. Nel cloud non va nulla. Fermalo con Ctrl+C o dagli una durata in secondi con --ttl; in ogni caso, dopo non resta niente da scaricare. È proprio questo il punto.

Il tuo account

Tutto quanto sopra funziona senza account. Accedi se vuoi ritrovare le tue condivisioni anche sugli altri dispositivi:

sninja auth login

Si apre il browser per l'accesso. La sessione resta nel portachiavi di sistema: sninja auth status la mostra, sninja auth logout la rimuove.

Un nuovo dispositivo entra solo dopo la conferma da un dispositivo di cui ti fidi già. Questo terminale non fa eccezione:

sninja vault join --wait

Il programma stampa l'impronta del dispositivo e aspetta. Approva la richiesta su un dispositivo fidato, controllando che l'impronta corrisponda, e il comando termina con l'accesso effettuato. Senza --wait ritorna subito; sninja vault status ti dice a che punto sei.

Con l'accesso effettuato:

sninja links
I tuoi link; senza accesso, i link di questo dispositivo.
sninja link <token>
Un link in dettaglio. Con --mint il comando stampa un nuovo link alla stessa condivisione, pronto da inviare.

Per ora una condivisione si chiude solo dall'app o su share.ninja; la riga di comando non ha ancora un comando per farlo.

Script

Anche progresso e stato vanno su stdout, quindi prendi il link dalle ultime righe e non da tutto l'output. list, link e links possono scrivere il risultato in un file JSON: --json <file>. I log vanno su stderr; --verbose li rende più dettagliati.