Use base
as an easy way to install the minimum essential libs/programs for open-source exploration and development. Works for Linux (Debian and Fedora based distros), Mac (via homebrew), and Windows (requires Windows Subsystem for Linux 2).
This document provides a complete reference to all functionality available in the base repository, including shell scripts, functions, and aliases. Commands are organized by workflow and purpose to help users discover and understand the tools available.
The shell functions and scripts are named to optimize tab-completion while using the CLI. Key patterns include:
- Prefix-based grouping: Type
repos-<TAB>
to see all repository management tools (scripts) - Function families: Type
venv-<TAB>
to see virtual environment tools (functions) - Tool installation: Type
<tool>-install<TAB>
to find installation functions - Example usage: Type
example-usage--<TAB>
to discover usage pattern functions
This comprehensive toolkit provides everything needed for a complete command-line development environment, from basic file operations to advanced multi-repository management and cloud operations. The conditional availability ensures that functionality is only exposed when the necessary dependencies are met, keeping the environment clean and focused.
git clone https://github.com/kenjyco/base ~/repos/base
cd ~/repos/base
source ./install.sh extras
Note: If you are in an interactive fish shell, do not source
install.sh
, but invoke eitherbash ./install.sh
ORzsh ./install.sh
The install.sh
script behaves differently if any of the following strings are
passed in:
clean
: ensures the git/docker completion files match installed versions (if packages were updated)extras
: also installs non-essential, but light-weight CLI packages likevim
,tmux
,tree
,ncdu
,glances
,nnn
and moregui
: also installs some light-weight GUI packges for Linux (including xorg-server,awesome
,rxvt-unicode
,feh
,scrot
, etc) or Mac (iTerm, vlc)all
: clean extras gui- this will also create the
~/tools-py
directory, with a virtual environment containing a number of python packages (likeasciinema
,awscli
,flake8
,twine
,httpie
,grip
, and more) - you can run
tools-py-install-all
later if desired
- this will also create the
After the selected system packages are installed, you will be prompted if you
want to update completions for bash. Type y
and hit enter.
Update completions for bash? [y/n] y
This ensures that tab-completion works and will also fetch the bash or zsh completion file for your version of
git
(anddocker
if installed).You can call
get-completions
again if you ever install newer versions ofgit
ordocker
in the future.
After that, you will be prompted to select your prompt style from five basic options. Type the desired number and hit enter.
Select prompt mode
1) system-default 3) terse 5) minimal-plus
2) verbose 4) minimal
?# 5
The verbose prompt includes the username, hostname, full path to the current working directory, and a newline for better visual separation. The terse prompt has the hostname and the name of the current working directory with no newline. The minimal prompt only has a single character, a newline, and no color. The minimal-plus prompt (my favorite) has a single character, a newline, and the name of the current working directory.
All custom prompts except 'minimal' have color and will show your current git branch if you are in a git repo.
If you are unsure, select option 2 (verbose). You can change your selection by running the
prompt-select-mode
command later.You can also change the prompt style for your current terminal by using any of the following:
prompt-system-default
,prompt-verbose
,prompt-terse
,prompt-minimal
, orprompt-minimal-plus
.
Finally, if you don't have your own custom .vimrc
or .tmux.conf
, you will be
prompted to clone and setup dotfiles. (Experienced users typically have their
own preferences stored in these files).
No local config found for vim or tmux.
Clone and setup dotfiles? [y/n] n
The dotfiles repo will be cloned next to the base repo, and a number of symbolic links will be created in your HOME directory, pointing to files in the dotfiles repo (
.ctags
,.editrc
,.gitconfig
,.inputrc
,.ipython
,.psqlrc
,.tmux.conf
,.tmux
,.vim
,.vimrc
,.vimrc
,.xinitrc
, and.Xdefaults
).You can use
dotfiles-install
later on if desired. See: https://github.com/kenjyco/dotfiles
When you source the install.sh
script, your package manager will install
or update some packages, three symbolic links will be created in your
$HOME
directory, and ~/commands.sh
will be "auto-sourced" at the end
(i.e. if using bash/zsh, the "shell functions" defined in ~/commands.sh
will
be "loaded" into your shell whenever you start a session, allowing you to call
any of those funcitons by name while using the terminal).
~/bin-base
-> /path/to/base/bin- directory containing some executable shell scripts
~/commands.fish
-> /path/to/base/commands.fish- file that can/should be sourced if using an interactive fish session
- only a small subset of what is available in commands.sh
~/commands.sh
-> /path/to/base/commands.sh- file that can/should be sourced if using an interactive bash/zsh session
- contains definitions of many useful shell functions and aliases
When you source ~/commands.sh
or ~/commands.fish
(directly or indirectly):
- GNU versions of
find
,grep
,sort
, andxargs
will be used if they are installed on a Mac (over the default BSD versions) - shell completions will be enabled for your installed versions of
git
anddocker
- vi keybindings will be used for navigating/editing the command line
- i.e. hit to enter "command mode" (to issue vi commands) and
i
/I
/a
/A
to get back to "insert mode" - effective to reinforce/practice vi motions for early learners
- i.e. hit to enter "command mode" (to issue vi commands) and
- any shell functions defined inside can be called
- Note: most functions/aliases are conditionally defined, meaning that
no assumptions are made about what programs are available to your
system...
- if a shell func or alias makes use of a particular program and you don't have that program installed on your system, the func or alias will not be defined
- if a shell func or alias requires using
sudo
(and you're not in the sudo/admin group, or the root user), the func or alias will not be defined
- Note: most functions/aliases are conditionally defined, meaning that
no assumptions are made about what programs are available to your
system...
- the
~/bin-base
directory will be added to your$PATH
environment variable, allowing you to invoke any of the scripts in there
base-update
That command will
cd
to wherever you initially cloned this base repository, pull in the latest changes viagit
, and re-source the install.sh file.
- Scripts: Executable files in
bin/
directory (marked with [script]) - Functions: Shell functions defined in
commands.sh
(marked with [function]) - Aliases: Short command aliases (marked with [alias])
Essential tools for moving around the filesystem and managing directories.
- [alias]
..
- Change to parent directory - [alias]
...
- Change to grandparent directory - [alias]
....
- Change to great-grandparent directory - [function]
cdd <directory>
- Create directory and change into it - [function]
here
- Get basename of current directory
Functions in this group are only available if ~/.base_path
file exists
- [function]
base
- Change to base repository directory - [function]
base-update
- Use git to update the base repository - [function]
dotfiles-install
- Clone the dotfiles repository next to base
Functions in this group are only available if ~/.dotfiles_path
file exists
- [function]
dotfiles
- Change to dotfiles repository directory - [function]
dotfiles-update
- Use git to update the dotfiles repository
Functions in this group are only available if the PACKAGE_REPOS_DIR
variable is set or ~/repos/personal/packages
directory exists
- [function]
package-repos
- Change to the packages directory containing a variety of repositories - [function]
kenjyco-usage-across-packages
- Usegrep-object-info
to show usage patterns across kenjyco packages
Comprehensive tools for managing multiple Git repositories across your development environment. The repos-* family provides a unified interface for analyzing, maintaining, and operating on multiple Git repositories simultaneously. All scripts accept an optional path parameter and use intelligent discovery to find repositories. This makes it very convenient if you organize your repositories into sub-directories.
- [script]
repos-list [path]
- Foundation script that discovers all Git repositories - [script]
repos-list-display [path]
- Display repository paths with home/current directory substitution
- [script]
repos-status [path]
- Comprehensive status overview showing branches, commits, stashes, and changes - [script]
repos-status--changes-only [path]
- Show only repositories with uncommitted changes - [script]
repos-dirs [path]
- Analyze repository directory distribution and organization - [script]
repos-last-commit-dates [path]
- Show last commit timestamp for each repository
- [script]
repos-branches [path] [pattern]
- Show branches with timestamps and pattern matchingpath
: Directory to searchpattern
: Branch name pattern to match
- [script]
repos-branches-all [path] [pattern]
- Extended branch view with complete history - [script]
repos-branches-short [path]
- Concise branch listing showing current branch per repo - [script]
repos-branches--non-master-develop [path]
- Show only non-standard branches
- [script]
repos-commits [path] [git-log-args...]
- Basic commit log across repositoriespath
: Directory to searchgit-log-args
: Any arguments passed to git log
- [script]
repos-commits2 [path] [git-log-args...]
- Detailed commit view with file changes - [script]
repos-commits3 [path] [git-log-args...]
- Full diff view with patches - [script]
repos-commits-not-on-master [path] [branch]
- Show commits unique to branches vs masterbranch
: Comparison branch (defaults to master)
- [script]
repos-commits-not-on-develop [path] [branch]
- Show commits unique to branches vs develop - [script]
repos-commits-since-last-tag [path]
- Show commits since most recent tag - [script]
repos-commits-since-last-tag--full [path]
- Complete commit history since last tag
- [script]
repos-files [path] [pattern]
- Search for files across repositories with modification timestampspattern
: File name pattern to match (grep -E
style accepted)
- [script]
repos-files-by-first-commit [path] [pattern]
- Files sorted by creation date - [script]
repos-files-quick [path]
- Fast file enumeration without timestamps - [script]
repos-files-counts [path]
- File count per repository - [script]
repos-files-counts-sorted [path]
- File counts sorted by quantity - [script]
repos-untracked-files [path]
- Show untracked files across repositories - [script]
repos-ignored-files [path]
- Show files matched by .gitignore
- [script]
repos-diffs [path] [git-diff-args...]
- Show working directory changesgit-diff-args
: Arguments passed to git diff
- [script]
repos-diffs-since-last-tag [path]
- Show all changes since last tag - [script]
repos-diffs-with-branch [path] [branch] [git-diff-args...]
- Compare current branch with anotherbranch
: Target branch for comparison (defaults to origin/develop)
- [script]
repos-tags [path]
- Show tag history with dates - [script]
repos-tags-messages [path]
- Show tag messages and annotations - [script]
repos-last-tag [path]
- Show most recent tag per repository - [script]
repos-last-tag-message [path]
- Show most recent tag message
- [script]
repos-update [path]
- Intelligent repository updating with stash/pull/pop logic - [script]
repos-update--skip-swps [path]
- Update repositories, skipping those with vim swap files - [script]
repos-fetch [path]
- Fetch updates, showing only repositories with changes - [script]
repos-delete-local-branches [path]
- Interactive branch cleanup with diff preview
- [script]
repos-name-email [path]
- Show git user configuration for each repository - [script]
repos-remotes [path]
- Show remote repository URLs - [script]
repos-show-stashes [path]
- Show all stashed changes with diffs
- [script]
repos-do [path] <command...>
- Execute arbitrary commands in each repositorycommand
: Shell command to execute in each repo
- [script]
repos-do-output [path] <command...>
- Execute commands, show only repositories with output
Complete toolkit for Python development environment management with cross-platform support.
- [script]
venv-setup [env_name] [clean]
- Complete virtual environment setup with dependency installation (ifrequirements.txt
file exists), pyenv integration (if.python-version
file exists), and automatic editable installs (ifsetup.py
file exists)env_name
: Name of virtual environment (defaults to 'venv')clean
: Remove existing environment first
- [script]
venv-setup-lite [env_name] [clean]
- Minimal virtual environment setup (not addingipython
,pytest
, orpdbpp
) - [script]
venv-clean [env_name]
- Clean virtual environment and build artifacts - [function]
venv-site-packages <env_name>
- Navigate to site-packages directory - [function]
venv-quick
- Quick venv creation with pip/wheel upgrade
- [script]
venv-ipython [env_name] [ipython-args...]
- Launch IPython in virtual environmentipython-args
: Arguments passed to IPython
- [script]
venv-pytest [env_name] [pytest-args...]
- Run pytest with comprehensive defaultspytest-args
: Arguments passed to pytest
- [script]
venv-pytest-no-warnings [env_name] [pytest-args...]
- Run pytest without warning output
- [script]
venv-freeze [env_name]
- Show installed packages - [script]
venv-deptree [env_name] [pipdeptree-args...]
- Show dependency tree visualizationpipdeptree-args
: Arguments passed to pipdeptree
- [script]
venv-pip-version [env_name]
- Get pip version in environment
Advanced file finding tools with intelligent filtering and extensive customization options.
- [script]
findit [dir] [options...]
- Comprehensive file finder with extensive filtering optionsdir
: Directory to search (defaults to current)--depth <number>
: Maximum search depth--type <f|d|l|s|b>
: File type (file, directory, link, socket, block)--pattern <patterns>
: Comma-separated filename patterns--ipattern <patterns>
: Comma-separated filename patterns (case insensitive)--complex <string>
: Raw options passed directly tofind
--exclude_dirs <patterns>
: Comma-separated directories to exclude--iexclude_dirs <patterns>
: Comma-separated directories to exclude (case insensitive)--exclude <patterns>
: Comma-separated filename patterns to exclude--iexclude <patterns>
: Comma-separated filename patterns to exclude (case insensitive)--exts <extensions>
: Comma-separated file extensions to include--iexts <extensions>
: Comma-separated file extensions to include (case insensitive)--sizes <sizes>
: Size filters (+/-2G, +1M, etc.)--empty
: Empty files only--not_empty
: Non-empty files only--months <number>
: Files modified within months--weeks <number>
: Files modified within weeks--days <number>
: Files modified within days--hours <number>
: Files modified within hours--minutes <number>
: Files modified within minutes--pipe <command>
: Pipe results to command--pipesort <command>
: Pipe sorted results to command--zero
: Print matching filenames delimited by null char (-print0) to pipe toxargs -0 -I {}
--stamp
: Prepend timestamps to output--help
: Show help message with options and examples
- [function]
findit-default-excludes
- Find with standard development exclusions - [function]
findit-py
- Find Python files - [function]
findit-py-no-tests
- Find Python files excluding test directories - [function]
findit-test-dirs
- Find test directories - [function]
findit-node-modules
- Find node_modules directories - [function]
findit-js-backend
- Find backend JavaScript files - [function]
findit-tf
- Find Terraform files - [function]
findit-docs
- Find documentation files - [function]
findit-pics
- Find image files - [function]
findit-audio
- Find audio files - [function]
findit-vids
- Find video files - [function]
findit-logs
- Find log files - [function]
findit-json-slow
- Find JSON files (thorough method)
- [function]
swps
- Find vim swap files with timestamps - [function]
swps-no-stamp
- Find vim swap files without timestamps - [function]
swps-delete
- Delete vim swap files
- [function]
delete-node-modules
- Delete all node_modules directories - [script]
clean-py
- Remove Python build artifacts (.eggs, pycache, build, dist) - [function]
show-mac-garbage
- Show macOS system files (.DS_Store, etc.) - [function]
delete-mac-garbage
- Delete macOS system files
Powerful tools for searching and analyzing code across projects with intelligent filtering.
- [function]
grepit <pattern>
- Recursive grep with smart exclusions and color outputpattern
: Search pattern (supports regex)
- [function]
grepit-count <pattern>
- Count grep matches by file - [function]
grepit-count-dirs <pattern>
- Count grep matches by directory - [function]
grepit-non-matching-files <pattern>
- Find files without matches - [function]
grepit-cut <pattern>
- Truncated grep output for overview - [function]
grepit-exact <pattern>
- Exact word matching
- [function]
grepit-py <pattern>
- Search Python files only - [function]
grepit-py-no-tests <pattern>
- Search Python files excluding test directories - [function]
grepit-py-imports
- Find Python import statements - [function]
grepit-py-imports-no-tests
- Find Python imports excluding tests - [function]
grepit-md <pattern>
- Search markdown files
- [function]
grepit-no-docs <pattern>
- Search excluding documentation files - [function]
grepit-no-docs-no-tests <pattern>
- Search excluding docs and tests - [function]
grepit-md-include-venv-and-node_modules <pattern>
- Search markdown including normally excluded directories
- [function]
grepit-tabs
- Find tab characters in files - [function]
grepit-todo
- Find TODO comments - [function]
grep-object-info <object>
- Analyze object method/attribute usage patternsobject
: Python object to analyze
- [function]
grep-object-info-no-tests <object>
- Analyze object usage excluding tests
- [function]
grep-logs <pattern>
- Search in log files - [function]
logs-empty
- Find empty log files - [function]
logs-empty-delete
- Delete empty log files - [function]
logs-wcl
- Count lines in log files - [function]
logs-info
- Find INFO entries in logs - [function]
logs-error
- Find ERROR entries in logs - [function]
logs-debug
- Find DEBUG entries in logs
Streamlined installation and management of development tools with automatic environment setup. Most installation functions create isolated environments and automatically make tools available after installation by re-sourcing commands.sh.
- [function]
get-completions
- Download bash/zsh completions for git and docker
These functions are only available if the respective tools don't already exist
- [function]
pyenv-install
- Install Python Version Manager - [function]
nvm-install
- Install Node Version Manager - [function]
gvm-install
- Install Go Version Manager - [function]
rust-install
- Install/update Rust via rustup
- [function]
tools-py-install-all
- Install comprehensive Python tool suite in isolated environment (~/tools-py
directory)- includes: asciinema, awscli, flake8, twine, httpie, ipython, jupyter, grip, rdbtools, sql-helper
Tools are installed in ~/tools-py/venv
and wrapper functions are created automatically
- [function]
asciinema-install
- Install terminal session recorder - [function]
flake8-install
- Install Python linting tool - [function]
jupyter-install
- Install Jupyter notebook environment - [function]
twine-install
- Install Python package publishing tool - [function]
grip-install
- Install markdown preview server - [function]
aws-install
- Install AWS CLI
Tools are installed in ~/tools-py/venv
and wrapper functions are created automatically
- [function]
http-install
- Install HTTPie HTTP client - [function]
sql-install
- Install SQL helper tools - [function]
rdb-install
- Install Redis RDB analysis tools
- [function]
kubectl-install
- Install Kubernetes CLI - [function]
kind-install
- Install Kubernetes in Docker - [function]
terraform-install
- Install multiple Terraform versions - [function]
circleci-install
- Install CircleCI CLI - [function]
docker-install
- Install Docker (Linux only, requires sudo)
- [function]
kenjyco-install-dev-setup
- Install kenjyco development libraries - [function]
kenjyco-dev-setup
- Run kenjyco development environment setup - [function]
kenjyco-full-update
- Update kenjyco libraries with full dependencies
Tools for managing multiple versions of programming languages and their dependencies. Functions in this section are only available if the respective version managers are installed.
Available only if pyenv is installed
- [function]
pyenv-list-installable
- List available Python versions for installation - [function]
pyenv-list-grep <pattern>
- Search available Python versionspattern
: Version pattern to match
- [function]
pyenv-list-versions-installed
- List currently installed Python versions - [function]
pyenv-list-python-version-files
- Find .python-version files in projects - [function]
pyenv-install-latest-python
- Install latest stable Python version - [function]
pyenv-pip-versions
- Show pip versions across pyenv installations - [function]
pyenv-package-versions <package>
- Show package versions across pyenv installationspackage
: Python package name
- [function]
pyenv-select-python-versions-to-install
- Interactive Python version selection - [function]
tools-py-create-venv-from-pyenv-version
- Create tools-py venv from specific pyenv version
Available only if gvm is installed
- [function]
go-version
- Get current Go version - [function]
go-minor-version
- Get Go minor version - [function]
gvm-list-installable
- List available Go versions - [function]
gvm-list-installable-all
- List all available Go versions - [function]
gvm-list-versions-installed
- List installed Go versions - [function]
gvm-install-latest-go
- Install latest Go version
Enhanced file listing and content display tools with timestamps and formatting options.
- [function]
f
- List files with modification timestamps - [function]
fa
- List files including hidden ones - [function]
f5
- List last 5 modified files - [function]
f10
- List last 10 modified files - [function]
d
- List directories with timestamps - [function]
da
- List directories including hidden ones - [function]
d5
- List last 5 modified directories - [function]
d10
- List last 10 modified directories - [function]
l
- List symbolic links - [function]
la
- List symbolic links including hidden ones - [function]
l5
- List last 5 symbolic links - [function]
l10
- List last 10 symbolic links
- [function]
cat-with-titles
- Display files with delimited section headers - [function]
cat-with-titles-pound
- Display files with pound sign headers - [function]
cat-with-titles-html
- Display files with HTML comment headers
Available only if tree command exists
- [function]
t
- Tree view with file type indicators - [function]
td
- Tree view showing directories only
- [script]
clean-path-outputs
- Clean up file paths in piped output (replaces $PWD with '.', $HOME with '~'), used mostly withrepos-*
scripts
Comprehensive tools for monitoring system resources, processes, and hardware status.
- [function]
system-info
- Comprehensive system information display - [function]
dfh
- Disk usage with intelligent filtering - [function]
duh
- Directory sizes sorted by size - [function]
now
- Current timestamp - [function]
utcnow
- Current UTC timestamp - [function]
now-banner
- Current time as large banner text (if banner command exists)
- [function]
p
- Show user processes with filtering - [function]
pa
- Show all processes - [function]
psome
- Show filtered processes excluding system components - [function]
papps
- Show macOS applications (requires perl with PCRE support) - [function]
pst
- Process tree display (if pstree exists)
- [function]
etc-group
- Display system groups - [function]
etc-passwd
- Display system users
Functions in this group require specific system tools (linux only)
- [function]
battery
- Show battery status and remaining time (requires acpi) - [function]
hardware
- Show detailed hardware information (requires lshw and sudo)
Available only if lsblk command exists (linux only)
- [function]
partitions
- Show disk partitions and mount points - [function]
partitions-uuid
- Show partitions with UUIDs - [function]
partitions-by-size
- Show partitions sorted by size - [function]
partitions-iso9960-only
- Show ISO9660 partitions only - [function]
partitions-snap-only
- Show snap partitions only - [function]
lsblk-all-fields-json
- Show all partition fields as JSON
- [function]
env-var-names
- List environment variable names - [function]
paths
- Display PATH components on separate lines - [function]
crontab-active
- Show active cron jobs
Watch functions require watch command
- [function]
watchit <command>
- Watch command output every 10 secondscommand
: Command to execute repeatedly
- [function]
watch-battery
- Continuously monitor battery status - [function]
watch-partitions
- Continuously monitor partition status
Tools for network configuration, WiFi management, and remote access setup.
- [script]
ip-local
- Get local IP addresses (excludes loopback and private ranges) - [script]
ip-local-all
- Get all local IP addresses including private ranges - [script]
ip-public
- Get public IP address via external services - [function]
dig-short <hostname>
- Quick DNS lookup (requires dig)hostname
: Domain name to resolve
Available only if nmcli (NetworkManager) exists (linux only)
- [function]
nmcli-list-networks
- List available WiFi networks - [function]
nmcli-status
- Show network connection status - [function]
nmcli-connect-to <ssid>
- Connect to WiFi networkssid
: WiFi network name
- [function]
nmcli-reconnect-to <ssid>
- Reconnect to known WiFi network
These functions require sudo privileges
- [function]
lsof-ports-ipv4
- Show IPv4 port usage - [function]
nmap-local-machines10
- Scan 10.x.x.x network for hosts - [function]
nmap-local-machines192
- Scan 192.168.x.x networks for hosts
- [function]
sshlazy
- Lazy SSH key loading and management - [function]
sshlazy-select
- Interactive SSH key selection - [function]
ssh-fix-permissions
- Fix SSH directory and key permissions
Enhanced Git workflow tools for advanced repository management and automation. Git aliases are only available if git command exists.
- [alias]
glog
- Formatted git log with colors and concise output - [alias]
glog2
- Git log with file change status - [alias]
glog3
- Git log with full patches and statistics
- [function]
git-email-address
- Get git email configuration for current repository - [function]
git-merge-in <branch>
- Merge branch with automatic stash handlingbranch
: Branch to merge into current branch
- [function]
git-stash-parts
- Interactive partial stashing - [function]
git-stash-all-with-comment <comment>
- Stash all changes with descriptive commentcomment
: Description for the stash
- [function]
git-update-submodules
- Update all git submodules recursively
- [function]
lazy-add-commit <file>
- Add specific file and commit with generated messagefile
: File to add and commit
- [function]
lazy-commit-from-added-files
- Commit only files already added to staging
Complete Docker workflow management for containers, images, and system maintenance. All functions are only available if docker command exists.
- [function]
docker-login
- Login to Docker registry with token handling - [function]
docker-get-auth-token
- Retrieve Docker authentication token - [function]
docker-delete-all-images
- Delete all Docker images - [function]
docker-delete-untagged-images
- Delete untagged images only - [function]
docker-delete-unused-images
- Delete unused images - [function]
docker-show-all-images
- Display all Docker images - [function]
docker-show-untagged-images
- Display untagged images
- [function]
docker-stop-all-containers
- Stop all running containers - [function]
docker-delete-all-containers
- Delete all containers - [function]
docker-show-all-containers
- Display all containers - [function]
docker-shell <container>
- Open interactive shell in containercontainer
: Container name or ID
- [function]
docker-prune
- Prune Docker system (remove unused data) - [function]
docker-ls
- List all Docker resources - [function]
docker-destroy-all
- Destroy all Docker images and containers - [function]
docker-top
- Show Docker resource usage - [function]
docker-show-all-images-and-containers
- Display images then containers - [function]
docker-show-all-containers-and-images
- Display containers then images
Tools for AWS cloud infrastructure management and multi-region operations. All functions are only available if aws command exists.
- [function]
beanstalk-versions-by-app
- Show Beanstalk application versions - [function]
beanstalk-total-versions
- Count total Beanstalk versions across apps
- [function]
aws-region-names
- List all AWS region names - [function]
aws-region-cycle <command>
- Execute command across all AWS regionscommand
: AWS CLI command to run in each region
System package management tools for different Linux distributions and package managers.
Available only if apt-cache command exists
- [function]
acs <package>
- Search packages starting with namepackage
: Package name to search
- [function]
acs2 <package>
- Search packages containing name - [function]
upgradable
- List packages available for upgrade - [function]
apt-sources
- Show APT repository sources - [function]
manually-installed
- Show manually installed packages
Available only if yum command exists
- [function]
yum-search <package>
- Search YUM repositories for packagepackage
: Package name to search
Tools for handling multimedia files, weather information, and news content. Many functions require external services or specific tools.
Functions are conditionally available based on installed tools
- [alias]
feh
- Enhanced image viewer with scaling (if feh exists) - [alias]
fehf
- Fullscreen image viewer with maximum zoom (if feh exists) - [function]
pics-view
- View images using feh - [function]
audio-play
- Play audio files using mocp - [function]
vids-play
- Play video files using VLC - [alias]
vlc
- VLC media player (macOS, if VLC.app exists) - [function]
vlcf
- VLC in fullscreen mode
Available only if required conversion tools exist
- [function]
to_mp3 <file>
- Convert audio/video file to MP3 (requires ffmpeg)file
: Source file to convert
- [function]
to_rst <file>
- Convert markdown file to ReStructuredText (requires pandoc)file
: Markdown file to convert
Requires curl for external service access
- [function]
weather-now [location]
- Get current weather informationlocation
: City or location (optional)
- [function]
weather-forecast [location]
- Get weather forecast - [function]
news-help
- Show news service help - [function]
news-search <query>
- Search news articlesquery
: Search terms
- [function]
news-cat-business
- Get business news - [function]
news-cat-entertainment
- Get entertainment news - [function]
news-cat-general
- Get general news - [function]
news-cat-health
- Get health news - [function]
news-cat-science
- Get science news - [function]
news-cat-sports
- Get sports news
Tools for working with documentation files and markup formats. Most functions require pandoc or other document processing tools.
Available only if pandoc exists
- [function]
mdcat
- Convert markdown to plain text - [function]
mdless
- Page markdown as plain text - [function]
mdview
- View markdown in lynx browser (requires lynx) - [function]
grip-many
- Serve multiple markdown files with grip server
Available only if jq exists
- [function]
jq-pretty-less
- Pretty print JSON with paging
Advanced terminal management, recording, and desktop environment control. Many functions require specific GUI tools or X11 environment.
Available only if urxvt exists
- [function]
windowsize <size> [title]
- Open new terminal with specific sizesize
: Terminal size (e.g., "80x24")title
: Window title (optional)
- [function]
big-window
- Open large terminal window - [function]
newwin [title] [geometry]
- Open new terminal windowtitle
: Window title (optional)geometry
: Window geometry (optional)
- [function]
new-asciicast-win
- Open optimized window for asciinema recording
Requires asciinema
- [function]
asciicast [title]
- Record terminal session with tmuxtitle
: Recording title (optional)
- [function]
asciicast-no-tmux [title]
- Record terminal session without tmux
Requires recordmydesktop
(linux only)
- [function]
screencast [title]
- Record desktop screentitle
: Recording title (optional)
- [function]
screencast-not-on-the-fly [title]
- Record desktop without real-time encoding
Requires scrot
(linux only)
- [function]
screenshot
- Take screenshot - [function]
scrot-loop
- Interactive screenshot loop
- [function]
Tmux [session]
- Attach to or create tmux sessionsession
: Session name (optional)
- [function]
Tmux-join <session>
- Join existing tmux sessionsession
: Session name to join
Available only in X11 environments with appropriate tools (linux only)
- [function]
wallpaper-select-mode
- Select wallpaper display mode (requires wallpaper scripts) - [function]
wallpaper-select
- Select specific wallpaper - [function]
xrandr-connected-displays
- Show connected displays (requires xrandr) - [function]
xrandr-fix-monitors [position]
- Configure multiple monitor setupposition
: Monitor position (e.g., "left", "right")
Available only if xscreensaver exists
- [function]
screensaver-stop
- Stop screensaver - [function]
screensaver-start
- Start screensaver - [function]
screensaver-select
- Select screensaver configuration - [function]
lockscreen
- Lock screen
Tools for creating and managing notes and documentation files.
- [script]
note [filename|directory]
- Create/edit timestamped markdown filesfilename
: Specific filename (optional)directory
: Directory for new note (optional)
- [script]
note2 [filename|directory]
- Enhanced note-taking with header insertion
Specialized tools for development workflows, testing, and code analysis.
- [function]
funcs-list
- List most available shell functions - [function]
funcs-list-all
- List all shell functions including hidden ones - [function]
funcs-list-hidden
- List hidden shell functions only - [function]
funcs-that-do
- List functions containing "do" in their name - [function]
funcs-that-install
- List functions containing "install" in their name
Available only if circleci command exists
- [function]
circleci-local-test <job>
- Test CircleCI job locallyjob
: CircleCI job name to test
- [function]
redis-usage <dump_path>
- Analyze Redis memory usage from dump filedump_path
: Path to Redis dump file
Tools for searching command history and accessing documentation.
- [function]
grep-history <pattern>
- Search shell command historypattern
: Search pattern
- [function]
grep-history-exact <pattern>
- Exact word search in command history - [function]
grep-history-comments
- Find commented entries in command history
- [function]
helpme <command>
- Show complete function and script definitionscommand
: Command to get help for
- [function]
commands-functions-aliases
- Export all commands to file and view withless
- [function]
man-f <command>
- Show short manual descriptioncommand
: Command to describe
- [function]
man-list
- List all available manual pages - [function]
man-grep <command> <phrase> [lines]
- Search manual pagescommand
: Manual page to searchphrase
: Text to findlines
: Context lines (optional)
Tools that enhance vim workflow and provide specialized editing capabilities.
- [function]
vimdiff-dirs <dir1> <dir2>
- Directory comparison in vim (requires vim-dirdiff plugin)dir1
: First directory to comparedir2
: Second directory to compare
- [function]
vim-spell
- Open vim with spell checking enabled
Advanced system administration tools requiring elevated privileges. Most functions in this section require sudo access and are only available to users in admin groups.
Available only to users with sudo privileges
- [function]
newuser <username> [sudo|docker]
- Create new user with optional privilegesusername
: New user account namesudo|docker
: Additional group membership (optional)
- [function]
newusergit <username>
- Create specialized git user accountusername
: Git user account name
- [function]
purgeuser <username>
- Delete user and home directoryusername
: User account to remove
- [function]
sudo-users
- Show members of sudo group - [function]
etc-shadow
- Show system shadow file entries
Requires sudo privileges
- [function]
set-hostname <hostname>
- Set system hostnamehostname
: New system hostname
- [function]
ntp-sync-now
- Synchronize system time with NTP servers
Available only on systems with APT and requires sudo
- [function]
make-security-only-list
- Create security-only APT sources list - [function]
do-security-upgrades
- Apply security updates only - [function]
uninstall-hard <package>
- Completely purge package and dependenciespackage
: Package to remove
Available only to users with sudo privileges
- [alias]
shutdown
- Immediate system shutdown - [alias]
reboot
- System reboot - [alias]
hibernate
- System hibernation
Tools for backup management and repository creation.
- [script]
backup.py [source] [destination]
- Intelligent rsync wrapper with exclusionssource
: Source directory to backupdestination
: Backup destination
- [script]
makerepo <repo_name>
- Create and initialize remote Git repositoryrepo_name
: Name of new repository
Tools for security analysis and certificate management.
- [script]
check-cert-and-key <cert_file> <key_file>
- Verify SSL certificate and key matchingcert_file
: SSL certificate filekey_file
: SSL private key file
Miscellaneous system utilities and specialized tools.
- [script]
iso_to_usb.sh <device> <iso_file>
- Create bootable USB from ISO imagedevice
: USB device (e.g., /dev/sdb)iso_file
: ISO image file
- [script]
get_install_requires.py <setup.py> [setup.py...]
- Extract requirements from setup.py filessetup.py
: One or more setup.py files to analyze
Available only if pumount command exists
- [function]
pumount-these
- Unmount multiple removable devices
Available only on macOS with Homebrew
- [function]
brew-describe-installed
- Show descriptions of installed Homebrew packages - [function]
brew-reinstall-non-casks
- Reinstall Homebrew formula packages
Tools for customizing the shell environment and prompt appearance.
- [function]
parse_git_branch
- Get current git branch for prompt display - [function]
prompt-system-default
- Switch to system default prompt - [function]
prompt-verbose
- Switch to verbose prompt with full path and git info - [function]
prompt-terse
- Switch to terse prompt with minimal information - [function]
prompt-minimal
- Switch to minimal prompt - [function]
prompt-minimal-plus
- Switch to minimal prompt with git branch info - [function]
prompt-select-mode
- Interactive prompt style selection
- [function]
fontsize <size>
- Change terminal font sizesize
: Font size number
- [function]
draw-delimiter-line [width] [pattern] [rows]
- Draw custom delimiter lineswidth
: Line width (defaults to terminal width)pattern
: Two-character pattern (defaults to "&%")rows
: Number of rows (defaults to 1)
- [function]
draw-delimiter-line--pound [width] [rows]
- Draw pound sign delimiters - [function]
draw-delimiter-line--html [width] [fill_char] [rows]
- Draw HTML comment delimiters
Self-documenting functions that demonstrate usage patterns from the actual codebase. These functions are only available if the base repository path is set.
- [function]
example-usage--date-format-strings
- Show date format string examples from codebase - [function]
example-usage--tr
- Show tr command usage patterns - [function]
example-usage--cut
- Show cut command usage patterns - [function]
example-usage--sort
- Show sort command usage patterns - [function]
example-usage--git
- Show git command usage patterns - [function]
example-usage--git-log
- Show git log usage patterns - [function]
example-usage--xargs
- Show xargs usage patterns - [function]
example-usage--IFS
- Show IFS (Internal Field Separator) usage
- [function]
example-usage--substitutions-perl
- Show perl substitution patterns - [function]
example-usage--substitutions-sed
- Show sed substitution patterns - [function]
example-usage--test-regex-match
- Show regex matching examples
- [function]
example-usage--grepit
- Show grepit usage patterns from codebase - [function]
example-usage--iterate-repos
- Show repository iteration patterns
- [function]
example-usage--user-input-bash
- Show bash user input patterns - [function]
example-usage--user-input-zsh
- Show zsh user input patterns
Wrapper functions for external tools installed in the tools-py virtual environment. These functions are only available if the tools are installed in ~/tools-py/venv
.
- [function]
tools-py-python
- Run Python interpreter from tools-py environment - [function]
asciinema
- Terminal session recorder - [function]
flake8
- Python code linting - [function]
flakeit
- Filtered flake8 output excluding common warnings - [function]
flakeit-full
- Complete flake8 output - [function]
jupyter
- Jupyter notebook server - [function]
twine
- Python package publishing
- [function]
sql-ipython
- SQL helper IPython environment - [function]
kenjyco-ipython
- Kenjyco development IPython environment - [function]
grip
- Markdown preview server - [function]
rdb
- Redis RDB file analysis
- [function]
aws
- AWS CLI wrapper - [function]
http
- HTTPie HTTP client
- [function]
yt-download
- YouTube video downloader - [function]
yt-download-upgrade
- Upgrade YouTube downloader
These aliases are only created on macOS when GNU tools are available
- [alias]
find=gfind
- Use GNU find instead of BSD find - [alias]
grep=ggrep
- Use GNU grep instead of BSD grep - [alias]
sort=gsort
- Use GNU sort instead of BSD sort - [alias]
xargs=gxargs
- Use GNU xargs instead of BSD xargs
Available only in zsh
- [alias]
help=run-help
- Enhanced help system for zsh
Available only if kenjyco-ipython function exists
- [alias]
ipy=kenjyco-ipython
- Quick access to kenjyco IPython environment