# Shell Completion for brew
https://docs.brew.sh/Shell-Completion
# Required
## System Tools
```
bat coreutils curl duckdb fzf gawk gnu-sed gnu-tar grep jless jq macvim miller parallel pipx ripgrep wget xz zoxide [zsv*]
```
The following of those tools require special setup:
- [fzf](https://github.com/junegunn/fzf#using-homebrew)
- [zoxide](https://github.com/ajeetdsouza/zoxide#installation)
- [pipx](Pipx%20setup.md)
- DuckDB [UI](https://duckdb.org/docs/stable/extensions/ui) [extension](https://duckdb.org/docs/stable/extensions/overview)
By default, the GNU tools get installed with a prefix `g` added to their command names. If you want to override the nerfed OSX command-line tools with the GNU tools, review how to put the binaries with the prefix-free names from the following packages into your path:
- coreutils
- gawk
- gnu-sed
- gnu-tar
- grep
Short descriptions of less known tools:
- jless: command-line JSON viewing with folding
- miller: processing CSV, **TSV**, JSON, **jsonl**
- xz: best compression tool
- zoxide: z in Rust; essential command-line navigation
- zsv*: processing CSV, JSON & sqlite3 files; install as:
```
brew tap liquidaty/zsv
brew install zsv
```
## LLM CLI Tools
```
gemini-cli
```
## DevOps Tools
```
awscli difftastic gcc gh git git-extras httpie subversion tig visual-studio-code
```
Instead of curl or Postman, use [the HTTPie app](https://httpie.io/desktop) and command-line tool.
Docker & K8:
```
brew install --cask docker
kubectl kubectx kubens
```
Databricks:
```
brew tap databricks/tap
brew install databricks
```
# Optional
## Developer Tools
### C++ Stack
```
cling cmake ctags gdb llvm swig
```
Then, link up clang-tidy and clang-format from the llvm package:
```
ln -s "$(brew --prefix llvm)/bin/clang-format" "/usr/local/bin/clang-format"
ln -s "$(brew --prefix llvm)/bin/clang-tidy" "/usr/local/bin/clang-tidy"
```
### Go, Python, Java, JavaScript
```
go golangci-lint node nvm maven poetry pyenv sdkman ansible shellcheck
```
Java: Instead of `jenv`, install `sdkman`: https://sdkman.io/install
Python: It is recommendable to pick `pyenv` instead of `python`
For `pyenv`, see the [[PyEnv setup]] and [[PyEnv usage]] guides.
You can find older Python versions here (if not using PyEnv):
`sashkab/python`
`pythonXY`
[https://github.com/sashkab/homebrew-python](https://github.com/sashkab/homebrew-python "https://github.com/sashkab/homebrew-python")
### SysAdmin Tools
```
htop nethogs nmap sysdig wireshark
```
### Jupyter Notebooks
```
jupyterlab
```
Also install the desktop app, [JupterLab Desktop](https://github.com/jupyterlab/jupyterlab-desktop).
```
brew install --cask jupyter-notebook-ql jupyter-notebook-viewer
```
Best Jupyter Notebook editor:
```
brew install --cask visual-studio-code
```
### Data Visualization
```
youplot gnuplot graphviz r
```
[YouPlot](https://github.com/red-data-tools/YouPlot) is a nifty command-line plotting tool.
(Note that Python packages should come from pipenv on a project-need basis)