Share.Ninja

Die Kommandozeile

sninja ist Share.Ninja im Terminal. Das Programm gibt Dateien per Link frei und lädt fremde Links herunter, mit demselben Konto und denselben Links wie die Apps. Die Dateien werden auf deinem Rechner verschlüsselt, bevor sie ihn verlassen, und der Link geht beim Empfänger in jedem Browser auf.

Installation

macOS 13 oder neuer auf Apple Silicon, per Homebrew:

brew install shareninjahq/sninja/sninja

Windows 10 oder neuer, x64, per winget:

winget install Share.Ninja.CLI

Ob alles da ist, zeigt sninja --version.

Per Link freigeben

sninja put report.pdf photos/

Das Programm verschlüsselt die Dateien, lädt sie hoch und gibt den Link aus. Schick ihn, wem du willst: Der Link geht in jedem Browser auf, der Empfänger braucht weder App noch Konto.

Ein Verzeichnisname gibt das Verzeichnis selbst frei. Mit Schrägstrich am Ende oder als Glob wird nur sein Inhalt freigegeben:

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

Optionen:

-d "Q3 slides"
Eine Beschreibung der Freigabe; sie wird angezeigt, wenn jemand den Link öffnet.
--validity 12h
Wie lange der Link gilt: Sekunden oder 90s, 15m, 12h, 7d, 2w; 0 heißt, bis du ihn selbst löschst. Standard sind sieben Tage. Mehr, als dein Tarif erlaubt, wird auf das Maximum des Tarifs gekürzt, und das Programm sagt dir das.
--streams 1
Eine Datei nach der anderen hochladen; Standard sind fünf gleichzeitig.

Herunterladen

Erst nachsehen, was drin ist:

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

--table zeigt statt des Baums Größen und Datum, --path docs beginnt in einem Unterordner, --non-recursive nur eine Ebene. Dann:

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

Die Dateien landen im Verzeichnis aus -o, standardmäßig im aktuellen. Setz den Link in Anführungszeichen, sonst verschluckt die Shell alles nach dem #.

--filter 'docs/**/*.pdf'
Nur die Dateien laden, deren Pfad zum Muster passt.
--force
Ist ein Name schon vergeben, die Datei als „Name 1“ daneben ablegen statt abzubrechen.

Ein abgebrochener Download macht weiter, wo er aufgehört hat: einfach dasselbe get noch einmal starten.

Ein Link ohne Upload

sninja direct build/ --ttl 3600

Das Programm gibt sofort einen Link aus und liefert die Dateien direkt von diesem Rechner, solange es läuft. In die Cloud geht nichts. Beende es mit Strg+C oder gib mit --ttl eine Laufzeit in Sekunden vor; danach gibt es so oder so nichts mehr herunterzuladen. Genau das ist der Sinn.

Dein Konto

Alles bisher geht ohne Konto. Melde dich an, wenn du deine Freigaben auch auf deinen anderen Geräten sehen willst:

sninja auth login

Das öffnet den Browser zum Anmelden. Die Sitzung liegt im Schlüsselbund des Systems; sninja auth status zeigt sie, sninja auth logout entfernt sie.

Ein neues Gerät bekommt Zugriff erst, wenn ein Gerät, dem du schon vertraust, es bestätigt. Das gilt auch für dieses Terminal:

sninja vault join --wait

Das Programm gibt den Fingerabdruck des Geräts aus und wartet. Bestätige die Anfrage auf einem vertrauten Gerät, vergleich dabei den Fingerabdruck, und der Befehl endet angemeldet. Ohne --wait kehrt er sofort zurück; sninja vault status zeigt, wo du stehst.

Angemeldet:

sninja links
Deine Links; ohne Anmeldung die Links dieses Geräts.
sninja link <token>
Ein Link im Detail. Mit --mint gibt der Befehl einen frischen, versandfertigen Link auf dieselbe Freigabe aus.

Eine Freigabe beenden geht bisher nur in der App oder auf share.ninja; die Kommandozeile hat dafür noch keinen Befehl.

Skripte

Fortschritt und Status landen ebenfalls auf stdout, nimm den Link also aus den letzten Zeilen, nicht aus der ganzen Ausgabe. list, link und links schreiben ihr Ergebnis auf Wunsch als JSON in eine Datei: --json <file>. Logs gehen nach stderr; --verbose macht sie ausführlicher.