Tools: Essential Guide: Building a Senior-Level DevOps / SRE / Infrastructure Engineer Terminal Setup (macOS)

Tools: Essential Guide: Building a Senior-Level DevOps / SRE / Infrastructure Engineer Terminal Setup (macOS)

1. Why your terminal matters as a Senior Engineer

2. Install Zsh (modern shell)

Check your shell:

3. Install Oh My Zsh (plugin framework)

4. Install essential plugins (productivity layer)

1. Autosuggestions

2. Syntax Highlighting

Enable plugins

5. Install Starship (modern prompt system)

Create Starship config

6. Install Nerd Font (Powerline-style icons)

Set font in terminal (important)

7. Install FZF (command search engine)

Features:

8. Modern CLI replacements

eza (better ls)

bat (better cat)

9. Kubernetes tooling (core DevOps skill)

What you get:

10. Docker productivity tools

11. AWS CLI setup

12. Infrastructure as Code (Terraform)

13. Productivity upgrade tools

zoxide (smart cd)

tmux (session persistence)

14. Security / Debugging tools (SRE mindset)

15. Git aliases (speed boost)

16. Final .zshrc structure

Final Result: What you have built

Intelligence

Visual clarity

DevOps tools

Security/debugging

Productivity

Final mindset shift (important) This guide walks through building a powerful terminal environment used by Senior Site Reliability Engineers, DevOps Engineers, and Infrastructure Engineers. In real infrastructure work, your terminal is not just a tool — it is your: A good terminal setup reduces: macOS already ships with Zsh, but we ensure it’s active and up to date. Oh My Zsh helps manage plugins and configuration. We install two core plugins: Shows previous commands as you type. Highlights valid/invalid commands. Starship is a cross-shell prompt engine that shows: To make icons display correctly in Starship: Recommended: MesloLGS NF Without this, icons will break. FZF is one of the most important tools for senior engineers. ⚠️ Install correctly via HashiCorp tap: Your .zshrc should look like: Your terminal is now capable of: A senior DevOps/SRE engineer does not rely on memory. Your terminal is now a production-grade engineering workstation, not just a command line. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

