Various shell scripts that are useful enough to me to keep in my PATH
.gitignore | ||
bates | ||
cf | ||
checknode | ||
comfy | ||
ddns | ||
delpycache | ||
emoji-flag | ||
get | ||
gitpurge | ||
gitscan | ||
import-finder | ||
kip | ||
lsd | ||
mamba-exporter | ||
mamba-importer | ||
murder | ||
nocomment | ||
noon | ||
nv | ||
pf | ||
pippin | ||
pull | ||
README.md | ||
serv | ||
sij | ||
summarize | ||
tmux-merge | ||
txt-line-merge-abc | ||
txtsort | ||
uninstall | ||
up | ||
vitals | ||
vpn | ||
z |
PATH-worthy Scripts 🛠️
A collection of various scripts I use frequently enough to justify keeping them in my system PATH.
I haven't written documentation for all of these scripts. I might in time.
For now, here's just a few highlights. But first:
Installation
# Clone the repository
git clone https://sij.ai/sij/pathScripts.git
# Add to PATH on macOS
echo 'export PATH="$PATH:$HOME/path/to/pathScripts"' >> ~/.zshrc
source ~/.zshrc
# Add to PATH on Debian/Ubuntu
echo 'export PATH="$PATH:$HOME/path/to/pathScripts"' >> ~/.bashrc
source ~/.bashrc
Make scripts executable:
cd pathScripts
chmod +x *
📄 bates - PDF Bates Number Tool
Extracts and renames PDFs based on Bates numbers.
Setup
pip3 install pdfplumber
# For OCR support:
pip3 install pytesseract pdf2image
brew install tesseract poppler # macOS
# or
sudo apt-get install tesseract-ocr poppler-utils # Debian
Usage
bates /path/to/folder --prefix "FWS-" --digits 6 --name-prefix "FWS "
Key Features
- Extracts Bates numbers from text/scanned PDFs
- Renames files with number ranges
- Prepare files for use with my Bates Source Link DEVONthink script
- Preserves original names in Finder comments
- OCR support for scanned documents
- Dry-run mode with
--dry-run
Options
--prefix
: The Bates number prefix to search for (default: "FWS-")--digits
: Number of digits after the prefix (default: 6)--ocr
: Enable OCR for scanned documents--dry-run
: Test extraction without renaming files--name-prefix
: Prefix to use when renaming files--log
: Set logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
Examples
# Test without making changes
bates /path/to/pdfs --prefix "FWS-" --digits 6 --dry-run
# Rename files with OCR support
bates /path/to/pdfs --prefix "FWS-" --digits 6 --name-prefix "FWS " --ocr
Notes
- Always test with
--dry-run
first - Original filenames are preserved in Finder comments (macOS only)
- OCR is disabled by default to keep things fast
📦 kip - Intelligent Python Package Installer
A smart package installer that automates Python dependency management, supporting both mamba and pip.
Setup
chmod +x kip
Usage
kip <package1> [<package2> ...] # Install specific packages
kip <script.py> # Install from Python file
kip -r <requirements.txt> # Install from requirements file
Key Features
- Smart import detection in Python files
- Handles package name corrections automatically
- Uses mamba first, falls back to pip
- Supports multiple installation methods
- Filters out built-in modules
Examples
# Install single package
kip requests
# Analyze script and install dependencies
kip analysis.py
# Install from requirements
kip -r requirements.txt
Package Corrections
Automatically corrects common package names:
yaml
→pyyaml
dateutil
→python-dateutil
dotenv
→python-dotenv
newspaper
→newspaper3k
Notes
- Requires Python 3.x
- Works with mamba or pip
- Provides clear installation feedback
- Ignores built-in modules and generic names
🔒 vpn - Tailscale Exit Node Manager
Privacy-focused Tailscale exit node management.
Setup
pip3 install requests
Usage
vpn <action> # actions: start, stop, new, shh
Actions
start
: Connect to a suggested exit node if not already connectedstop
: Disconnect from current exit nodenew
: Switch to a new suggested exit nodeshh
: Connect to a random exit node in a privacy-friendly country
Key Features
- Auto-connects to suggested nodes
- Privacy-friendly country selection (SE, CH, DE, FI, NL, NO)
- Connection verification via Mullvad API
- Default Tailscale arguments:
--exit-node-allow-lan-access
--accept-dns
--accept-routes
Examples
vpn start # Connect to suggested node
vpn shh # Connect via privacy-friendly country
Verification
- Checks Tailscale's reported exit node
- Verifies connection using Mullvad's API
- Confirms hostname matches
Notes
- Requires active Tailscale configuration
- Internet connectivity needed for verification
- Some commands may need admin privileges
More scripts will be documented as they're updated. Each script includes --help
for detailed usage information.