Skip to main content

Zip and share files from the terminal — no browser needed.

Project description

shrip

Zip and share files from the terminal — no browser needed.

shrip bundles files and folders into a compressed archive and uploads it to gofile.io, giving you a temporary public download link instantly. No accounts, no configuration, no context-switching.

Installation

Ubuntu / Debian:

sudo apt install pipx
pipx ensurepath   # adds ~/.local/bin to PATH (one-time setup, restart terminal after)
pipx install shrip

macOS:

brew install pipx
pipx ensurepath
pipx install shrip

Windows:

pip install pipx
pipx ensurepath
pipx install shrip

With pip (any OS):

pip install shrip

On Ubuntu 23.04+ and other modern distros, pip install is blocked by default to protect the system Python. Use pipx instead — it installs shrip in an isolated environment and adds it to your PATH automatically.

From GitHub:

pip install git+https://github.com/nbfrodri/shrip.git

Requires Python 3.9 or higher. Works on Windows, macOS, and Linux.

Updating

# If installed with pipx
pipx upgrade shrip

# If installed with pip
pip install --upgrade shrip

Uninstalling

# If installed with pipx
pipx uninstall shrip

# If installed with pip
pip uninstall shrip

Usage

# Share a single file
shrip report.pdf

# Share multiple files and folders
shrip ./src/ README.md logo.png --name project-handover

# Custom archive name
shrip ./build/ -n release-v2

# Copy the link to clipboard
shrip file.txt --copy

# Open in browser after upload
shrip file.txt --open

# Skip compression (faster for ISOs, videos, archives, etc.)
shrip ubuntu.iso --fast

# Upload to a specific region (eu or na)
shrip bigfile.tar.gz --zone na

# Combine flags
shrip ./dist/ -n release -c -o

Exclude patterns

Skip files and directories by glob pattern:

# Skip a single pattern
shrip ./my-project/ --exclude 'node_modules'

# Multiple patterns
shrip ./my-project/ -e 'node_modules' -e '*.log' -e '.env'

# .gitignore patterns are automatically respected
# Use .shripignore for additional patterns (same syntax)
echo '*.log' >> .shripignore
shrip ./my-project/

# Skip .shripignore and .gitignore processing
shrip ./my-project/ --no-ignore

Preview before uploading

# See what would be archived without uploading
shrip ./my-project/ --dry-run

# Combine with exclude to fine-tune
shrip ./my-project/ --dry-run -e 'node_modules' -e '.git'

Encryption

Protect archives with AES-256 encryption:

# Interactive password prompt
shrip secrets.txt --password

# Read password from a file
shrip secrets.txt --password-file keyfile.txt

# Read password from environment variable
SHRIP_PASSWORD=secret shrip secrets.txt --password-env

Multiple upload services

# Default (gofile.io — no size limit, ~10 days retention)
shrip file.txt

# Upload to transfer.sh (14-day retention)
shrip file.txt --service transfer

# Upload to 0x0.st (512 MB limit, 30 days–1 year retention)
shrip file.txt --service 0x0

# List available services
shrip --list-services

JSON output

Machine-readable output for scripting and CI/CD:

# JSON output
shrip file.txt --json

# Use with jq
URL=$(shrip file.txt --json | jq -r '.url')

# JSON dry run
shrip ./project/ --json --dry-run

Example output:

Compressing 3 items (4.8 MB) into project-handover.zip...
⠋ Compressing ████████████████████████████████████ 100% 4.8/4.8 MB
Compressed to 1.2 MB (75% smaller). Uploading...
⠋ Uploading   ████████████████████████████████████ 1.2/1.2 MB  850.3 kB/s

╭──────────── Ready to share ────────────╮
│                                        │
│  https://gofile.io/d/AbCd123           │
│                                        │
│  SHA256: a1b2c3...                     │
│  MD5:    d4e5f6...  (gofile)           │
│                                        │
╰──────── Link copied! ─────────────────╯

(Files are automatically deleted after a period of inactivity.)

Options

Flag Short Description Default
--name -n Custom archive name (without .zip) shrip_archive
--copy -c Copy the download link to clipboard off
--open -o Open the download link in your browser off
--fast -f Skip compression (faster for pre-compressed files) off
--zone -z Upload region: eu (Europe) or na (North America) auto
--exclude -e Glob pattern to exclude (repeatable) none
--dry-run Preview what would be archived off
--json Output results as JSON off
--password -p Encrypt archive with AES-256 (interactive prompt) off
--password-file Read encryption password from a file none
--password-env Read password from SHRIP_PASSWORD env var off
--service -s Upload service: gofile, transfer, or 0x0 gofile
--list-services List available upload services and exit
--no-ignore Skip .shripignore and .gitignore processing off
--version -v Show version and exit
--help Show usage help

Environment Variables

Variable Description Example
SHRIP_NAME Default archive name SHRIP_NAME=build
SHRIP_FAST Enable fast mode SHRIP_FAST=1
SHRIP_COPY Auto-copy link to clipboard SHRIP_COPY=1
SHRIP_ZONE Default upload zone SHRIP_ZONE=eu
SHRIP_SERVICE Default upload service SHRIP_SERVICE=transfer
SHRIP_EXCLUDE Comma-separated exclude patterns SHRIP_EXCLUDE=*.log,.git
SHRIP_PASSWORD Encryption password (with --password-env) SHRIP_PASSWORD=secret
NO_COLOR Disable colored output NO_COLOR=1

Exit Codes

Code Meaning
0 Success
1 Error (invalid path, upload failure, bad arguments)
130 Interrupted (Ctrl+C)

Upload Services

Service Max Size Retention Auth
gofile.io (default) Unlimited ~10 days inactive No
transfer.sh ~10 GB 14 days No
0x0.st 512 MB 30 days – 1 year No

How It Works

  1. Validates that all provided paths exist.
  2. Checks disk space in the temp directory and warns if low.
  3. Compresses everything into a temporary .zip archive — directories are walked recursively, preserving folder structure. Already-compressed formats (.iso, .mp4, .zip, .jpg, etc.) are stored without compression to save time. Files matching --exclude patterns, .shripignore, and .gitignore rules are skipped.
  4. Uploads the archive to the selected service (anonymous, no account needed). Supports streaming upload for large files with minimal memory usage.
  5. Prints the download URL with SHA256/MD5 checksums (and copies/opens it if requested).
  6. Deletes the temporary zip file automatically — even if the upload fails or you hit Ctrl+C.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shrip-1.0.1.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shrip-1.0.1-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file shrip-1.0.1.tar.gz.

File metadata

  • Download URL: shrip-1.0.1.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shrip-1.0.1.tar.gz
Algorithm Hash digest
SHA256 66586f8cbfec3a3f05b343905e6bed596ed02b115fd6a42228fab32c4b7894f3
MD5 ffd83ed8ea39d9103216b9fd0c373137
BLAKE2b-256 42f097fdb74f11b195caa6cd9affe49403c9fe3321c41deec8af2b2558959df2

See more details on using hashes here.

Provenance

The following attestation bundles were made for shrip-1.0.1.tar.gz:

Publisher: publish.yml on nbfrodri/shrip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shrip-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: shrip-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shrip-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f1e5a781facce07cad45563d251f1843216e844f1ade716d31164f8cd2b94d0
MD5 a47a86a0cbd323119099e7d1902f1f39
BLAKE2b-256 7920e83132f3e37ee608bf81d21e231c4d85c68821791904b896b1a2d3a95f51

See more details on using hashes here.

Provenance

The following attestation bundles were made for shrip-1.0.1-py3-none-any.whl:

Publisher: publish.yml on nbfrodri/shrip

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page