$ echo $SHELL echo $SHELL echo $SHELL chsh -s /bin/zsh chsh -s /bin/zsh chsh -s /bin/zsh sh -c "$(-weight: 500;">curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/-weight: 500;">install.sh)" sh -c "$(-weight: 500;">curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/-weight: 500;">install.sh)" sh -c "$(-weight: 500;">curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/-weight: 500;">install.sh)" -weight: 500;">git clone https://github.com/zsh-users/zsh-autosuggestions \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -weight: 500;">git clone https://github.com/zsh-users/zsh-autosuggestions \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -weight: 500;">git clone https://github.com/zsh-users/zsh-autosuggestions \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -weight: 500;">git clone https://github.com/zsh-users/zsh-syntax-highlighting \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting -weight: 500;">git clone https://github.com/zsh-users/zsh-syntax-highlighting \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting -weight: 500;">git clone https://github.com/zsh-users/zsh-syntax-highlighting \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting nano ~/.zshrc nano ~/.zshrc nano ~/.zshrc plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) -weight: 500;">brew -weight: 500;">install starship -weight: 500;">brew -weight: 500;">install starship -weight: 500;">brew -weight: 500;">install starship eval "$(starship init zsh)" eval "$(starship init zsh)" eval "$(starship init zsh)" mkdir -p ~/.config nano ~/.config/starship.toml mkdir -p ~/.config nano ~/.config/starship.toml mkdir -p ~/.config nano ~/.config/starship.toml add_newline = true format = """ $directory\ $git_branch\ $git_status\ $nodejs\ $python\ $docker_context\ $kubernetes\ $line_break\ $character""" [character] success_symbol = "❯" error_symbol = "❯" [git_branch] symbol = "🌿 " [nodejs] symbol = "⬢ " [docker_context] symbol = "🐳 " [kubernetes] symbol = "☸️ " add_newline = true format = """ $directory\ $git_branch\ $git_status\ $nodejs\ $python\ $docker_context\ $kubernetes\ $line_break\ $character""" [character] success_symbol = "❯" error_symbol = "❯" [git_branch] symbol = "🌿 " [nodejs] symbol = "⬢ " [docker_context] symbol = "🐳 " [kubernetes] symbol = "☸️ " add_newline = true format = """ $directory\ $git_branch\ $git_status\ $nodejs\ $python\ $docker_context\ $kubernetes\ $line_break\ $character""" [character] success_symbol = "❯" error_symbol = "❯" [git_branch] symbol = "🌿 " [nodejs] symbol = "⬢ " [docker_context] symbol = "🐳 " [kubernetes] symbol = "☸️ " MesloLGS NF MesloLGS NF MesloLGS NF -weight: 500;">brew -weight: 500;">install fzf $(-weight: 500;">brew --prefix)/opt/fzf/-weight: 500;">install -weight: 500;">brew -weight: 500;">install fzf $(-weight: 500;">brew --prefix)/opt/fzf/-weight: 500;">install -weight: 500;">brew -weight: 500;">install fzf $(-weight: 500;">brew --prefix)/opt/fzf/-weight: 500;">install -weight: 500;">brew -weight: 500;">install eza -weight: 500;">brew -weight: 500;">install eza -weight: 500;">brew -weight: 500;">install eza alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" -weight: 500;">brew -weight: 500;">install bat -weight: 500;">brew -weight: 500;">install bat -weight: 500;">brew -weight: 500;">install bat alias cat="bat" alias cat="bat" alias cat="bat" -weight: 500;">brew -weight: 500;">install -weight: 500;">kubectl kubectx -weight: 500;">brew -weight: 500;">install -weight: 500;">kubectl kubectx -weight: 500;">brew -weight: 500;">install -weight: 500;">kubectl kubectx -weight: 500;">brew -weight: 500;">install lazydocker -weight: 500;">brew -weight: 500;">install lazydocker -weight: 500;">brew -weight: 500;">install lazydocker alias d="-weight: 500;">docker" alias dps="-weight: 500;">docker ps" alias dex="-weight: 500;">docker exec -it" alias d="-weight: 500;">docker" alias dps="-weight: 500;">docker ps" alias dex="-weight: 500;">docker exec -it" alias d="-weight: 500;">docker" alias dps="-weight: 500;">docker ps" alias dex="-weight: 500;">docker exec -it" -weight: 500;">brew -weight: 500;">install awscli -weight: 500;">brew -weight: 500;">install awscli -weight: 500;">brew -weight: 500;">install awscli aws configure aws configure aws configure aws configure sso aws configure sso aws configure sso -weight: 500;">brew tap hashicorp/tap -weight: 500;">brew -weight: 500;">install hashicorp/tap/terraform -weight: 500;">brew tap hashicorp/tap -weight: 500;">brew -weight: 500;">install hashicorp/tap/terraform -weight: 500;">brew tap hashicorp/tap -weight: 500;">brew -weight: 500;">install hashicorp/tap/terraform terraform -version terraform -version terraform -version -weight: 500;">brew -weight: 500;">install zoxide -weight: 500;">brew -weight: 500;">install zoxide -weight: 500;">brew -weight: 500;">install zoxide eval "$(zoxide init zsh)" eval "$(zoxide init zsh)" eval "$(zoxide init zsh)" z project-name z project-name z project-name -weight: 500;">brew -weight: 500;">install tmux -weight: 500;">brew -weight: 500;">install tmux -weight: 500;">brew -weight: 500;">install tmux -weight: 500;">brew -weight: 500;">install jq httpie nmap -weight: 500;">brew -weight: 500;">install jq httpie nmap -weight: 500;">brew -weight: 500;">install jq httpie nmap alias gs="-weight: 500;">git -weight: 500;">status" alias ga="-weight: 500;">git add" alias gc="-weight: 500;">git commit -m" alias gp="-weight: 500;">git push" alias gl="-weight: 500;">git log --oneline --graph --all" alias gs="-weight: 500;">git -weight: 500;">status" alias ga="-weight: 500;">git add" alias gc="-weight: 500;">git commit -m" alias gp="-weight: 500;">git push" alias gl="-weight: 500;">git log --oneline --graph --all" alias gs="-weight: 500;">git -weight: 500;">status" alias ga="-weight: 500;">git add" alias gc="-weight: 500;">git commit -m" alias gp="-weight: 500;">git push" alias gl="-weight: 500;">git log --oneline --graph --all" plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) eval "$(starship init zsh)" eval "$(zoxide init zsh)" # aliases alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" alias cat="bat" alias k=-weight: 500;">kubectl alias gs="-weight: 500;">git -weight: 500;">status" alias gp="-weight: 500;">git push" plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) eval "$(starship init zsh)" eval "$(zoxide init zsh)" # aliases alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" alias cat="bat" alias k=-weight: 500;">kubectl alias gs="-weight: 500;">git -weight: 500;">status" alias gp="-weight: 500;">git push" plugins=(-weight: 500;">git zsh-autosuggestions zsh-syntax-highlighting) eval "$(starship init zsh)" eval "$(zoxide init zsh)" # aliases alias ls="eza --icons ---weight: 500;">git" alias ll="eza -l --icons ---weight: 500;">git" alias la="eza -la --icons ---weight: 500;">git" alias cat="bat" alias k=-weight: 500;">kubectl alias gs="-weight: 500;">git -weight: 500;">status" alias gp="-weight: 500;">git push" - Productivity - Safety in production environments - Better visibility of system state - Faster workflows - Modern tooling - Control center for production systems - Kubernetes interface - Cloud interaction layer (AWS/GCP/Azure) - Debugging environment - Deployment interface - Human errors - Deployment mistakes - Context switching time - Cognitive load - Node/Python versions - Kubernetes context - Cloud context - Directory -weight: 500;">status - iTerm2 → Preferences → Profiles → Text → Font - Terminal.app → Settings → Font - CTRL + R → search command history - CTRL + T → search files - Fast navigation - -weight: 500;">kubectl → Kubernetes CLI - kubectx → switch clusters - kubens → switch namespaces (included inside kubectx) - remote servers - long-running processes - multi-window workflows - jq → JSON parsing - httpie → API testing (better -weight: 500;">curl) - nmap → network debugging - autosuggestions - command history search (fzf) - Starship prompt - -weight: 500;">git + cloud context awareness - -weight: 500;">kubectl / kubectx - -weight: 500;">docker tooling - jq, httpie, nmap - tooling visibility - fast navigation - safe production workflows