{"id":29272105,"url":"https://github.com/acook/my-scripts","last_synced_at":"2026-02-14T18:32:02.501Z","repository":{"id":1322671,"uuid":"1267772","full_name":"acook/my-scripts","owner":"acook","description":"A collection of scripts I've written over the years to solve weirdly specific situations.","archived":false,"fork":false,"pushed_at":"2025-08-31T18:54:09.000Z","size":290,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-06T20:50:03.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acook.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-01-18T17:06:50.000Z","updated_at":"2025-08-31T18:54:12.000Z","dependencies_parsed_at":"2023-10-16T03:15:20.882Z","dependency_job_id":"db995fcb-14da-481f-857a-8e9b3705ca75","html_url":"https://github.com/acook/my-scripts","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/acook/my-scripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acook%2Fmy-scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acook%2Fmy-scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acook%2Fmy-scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acook%2Fmy-scripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acook","download_url":"https://codeload.github.com/acook/my-scripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acook%2Fmy-scripts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29452371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-05T00:10:33.489Z","updated_at":"2026-02-14T18:32:02.487Z","avatar_url":"https://github.com/acook.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Script Repository\n\nThis 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.\n\nAll scripts use either `bash` or `ruby` unless otherwise indicated.\n\n# Installation\n\n```shell\n  ./install\n```\n\nThe installer script will create symlinks to `~/bin` and `~/xbin` then pull down other repos specified in `.gitmodules`.\n\n## Included Tools\n\n| Script | Description |\n| ---- | ---- |\n| ccat | Colorized `cat` which detects and uses one of several colorizers and falls back to plain text |\n| common_factors | Find all the common factors among an arbitrarily long list of inputs |\n| d | Simple dice roller, shows each dice pool in a separate table `5d6 1d20`  with each result and the total |\n| diealot | A kill script which attempts to give a process a chance to exit gracefully, using stronger measures with silly output for each step |\n| fdls | List all processes with their number of open file descriptors (may take a while) |\n| get | Wrapper around `curl`/`wget` with sane defaults to make them behave similarly and display result in terminal, used by other `get*` scripts |\n| getip | Shows current machine's IP as seen from an external service, may return IPv6 or IPv4 |\n| git-author | Git subcommand to rewrite the author name and info on past commits, used to fix incorrect email addresses |\n| git-children-of | Git subcommand to display the children of a given commit |\n| git-dates | Git subcommand to display the dates of the most recent commits for each branch in a repo |\n| halp | searches many different sources for command help and pages them with `ccat` |\n| mass_rm | Delete all files from a list in specified file which match a grep pattern |\n| newest | Finds the newest binary in a path and runs it, handy when generating a lot of builds in one folder |\n| 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`) |\n| recite | Using Piper TTS it will read input text out to your default audio device |\n| remove_trailing_whitespace | Removes the trailing whitespace from files |\n| retry | Rerun any command until it succeeds |\n| sdtest | A quick hack to test if an SD card or other storage drive is fake or failing, only use if `f3` is unavailable |\n| snr | A quick and dirty way to do a search and replace on all the files in a directory using perl regex |\n| sudeploy | Login as a user that has no shell or is set `nologin` |\n| system-clipboard | Script which interacts with the system clipboard on MacOS and Xwindows |\n| tmux-resume | Sets up a `tmux` session and automatically resumes it if present, will set up integration with iTerm if available |\n| ttscleaner | Removes unnecessary newlines and bracketed citations that often pepper academic papers to make for smoother TTS reading |\n| wacom-touch | Directly set the trackpad functionality of a Wacom tablet |\n| wacom-touch-toggle | Toggle the trackpad functionality of a Wacom tablet |\n| wacom-wrapper | Wraps the `xsetwacom` tool and provides status and error handling |\n| watcher | Continually reports on the presence of processes by name or attribute |\n| 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` |\n| winekill | Kill all processes running with a given WINE path |\n| yt | Download video from sites using `yt-dlp` |\n| hex_to_ansi.rb | Convert hex RGB to ANSI codes |\n| run_tags.rb | A script to run ctags on all `.rb` files in a project, can install git hooks to do the same |\n\n### MacOS Scripts\n\nScripts that are only known to work on MacOS.\n\n| Script | Description |\n| ---- | ---- |\n| dns | Quickly swap between DHCP and various public DNS servers on MacOS from the commandline |\n| inpkg | Helper script to use MacOS installers from the commandline |\n| locatedb | Little more than a reminder for how to update the Locate DB on MacOS |\n| macos_unlock_network_pane | Unlocks the network pane in MacOS settings, useful in case of a rogue system policy or other issues |\n| runsys | A weird abuse of the shebang line which only works on MacOS |\n| 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 |\n| sockmonkey | Set up a SOCKS tunnel over SSH for browsers to proxy through, only works on MacOS |\n\n### Weirdly Specific\n\nThese might be specific to my setup or rarely useful to others.\n\n| Script | Description |\n| ---- | ---- |\n| wacom-blender | A Wacom tablet configuration for Blender |\n| wacom-krita | A Wacom tablet configuration for Krita |\n| wacom-setup | A Wacom tablet configuration starting point |\n| testtable.bash | Prints a truth table to show how different tests work |\n| colortable | Print out the 16 basic ANSI colors and the rest of the 256 color palette |\n| rcolor | A Ruby script which displays a 256 color table, it is faster than `colortable` |\n| bashrgb | A set of simple bash functions for basic terminal styling |\n| prompt_helpers | A sort of reference table of bash functions often interesting to writing shell prompts |\n| mdcontent | Display content of all markdown files in a directory, ignoring frontmatter, intended to be used for compiling stats |\n| resync | Rsync wrapper with retries, uses environment variables for configuration |\n| anorm | Normalize the volume of an audio file |\n| avmerge | Combine an audio file into a video file |\n| avmergenorm | Normalize an audio file and combine it with a video file, uses `anorm` and `avmerge` |\n| csig | Display a sorted list of the C/C++ function signatures for a given list or directory of files |\n| 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 |\n| 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 |\n\n### WIP/Outdated Scripts\n\nThese may be broken or are otherwise only still here as a reminder to myself.\n\n| Script | Description |\n| ---- | ---- |\n| calcdie | **WIP** Dice Expression Parser, can write like `5d5 + 4d2` and it will roll the dice and add them together for you |\n| editcode | **WIP** intended to identify which code editors are available and usable in the current environment and launch the best one |\n| 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 |\n| group_hash_db | **WIP** Sketch of an in-memory store |\n| neuvo_prompt | **WIP** Old bash prompt |\n| dl.rb | **WIP** Simple download manager |\n| stringmanip.zsh | **WIP** String manipulation examples in ZSH |\n| git_prompt | An old script for a git-aware bash prompt |\n| hg_prompt | An old Mercurial-aware bash prompt |\n| xeiprompt | Yet another bash prompt |\n| 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? |\n| rails_helpers | A pile of aliases and functions to simplify common tasks when doing Rails development (possibly outdated) |\n| vbox_update | Automate upgrading VirtualBox (possibly no longer working?) |\n| qube | An old script to set up Kubernetes locally with RabbitMQ |\n| ytav | Downloads audio and video separately then normalizes the audio and combines them into one, uses `yt`, `avnorm` |\n| window_title.zsh | ZSH script to set the terminal window title |\n| ecal | Calculates the output voltage of a voltage divider given its input voltage and the rating of its resistors |\n| getipinfo | Shows a little more detail about current host's connection |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facook%2Fmy-scripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facook%2Fmy-scripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facook%2Fmy-scripts/lists"}