Noddy Help DevOps in macOS
| Command | Description |:star: Now with plugins! You can check the plugins folder: /toyland/plugins
Contributions to add new plugins and keep improving the existing ones are welcome and very much appreciated!
The ultimate tool for devops to manage their noddy. It provides a huge set of command line commands that automate the usage of your macOS system. When you run a function, the executed command is displayed and that helps you memorize each of the Utilities for future usage.
Homebrew (recommended)
brew install clouddrove/tap/noddyThis installs a tagged, checksum-verified release along with completions for zsh, bash and fish, and brew upgrade noddy keeps it current.
Install script
The script installs from the default branch rather than a verified release, so prefer Homebrew unless you specifically want the tip of master.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/clouddrove/noddy/master/toyland/setup/install)"Set NODDY_NONINTERACTIVE=1 to accept the defaults and skip the optional extras.
Then, re-open your terminal client. You will be able to run all the commands listed below, for example:
noddy help
The installer writes completions for zsh, bash and fish into your Homebrew prefix. The command list is read from the noddy script itself, so completions stay current as commands are added.
zsh
Homebrew's site-functions directory has to be on $fpath before compinit runs. If you use Oh My Zsh or already load Homebrew's completions, this is done for you and no change is needed. Otherwise add this to ~/.zshrc:
fpath=("$(brew --prefix)/share/zsh/site-functions" $fpath)
autoload -Uz compinit && compinitThen start a new shell and press Tab:
noddy git:<Tab>
git:add-removed git:branch:remove-local git:log
git:branch git:branch:remove-remote git:open
git:branches git:branch:rename git:remove
git:branches:date git:config git:settings
git:create:branch git:undo-commit git:size
If completions do not appear, delete the cache and retry: rm -f ~/.zcompdump && compinit.
bash
Requires bash-completion (brew install bash-completion@2) and its loader in ~/.bash_profile:
[[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh"fish
Nothing to configure. Fish reads vendor_completions.d automatically.
The configuration is done when you install noddy CLI for the first time though the installer configuration wizard.
After that, you can update your noddy CLI configuration by editing the installed script at $(brew --prefix)/bin/noddy, which is /opt/homebrew/bin/noddy on Apple Silicon and /usr/local/bin/noddy on Intel.
These are installed on first run, and only when they are not already on your PATH:
- Homebrew
- Git
- Pipe Viewer (pv) - progress bar for
tar:compress - wget - used by
ip:public - fdupes - used by
find:duplicated
Node and Python are no longer installed up front. They are pulled in only if you opt into Fast CLI or Glances during setup.
If you installed with Homebrew:
brew upgrade noddy
If you used the install script:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/clouddrove/noddy/master/toyland/setup/update)"
If you installed with Homebrew:
brew uninstall noddy
If you used the install script:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/clouddrove/noddy/master/toyland/setup/uninstall)"
The following amazing projects have been integrated on the noddy script (all the integrated projects are optional and can be installed through the installation wizard):
- Glances (https://github.com/nicolargo/glances)
- fast-cli (https://github.com/sindresorhus/fast-cli)
- iStats https://bjango.com/mac/istatmenus/
| Command | Description | Arguments |
|---|---|---|
noddy help |
List all available commands in noddy script |
| Command | Description | Arguments |
|---|---|---|
noddy update |
Install macOS software updates, then update Homebrew, npm and pip packages | |
noddy lock |
Lock | |
noddy restart |
Restart macOS | |
noddy sleep |
Sleep mode | |
noddy shutdown |
Shutdown | |
noddy presentation |
Prepare for presenting: minimize all apps, close browsers, send Desktop and Downloads to the Trash. Asks first. | |
noddy time |
Show clock at top right position in Terminal/iTerm | |
noddy screensaver |
Start screensaver | |
noddy folders:list |
List folders in current directory with their current size | |
noddy folder:size |
Calculate current folder size | |
noddy folders:remove-empty |
Remove empty subdirectories | |
noddy apps:close-all |
Force quit all open apps. Asks first. | |
noddy bluetooth:status |
Get the bluetooth status | |
noddy bluetooth:enable |
Enable bluetooth | |
noddy bluetooth:disable |
Disable bluetooth | |
noddy wifi:status |
Get the wifi status | |
noddy wifi:scan |
Scan available wifi networks | |
noddy wifi:enable |
Enable wifi | |
noddy wifi:disable |
Disable wifi | |
noddy wifi:password |
Get password for current wifi network | |
noddy dock:add-space |
Add blank space to dock | |
noddy apps:app-store |
Get list of installed apps from App Store | |
noddy eject-all |
Eject all removable volumes | |
noddy battery |
Get battery status | |
noddy info |
Get macOS version information | |
noddy hidden:show |
Show hidden files | |
noddy hidden:hide |
Hide hidden files | |
noddy find:text X |
Find exact phrase recursively inside directory | X = Text string |
noddy find:biggest-files |
Find biggest files inside directory | |
noddy find:biggest-directories |
Find biggest directories inside directory | |
noddy zip:extract X |
Extract Zip file to current folder | X = Zip file to extract |
noddy gzip:compress X |
Compress current file using Gzip | X = File to compress |
noddy gzip:extract X |
Extract Gzip file to current folder | X = Gzip file to extract |
noddy tar:compress X |
Compress X file/directory using tar with progress indicator | X = File or directory |
noddy tar:extract X |
Extract tar file to current folder | X = Tar file to extract |
| Command | Description | Arguments |
|---|---|---|
noddy find:recent N |
Find files modified in the last N minutes | N = number of minutes |
noddy find:duplicated |
Find duplicated files | |
noddy search:replace X |
Search and replace string in file | X = File to perform the search and replace operation |
| Command | Description |
|---|---|
noddy speedtest |
Internet connection speed test |
noddy speedtest:infinite |
Run internet speed test each 5 minutes |
noddy ports |
List of used ports |
noddy ip:local |
Get local IP address |
noddy ip:public |
Get public IP address |
| Command | Description | Arguments |
|---|---|---|
noddy ssh:download-file X |
Download file from remote server through SSH | X = Path of the remote file to download |
noddy ssh:download-folder X |
Download entire folder from remote server through SSH | X = Path of the remote folder to download |
noddy ssh:download-database X |
Download MySQL from remote server through SSH | X = Name of the database to download |
noddy ssh:sync:local X |
Sync local folder with remote folder using rsync through SSH (download remote folder to local folder) | X = Path of the remote folder to sync to local folder |
noddy ssh:sync:remote X |
Sync remote folder with local folder using rsync through SSH (upload local folder to remote folder) | X = Path of the remote folder to sync from local folder |
noddy ssh:upload X |
Upload file to remote server through SSH | X = Path of the file to upload to the remote server |
noddy ssh:public-key |
Copy SSH Public Key | |
noddy ssh:list |
List hosts defined in ~/.ssh/config and keys in ~/.ssh |
|
noddy ssh:connect X |
Connect to a configured host | X = host name |
| Command | Description |
|---|---|
noddy system |
Show system information to review mac performance |
noddy temp |
Show temperature, fan and battery statistics |
noddy memory |
See memory usage sorted by memory consumption |
noddy trash:empty |
Empty trash |
noddy trash:size |
Calculate trash size |
noddy desktop:cleanup |
Remove all files and directories from Desktop directory |
noddy downloads:cleanup |
Remove all files and directories from Downloads directory |
| Command | Description |
|---|---|
noddy git:config |
Display local Git configuration |
noddy git:open |
Open current repository on Github |
noddy git:create:branch |
Create branch based on current branch |
noddy git:branches:date |
Get last update date for all branches in current project |
noddy git:undo-commit |
Undo latest commit |
noddy git:log |
See latest commits IDs and titles for current branch |
noddy git:branch |
See all branches |
noddy git:branch:rename |
Rename Git branch |
noddy git:branch:remove-local |
Remove local Git branch |
noddy git:branch:remove-remote |
Remove local and remote Git branch |
noddy git:remove |
Remove Git from current project |
noddy git:settings |
Check Git settings |
noddy git:add-removed |
Add removed files to staged files |
noddy git:size |
Get size for current Git directory |
| Command | Description |
|---|---|
noddy docker:list |
List all containers |
noddy docker:images |
List all images |
noddy docker:stop |
Stop all running containers |
noddy docker:remove |
Remove all containers |
noddy docker:remove-images |
Remove all images |
noddy docker:prune |
Remove unused docker data |
noddy docker:start |
Start Colima or Docker Desktop |
noddy docker:restart |
Restart Colima or Docker Desktop |
| Command | Description |
|---|---|
noddy brew:update |
Install macOS software updates, then update Homebrew, npm and pip packages |
| ------------- | ------------- |
| noddy xcode:cleanup | Cleanup Xcode files to free up hard disk space |
Add support for
- Docker
- Ansible
- Terraform

