This a big collection of scripts and simple tools that I've written over the years, it also includes submodules to other scripts. First moved into git in 2010 but with a prehistory going back to at least 2006.
All scripts use either bash or ruby unless otherwise indicated.
./installThe installer script will create symlinks to ~/bin and ~/xbin then pull down other repos specified in .gitmodules.
| Script | Description |
|---|---|
| ccat | Colorized cat which detects and uses one of several colorizers and falls back to plain text |
| common_factors | Find all the common factors among an arbitrarily long list of inputs |
| d | Simple dice roller, shows each dice pool in a separate table 5d6 1d20 with each result and the total |
| diealot | A kill script which attempts to give a process a chance to exit gracefully, using stronger measures with silly output for each step |
| fdls | List all processes with their number of open file descriptors (may take a while) |
| get | Wrapper around curl/wget with sane defaults to make them behave similarly and display result in terminal, used by other get* scripts |
| getip | Shows current machine's IP as seen from an external service, may return IPv6 or IPv4 |
| git-author | Git subcommand to rewrite the author name and info on past commits, used to fix incorrect email addresses |
| git-children-of | Git subcommand to display the children of a given commit |
| git-dates | Git subcommand to display the dates of the most recent commits for each branch in a repo |
| halp | searches many different sources for command help and pages them with ccat |
| mass_rm | Delete all files from a list in specified file which match a grep pattern |
| newest | Finds the newest binary in a path and runs it, handy when generating a lot of builds in one folder |
| orphanage | Lists all untracked files from a directory, useful for running in a directory to see if it contains non-git subfolders or git repos with files that have yet to be committed (uses ripgrep) |
| recite | Using Piper TTS it will read input text out to your default audio device |
| remove_trailing_whitespace | Removes the trailing whitespace from files |
| retry | Rerun any command until it succeeds |
| sdtest | A quick hack to test if an SD card or other storage drive is fake or failing, only use if f3 is unavailable |
| snr | A quick and dirty way to do a search and replace on all the files in a directory using perl regex |
| sudeploy | Login as a user that has no shell or is set nologin |
| system-clipboard | Script which interacts with the system clipboard on MacOS and Xwindows |
| tmux-resume | Sets up a tmux session and automatically resumes it if present, will set up integration with iTerm if available |
| ttscleaner | Removes unnecessary newlines and bracketed citations that often pepper academic papers to make for smoother TTS reading |
| wacom-touch | Directly set the trackpad functionality of a Wacom tablet |
| wacom-touch-toggle | Toggle the trackpad functionality of a Wacom tablet |
| wacom-wrapper | Wraps the xsetwacom tool and provides status and error handling |
| watcher | Continually reports on the presence of processes by name or attribute |
| whatkind | Prints all of the files in the current directly with different colors based on their detected libmagic file type, the simple Ruby predecessor to acook/lister |
| winekill | Kill all processes running with a given WINE path |
| yt | Download video from sites using yt-dlp |
| hex_to_ansi.rb | Convert hex RGB to ANSI codes |
| run_tags.rb | A script to run ctags on all .rb files in a project, can install git hooks to do the same |
Scripts that are only known to work on MacOS.
| Script | Description |
|---|---|
| dns | Quickly swap between DHCP and various public DNS servers on MacOS from the commandline |
| inpkg | Helper script to use MacOS installers from the commandline |
| locatedb | Little more than a reminder for how to update the Locate DB on MacOS |
| macos_unlock_network_pane | Unlocks the network pane in MacOS settings, useful in case of a rogue system policy or other issues |
| runsys | A weird abuse of the shebang line which only works on MacOS |
| safe-reattach-to-user-namespace | Runs reattach-to-user-namespace if available, and just runs the provided command directly if not, only useful on particular combinations of MacOS and tmux/screen due to some weird quirk of the OS |
| sockmonkey | Set up a SOCKS tunnel over SSH for browsers to proxy through, only works on MacOS |
These might be specific to my setup or rarely useful to others.
| Script | Description |
|---|---|
| wacom-blender | A Wacom tablet configuration for Blender |
| wacom-krita | A Wacom tablet configuration for Krita |
| wacom-setup | A Wacom tablet configuration starting point |
| testtable.bash | Prints a truth table to show how different tests work |
| colortable | Print out the 16 basic ANSI colors and the rest of the 256 color palette |
| rcolor | A Ruby script which displays a 256 color table, it is faster than colortable |
| bashrgb | A set of simple bash functions for basic terminal styling |
| prompt_helpers | A sort of reference table of bash functions often interesting to writing shell prompts |
| mdcontent | Display content of all markdown files in a directory, ignoring frontmatter, intended to be used for compiling stats |
| resync | Rsync wrapper with retries, uses environment variables for configuration |
| anorm | Normalize the volume of an audio file |
| avmerge | Combine an audio file into a video file |
| avmergenorm | Normalize an audio file and combine it with a video file, uses anorm and avmerge |
| csig | Display a sorted list of the C/C++ function signatures for a given list or directory of files |
| uninstall_all_gems | Uninstall all Ruby gems in the current environment, as a backup for if gem uninstall -aIx on its own isn't working |
| gg | A manager for Go's GOPATH environment variable which can easily isolate multiple Go source trees, similar to a virtual environment in Python or a gemset in Ruby, also works as a library to be included in other bash scripts |
These may be broken or are otherwise only still here as a reminder to myself.
| Script | Description |
|---|---|
| calcdie | WIP Dice Expression Parser, can write like 5d5 + 4d2 and it will roll the dice and add them together for you |
| editcode | WIP intended to identify which code editors are available and usable in the current environment and launch the best one |
| gimme | WIP similar to get but was supposed to invoke the download on a remote server, compress the file, and then transfer it, for bandwidth limited localhosts |
| group_hash_db | WIP Sketch of an in-memory store |
| neuvo_prompt | WIP Old bash prompt |
| dl.rb | WIP Simple download manager |
| stringmanip.zsh | WIP String manipulation examples in ZSH |
| git_prompt | An old script for a git-aware bash prompt |
| hg_prompt | An old Mercurial-aware bash prompt |
| xeiprompt | Yet another bash prompt |
| dl | Wrapper for curl to download a list of files and retry failures with some additional helpers, possibly obsolete with newer versions of curl having most of these features? |
| rails_helpers | A pile of aliases and functions to simplify common tasks when doing Rails development (possibly outdated) |
| vbox_update | Automate upgrading VirtualBox (possibly no longer working?) |
| qube | An old script to set up Kubernetes locally with RabbitMQ |
| ytav | Downloads audio and video separately then normalizes the audio and combines them into one, uses yt, avnorm |
| window_title.zsh | ZSH script to set the terminal window title |
| ecal | Calculates the output voltage of a voltage divider given its input voltage and the rating of its resistors |
| getipinfo | Shows a little more detail about current host's connection |