linux CLI tools and scripts
| file | description |
|---|---|
| add | sum all numbers from input |
| add-shebang | add shebang line to file and make executable |
| addnl | add newline to end of input if missing |
| addts.py | prefix each line with timestamp |
| allkeys.py | print unique JSON keys from JSONL input |
| atuin-history-fixer.py | fix atuin shell history metadata format |
| autoclick | automated mouse clicking using cliclick |
| badge | set iTerm2 badge text from command line |
| basenames | print basename for each line of input |
| behead | print first N lines to stderr, rest to stdout |
| cat-head | concatenate files with filename headers |
| cat-prefix | concatenate files with filename prefix per line |
| catfn | grep all lines from files recursively |
| cc-mcp | manage MCP servers for tools |
| cdbm | bookmark utility for shell directory navigation |
| chomp | remove trailing newlines |
| click-random | rapidly click random keys (Minecraft tool) |
| comma-split | convert commas to newlines |
| commify.rb | format numbers with comma separators |
| config-git-personal | configure git with personal user info |
| csv-header-nospace | remove spaces from CSV headers |
| csv-long | display CSV in long format (one column per line) |
| csv-transpose | transpose CSV rows and columns |
| csv2xml.py | convert CSV to XML |
| csvcat | concatenate multiple CSV files |
| ctags-regen | regenerate ctags for project |
| cumsum | calculate cumulative sum of numbers |
| dateplot.py | create plots from date-based data |
| datesplit.rb | split data by date ranges |
| dirnames | print directory name for each line |
| docx2md.sh | convert DOCX to markdown |
| dotplot.py | create dot plots from data |
| dseq2 | generate date sequences |
| dumb-quotes | convert smart quotes to plain quotes |
| f | fuzzy file finder shortcut |
| ff | fast file find |
| ff1 | find first matching file |
| ffg | find files and grep |
| file-exentions.py | analyze file extensions in directory |
| file-selector | interactive file selector |
| final-newline | ensure file ends with newline |
| first-last | print first and last lines |
| firstn | print first N lines |
| frequency | count frequency of input lines |
| gapfinder.py | find gaps in sequential data |
| gcauto.py | automatic git commit helper |
| gcr | git commit with reuse message |
| gcx | git commit extended |
| gday | good morning git commit helper |
| getit | download file from URL |
| gnite | good night git commit helper |
| grony | run gron on YAML files (convert YAML to gron) |
| gzwc | word count for gzipped files |
| h1 | extract H1 headers from markdown |
| hashjoin.py | join two datasets by hash key |
| head_tail.py | show head and tail of file |
| hgrep | grep with highlighting |
| hgrepa | grep with highlighting (all matches) |
| hide | hide file or directory (add dot prefix) |
| histogram.py | create text histograms from data |
| histogram2.py | alternative histogram generator |
| iisort | case-insensitive sort |
| images-to-pdf.py | combine images into PDF |
| isort | intelligent sort |
| j2jsonl | convert JSON to JSONL |
| jcut | extract fields from JSON |
| jitter_plot | create jitter plots |
| join-to-csv.py | join data and output as CSV |
| jset.py | set operations on JSON data |
| json-flatten.py | flatten nested JSON |
| json2jsonl | convert JSON array to JSONL |
| json2yaml.py | convert JSON to YAML |
| jsonl_pp | pretty-print JSONL |
| jsonl2json | convert JSONL to JSON array |
| ka | kill all matching processes |
| kssh | kill SSH connections |
| kvsplit.py | split key-value pairs |
| latest | find most recently modified files |
| lchop | chop characters from left side |
| line-get | get specific line number from input |
| linex | execute command on each line |
| logkv | parse key-value logs |
| logn | take log of numbers |
| lookupfilter.py | filter data by lookup table |
| lower | convert text to lowercase |
| lshift.py | remove leading whitespace from lines |
| lstrip | strip whitespace from left |
| ltrim | trim whitespace from left |
| make-history.pl | generate shell history |
| mermaid_enricher.py | enrich mermaid diagrams |
| mov2gif.py | convert MOV to GIF |
| mtga | Magic: The Gathering Arena helper |
| nbcat | concatenate Jupyter notebooks |
| noblank | remove blank lines |
| nocolor | strip ANSI color codes |
| nothink.py | remove thinking tags from LLM output |
| nowrap | disable line wrapping |
| numonly | extract only numbers from input |
| o | quick open command |
| parquet2jsonl.py | convert Parquet to JSONL |
| parse-kv-csv.py | parse key-value formatted CSV |
| pathsplit | split PATH variable |
| pbcopya | copy to pasteboard and append |
| pbcopyf | copy file contents to pasteboard |
| pbpastea | paste from pasteboard with append |
| pbpastef | paste from pasteboard to file |
| port-hog | find process using specific port |
| pretty_reprint.py | pretty-print and reformat output |
| progress | show progress indicator |
| py2json.py | convert Python to JSON |
| pytmpl | Python template processor |
| quantize_times.py | round timestamps to intervals |
| relcopy | copy file with relative path |
| remove-leading-whitespace.rb | remove leading whitespace |
| rename | batch rename files |
| repo-author-stats | analyze git repository author statistics |
| resub | regex substitution on input |
| resub.py | regex substitution (Python version) |
| round | round numbers to nearest integer |
| rstrip | strip whitespace from right |
| rtrim | trim whitespace from right |
| scroll_image.py | create scrolling image animation |
| slideshow-fade-audio.sh | create slideshow with fade and audio |
| space-split | split on spaces |
| ssh-keycat | concatenate SSH public keys |
| t1 | run test once |
| table-guide.py | generate table formatting guide |
| table-parser.py | parse ASCII tables |
| table2long | convert table to long format |
| tdigester.py | calculate t-digest statistics |
| timestamp | add timestamps |
| tobinary | convert to binary representation |
| tolower | convert to lowercase |
| trim_image.py | trim whitespace from images |
| trim.rb | trim whitespace |
| trimnl | trim newlines |
| tw2llm.py | Timewarrior report for LLM analysis |
| unescape | unescape special characters |
| unflatten-json.py | unflatten flattened JSON |
| unhide | unhide file or directory (remove dot prefix) |
| unixtime | convert Unix timestamps (bash version) |
| unixtime.py | convert Unix timestamps (Python version) |
| untabulate.py | remove table formatting |
| urldecode | decode URL-encoded strings |
| uuid-filter | filter or generate UUIDs |
| vack | ack search in vim |
| vdl | vim download location |
| vff | vim fuzzy find |
| vifind | find and open in vim |
| vimrc | vim configuration helper |
| vz | vim with fzf integration |
| weather | display weather information |
| wordsplit | split into words |
| yaml2json.py | convert YAML to JSON |