onboarding/applications.md

1204 lines
31 KiB
Markdown

# Installed Applications Guide
This document provides an overview of all applications installed by the Ansible playbook, organized by category with descriptions of their general use cases.
## SSH & Security
### openssh-server
**Purpose**: SSH daemon server for secure remote access
**Use**: Enables secure shell connections to your machine from other systems. Essential for remote development and server management.
**Syntax**: Service management via systemctl
**Examples**:
```bash
# Check SSH service status
sudo systemctl status ssh
# Start/stop/restart SSH service
sudo systemctl start ssh
sudo systemctl restart ssh
# Connect to remote server
ssh username@hostname
ssh -p 2222 user@server.com # Custom port
```
**Documentation**: [OpenSSH Manual](https://www.openssh.com/manual.html)
### ufw (Uncomplicated Firewall)
**Purpose**: Simple firewall management
**Use**: Protect your system by controlling incoming and outgoing network traffic with easy-to-understand rules.
**Syntax**: `ufw [options] [rule]`
**Examples**:
```bash
# Enable/disable firewall
sudo ufw enable
sudo ufw disable
# Allow/deny ports
sudo ufw allow 22 # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw deny 23 # Telnet
# Check status
sudo ufw status verbose
```
**Documentation**: [UFW Documentation](https://help.ubuntu.com/community/UFW)
### fail2ban
**Purpose**: Intrusion prevention system
**Use**: Automatically bans IP addresses that show suspicious activity (like repeated failed login attempts).
**Syntax**: `fail2ban-client [options]`
**Examples**:
```bash
# Check status
sudo fail2ban-client status
# Check specific jail status
sudo fail2ban-client status sshd
# Unban an IP
sudo fail2ban-client set sshd unbanip 192.168.1.100
# Start/stop service
sudo systemctl restart fail2ban
```
**Documentation**: [Fail2ban Manual](https://fail2ban.readthedocs.io/)
## Base System Utilities
### curl
**Purpose**: Command line HTTP client
**Use**: Download files, test APIs, send HTTP requests from the terminal. Essential for web development and scripting.
**Syntax**: `curl [options] URL`
**Examples**:
```bash
# Basic GET request
curl https://api.example.com
# POST with JSON data
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
# Download file
curl -O https://example.com/file.zip
# Follow redirects and show headers
curl -L -I https://example.com
```
**Documentation**: [curl Manual](https://curl.se/docs/manpage.html)
### wget
**Purpose**: Network downloader
**Use**: Download files from web servers, supports resume and recursive downloads. Great for downloading large files or mirroring websites.
**Syntax**: `wget [options] URL`
**Examples**:
```bash
# Download a file
wget https://example.com/file.zip
# Resume interrupted download
wget -c https://example.com/largefile.iso
# Download recursively (mirror site)
wget -r -np -k https://example.com/
# Download in background
wget -b https://example.com/file.zip
```
**Documentation**: [GNU Wget Manual](https://www.gnu.org/software/wget/manual/)
### unzip
**Purpose**: Archive extraction utility
**Use**: Extract ZIP archives from command line. Useful for downloaded software packages and file transfers.
**Syntax**: `unzip [options] archive.zip`
**Examples**:
```bash
# Extract all files
unzip archive.zip
# Extract to specific directory
unzip archive.zip -d /target/directory
# List contents without extracting
unzip -l archive.zip
# Extract specific file
unzip archive.zip file.txt
```
**Documentation**: [unzip Manual](http://infozip.sourceforge.net/UnZip.html)
### xclip
**Purpose**: Clipboard utility for X11
**Use**: Copy and paste text between terminal and GUI applications. Integrates command line output with desktop clipboard.
**Syntax**: `xclip [options]`
**Examples**:
```bash
# Copy file contents to clipboard
xclip -sel clip < file.txt
# Copy command output to clipboard
echo "Hello World" | xclip -selection clipboard
# Paste from clipboard
xclip -o -sel clip
# Copy SSH public key
cat ~/.ssh/id_rsa.pub | xclip -sel clip
```
**Documentation**: [xclip Manual](https://github.com/astrand/xclip)
### tree
**Purpose**: Directory tree display utility
**Use**: Visualize directory structures in a tree format. Helpful for understanding project layouts and file organization.
**Syntax**: `tree [options] [directory]`
**Examples**:
```bash
# Show current directory tree
tree
# Show tree with file sizes
tree -h
# Limit depth to 2 levels
tree -L 2
# Show only directories
tree -d
# Exclude certain patterns
tree -I 'node_modules|*.pyc'
```
**Documentation**: [tree Manual](http://mama.indstate.edu/users/ice/tree/)
## Network & Admin Tools
### net-tools
**Purpose**: Network configuration tools (ifconfig, netstat, etc.)
**Use**: Traditional network troubleshooting and configuration. View network interfaces, routing tables, and connection statistics.
**Syntax**: Various commands included
**Examples**:
```bash
# Show network interfaces
ifconfig
ifconfig eth0 # Specific interface
# Show network connections
netstat -tuln # TCP/UDP listening ports
netstat -i # Interface statistics
# Show routing table
route -n
# Show ARP table
arp -a
```
**Documentation**: [net-tools Documentation](https://sourceforge.net/projects/net-tools/)
### mailutils
**Purpose**: Mail handling utilities
**Use**: Send and manage emails from command line. Useful for system notifications and automated email tasks.
**Syntax**: `mail [options] recipient`
**Examples**:
```bash
# Send simple email
echo "Message body" | mail -s "Subject" user@example.com
# Send email with attachment
mail -s "Subject" -A /path/to/file user@example.com < message.txt
# Check mail
mail
# Send email from script
echo "Server backup completed" | mail -s "Backup Status" admin@company.com
```
**Documentation**: [GNU Mailutils Manual](https://mailutils.org/manual/)
## Monitoring & System Tools
### iotop
**Purpose**: I/O usage monitoring
**Use**: Monitor disk read/write activity by process. Essential for diagnosing performance issues and identifying I/O bottlenecks.
**Syntax**: `iotop [options]`
**Examples**:
```bash
# Monitor I/O in real-time
sudo iotop
# Show only processes doing I/O
sudo iotop -o
# Show accumulated I/O
sudo iotop -a
# Non-interactive mode
sudo iotop -b -n 3
```
**Documentation**: [iotop Manual](http://guichaz.free.fr/iotop/)
### nethogs
**Purpose**: Network bandwidth monitoring per process
**Use**: See which applications are using network bandwidth in real-time. Great for troubleshooting network performance.
**Syntax**: `nethogs [options] [device]`
**Examples**:
```bash
# Monitor network usage
sudo nethogs
# Monitor specific interface
sudo nethogs eth0
# Monitor with delay in seconds
sudo nethogs -d 5
# Monitor multiple interfaces
sudo nethogs eth0 wlan0
```
**Documentation**: [nethogs GitHub](https://github.com/raboof/nethogs)
### logwatch
**Purpose**: Log analysis and reporting
**Use**: Automatically analyze system logs and generate summary reports. Helps identify security issues and system problems.
**Syntax**: `logwatch [options]`
**Examples**:
```bash
# Generate today's report
logwatch --detail low --mailto admin@example.com --service all
# Generate report for specific date range
logwatch --range yesterday
logwatch --range "2024-01-01 - 2024-01-07"
# Generate detailed SSH report
logwatch --service sshd --detail high
# Test configuration
logwatch --print
```
**Documentation**: [Logwatch Documentation](https://sourceforge.net/projects/logwatch/)
## Modern CLI Tools
### jq
**Purpose**: JSON processor
**Use**: Parse, filter, and manipulate JSON data from command line. Essential for API development and data processing.
**Syntax**: `jq [options] filter [file]`
**Examples**:
```bash
# Pretty print JSON
echo '{"name":"John","age":30}' | jq .
# Extract specific field
echo '{"name":"John","age":30}' | jq '.name'
# Filter array elements
echo '[{"name":"John"},{"name":"Jane"}]' | jq '.[0]'
# Use with curl
curl -s https://api.github.com/users/octocat | jq '.login'
```
**Documentation**: [jq Manual](https://jqlang.github.io/jq/manual/)
### ripgrep (rg)
**Purpose**: Fast text search tool
**Use**: Search for text patterns in files and directories. Much faster than traditional grep, especially for large codebases.
**Syntax**: `rg [options] pattern [path]`
**Examples**:
```bash
# Basic search
rg "function"
# Search in specific file types
rg "TODO" --type js
# Case insensitive search
rg -i "error"
# Search with context lines
rg -A 3 -B 3 "function main"
# Search and replace preview
rg "old_name" --replace "new_name" --passthru
```
**Documentation**: [ripgrep User Guide](https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md)
### fd-find (fd)
**Purpose**: Modern file finder
**Use**: Find files and directories with intuitive syntax and fast performance. Better alternative to traditional `find` command.
**Syntax**: `fd [options] pattern [path]`
**Examples**:
```bash
# Find files by name
fd config
# Find files by extension
fd -e js
# Find directories only
fd -t d bin
# Exclude hidden files
fd --no-hidden config
# Execute command on results
fd -e log -x rm {}
```
**Documentation**: [fd GitHub](https://github.com/sharkdp/fd)
## Shell & Terminal
### zsh
**Purpose**: Z shell - advanced shell
**Use**: Enhanced shell with better tab completion, history, and scripting capabilities compared to bash.
**Syntax**: Interactive shell and scripting
**Examples**:
```bash
# Switch to zsh
zsh
# Set as default shell
chsh -s $(which zsh)
# Zsh-specific features
setopt AUTO_CD # cd by typing directory name
setopt HIST_IGNORE_DUPS # ignore duplicate commands
# Advanced globbing
ls **/*.txt # recursive file matching
ls *.txt~backup.txt # exclude pattern
```
**Documentation**: [Zsh Manual](https://zsh.sourceforge.io/Doc/)
### tmux
**Purpose**: Terminal multiplexer
**Use**: Run multiple terminal sessions in one window, detach/reattach sessions, and split terminals. Essential for remote work.
**Syntax**: `tmux [command]`
**Examples**:
```bash
# Start new session
tmux new-session -s mysession
# List sessions
tmux list-sessions
# Attach to session
tmux attach-session -t mysession
# Key bindings (default prefix Ctrl+b)
# Ctrl+b % - split vertically
# Ctrl+b " - split horizontally
# Ctrl+b d - detach session
```
**Documentation**: [tmux Manual](https://github.com/tmux/tmux/wiki)
### Oh My Zsh
**Purpose**: Zsh framework
**Use**: Provides themes, plugins, and configurations for zsh. Makes the shell more user-friendly and productive.
**Syntax**: Configuration via `~/.zshrc`
**Examples**:
```bash
# Update Oh My Zsh
omz update
# Change theme in ~/.zshrc
ZSH_THEME="agnoster"
# Enable plugins in ~/.zshrc
plugins=(git docker kubectl node npm)
# Reload configuration
source ~/.zshrc
```
**Documentation**: [Oh My Zsh Wiki](https://github.com/ohmyzsh/ohmyzsh/wiki)
#### **Essential Oh My Zsh Plugins Guide**
The following plugins significantly enhance your shell experience. Add them to your `~/.zshrc` file:
```bash
plugins=(git sudo z colored-man-pages fzf zsh-syntax-highlighting zsh-autosuggestions web-search copypath)
```
##### **git**
**Purpose**: Git integration and aliases
**Usage**: Provides shortcuts and status information for Git repositories
```bash
# Aliases provided:
ga # git add
gst # git status
gc # git commit
gp # git push
gl # git pull
gco # git checkout
gbr # git branch
# Branch info in prompt automatically shown
# Works in any Git repository
```
##### **sudo**
**Purpose**: Easily retry commands with sudo
**Usage**: Press `ESC` twice to add sudo to the beginning of current command
```bash
# Type a command that needs sudo
apt update
# Press ESC ESC to get:
sudo apt update
# Also works with previous command
# Just press ESC ESC on empty line
```
##### **z**
**Purpose**: Smart directory jumping based on frequency
**Usage**: Jump to frequently used directories with partial names
```bash
# After visiting directories, z learns your patterns
cd ~/Documents/code/projects/myapp
cd ~/Downloads
cd ~/Documents/code/projects/myapp # visited again
# Later, jump directly:
z myapp # jumps to ~/Documents/code/projects/myapp
z doc # jumps to ~/Documents
z proj # jumps to ~/Documents/code/projects
# List all tracked directories
z -l
```
##### **colored-man-pages**
**Purpose**: Colorized manual pages for better readability
**Usage**: Automatic - man pages now have syntax highlighting
```bash
# Before: plain black and white
man ls
# After: colored sections, options, and examples
# Headers in bold, options in different colors
# Much easier to read and navigate
```
##### **fzf**
**Purpose**: Fuzzy finder integration
**Usage**: Enhanced search and selection with fuzzy matching
```bash
# Reverse search with fuzzy matching
Ctrl+R # Search command history with fuzzy finder
# File/directory selection
Ctrl+T # Insert selected files/directories into command line
Alt+C # cd into selected directory
# Example workflow:
vim **<TAB> # Opens fzf to select file
ssh **<TAB> # Select from SSH hosts
kill -9 **<TAB> # Select process to kill
```
##### **zsh-syntax-highlighting**
**Purpose**: Real-time syntax highlighting in terminal
**Usage**: Automatic - commands are highlighted as you type
```bash
# Valid commands: green
ls -la # Appears in green as you type
# Invalid commands: red
invalidcommand # Appears in red
# Strings and paths: different colors
echo "hello" # String in quotes highlighted
cat /etc/hosts # Valid path highlighted differently
```
##### **zsh-autosuggestions**
**Purpose**: Fish-like autosuggestions based on history
**Usage**: Suggestions appear in gray text as you type
```bash
# Start typing a command you've used before:
git sta
# Suggestion appears: git status (in gray)
# Accept suggestion:
(Right arrow) # Accept entire suggestion
Ctrl+→ # Accept one word
# Example:
git s # Shows: git status
# Completes to: git status
```
##### **web-search**
**Purpose**: Search the web directly from terminal
**Usage**: Quick web searches with predefined engines
```bash
# Search Google
google "zsh plugins"
google terminal tricks
# Search GitHub
github "oh my zsh themes"
# Search Stack Overflow
stackoverflow "bash vs zsh"
# Search YouTube
youtube "linux tutorials"
# Other engines available:
duckduckgo "privacy search"
bing "microsoft docs"
yahoo "old school search"
```
##### **copypath**
**Purpose**: Copy current path or file paths to clipboard
**Usage**: Quickly copy paths for use in other applications
```bash
# Copy current directory path
copypath
# Copy specific file/directory path
copypath ~/.zshrc
copypath ~/Documents/project
# Useful for:
# - Pasting paths into file dialogs
# - Sharing directory locations
# - Documentation and notes
```
#### **Plugin Installation & Configuration**
1. **Edit your zsh configuration:**
```bash
vim ~/.zshrc
# or
nano ~/.zshrc
```
2. **Add plugins to the plugins array:**
```bash
plugins=(git sudo z colored-man-pages fzf zsh-syntax-highlighting zsh-autosuggestions web-search copypath)
```
3. **Install additional plugins (if needed):**
```bash
# For zsh-syntax-highlighting (if not included)
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# For zsh-autosuggestions (if not included)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
```
4. **Reload your configuration:**
```bash
source ~/.zshrc
# or
exec zsh
```
#### **Pro Tips**
- **Customize suggestion color:**
```bash
# Add to ~/.zshrc
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666"
```
- **Configure fzf colors:**
```bash
# Add to ~/.zshrc
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
```
- **Z plugin tips:**
```bash
# Use with other commands
vim $(z -e myproject) # Edit files in frequent directory
```
**Documentation**: [Oh My Zsh Wiki](https://github.com/ohmyzsh/ohmyzsh/wiki)
### Powerlevel10k
**Purpose**: Zsh theme
**Use**: Modern, fast, and informative shell prompt with Git status, execution time, and system information.
**Syntax**: Configuration wizard and manual config
**Examples**:
```bash
# Run configuration wizard
p10k configure
# Reload theme
exec zsh
# Enable instant prompt in ~/.zshrc
# Enable Powerlevel10k instant prompt (add to top of ~/.zshrc)
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
```
**Documentation**: [Powerlevel10k GitHub](https://github.com/romkatv/powerlevel10k)
## Development Tools
### git
**Purpose**: Version control system
**Use**: Track code changes, collaborate with teams, and manage project history. Fundamental tool for software development.
**Syntax**: `git [command] [options]`
**Examples**:
```bash
# Basic workflow
git init
git add .
git commit -m "Initial commit"
git push origin main
# Branching
git branch feature-branch
git checkout feature-branch
git merge main
# Status and logs
git status
git log --oneline
git diff
```
**Documentation**: [Git Documentation](https://git-scm.com/doc)
### nodejs
**Purpose**: JavaScript runtime
**Use**: Run JavaScript applications outside the browser. Essential for modern web development and tooling.
**Syntax**: `node [options] script.js`
**Examples**:
```bash
# Run JavaScript file
node app.js
# Interactive REPL
node
# Check version
node --version
# Run with specific flags
node --inspect app.js # Enable debugger
node --max-old-space-size=4096 app.js # Increase memory
```
**Documentation**: [Node.js Documentation](https://nodejs.org/en/docs/)
### npm
**Purpose**: Node.js package manager
**Use**: Install, manage, and publish JavaScript packages. Central tool for Node.js ecosystem.
**Syntax**: `npm [command] [options]`
**Examples**:
```bash
# Initialize project
npm init -y
# Install packages
npm install express
npm install -g nodemon # Global install
npm install --save-dev jest # Development dependency
# Run scripts
npm start
npm test
npm run build
# Package management
npm list
npm outdated
npm update
```
**Documentation**: [npm Documentation](https://docs.npmjs.com/)
### build-essential
**Purpose**: Essential build tools (gcc, make, etc.)
**Use**: Compile software from source code. Required for building many applications and development tools.
**Syntax**: Various compilation tools
**Examples**:
```bash
# Compile C program
gcc -o program program.c
# Use make with Makefile
make
make install
make clean
# Check installed tools
gcc --version
make --version
g++ --version
# Compile C++ program
g++ -o program program.cpp
```
**Documentation**: [GCC Manual](https://gcc.gnu.org/onlinedocs/)
### python3
**Purpose**: Python 3 interpreter
**Use**: Run Python applications and scripts. Popular language for automation, data science, and web development.
**Syntax**: `python3 [options] script.py`
**Examples**:
```bash
# Run Python script
python3 script.py
# Interactive interpreter
python3
# Run module as script
python3 -m http.server 8000
python3 -m json.tool file.json # Pretty print JSON
# Check version
python3 --version
# Run with specific flags
python3 -u script.py # Unbuffered output
```
**Documentation**: [Python Documentation](https://docs.python.org/3/)
### python3-pip
**Purpose**: Python package installer
**Use**: Install and manage Python packages from PyPI repository. Essential for Python development.
**Syntax**: `pip3 [command] [options]`
**Examples**:
```bash
# Install packages
pip3 install requests
pip3 install -r requirements.txt
pip3 install --user package_name # User install
# Package management
pip3 list
pip3 show requests
pip3 freeze > requirements.txt
# Upgrade packages
pip3 install --upgrade package_name
pip3 install --upgrade pip
# Uninstall
pip3 uninstall package_name
```
**Documentation**: [pip Documentation](https://pip.pypa.io/en/stable/)
## Docker Ecosystem
### apt-transport-https
**Purpose**: APT HTTPS transport
**Use**: Enables package manager to download packages over HTTPS for security.
**Syntax**: Used automatically by APT
**Examples**:
```bash
# APT will automatically use HTTPS transport when configured
# No direct commands - enables secure package downloads
# Check if HTTPS transport is available
apt list --installed | grep apt-transport-https
# Used in repository configuration
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list
```
**Documentation**: [APT Documentation](https://manpages.ubuntu.com/manpages/focal/man1/apt-transport-https.1.html)
### ca-certificates
**Purpose**: Certificate authorities
**Use**: Trusted certificates for verifying SSL/TLS connections.
**Syntax**: Managed by system
**Examples**:
```bash
# Update certificate store
sudo update-ca-certificates
# Add custom certificate
sudo cp custom-cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
# Check certificate details
openssl x509 -in /etc/ssl/certs/ca-certificates.crt -text -noout
# Verify SSL connection
openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
```
**Documentation**: [ca-certificates Manual](https://manpages.ubuntu.com/manpages/focal/man8/update-ca-certificates.8.html)
### gnupg
**Purpose**: GNU Privacy Guard
**Use**: Encrypt, decrypt, and sign data. Used for package verification and secure communications.
**Syntax**: `gpg [options] [files]`
**Examples**:
```bash
# Generate key pair
gpg --gen-key
# List keys
gpg --list-keys
gpg --list-secret-keys
# Encrypt/decrypt files
gpg --encrypt --recipient user@example.com file.txt
gpg --decrypt file.txt.gpg
# Add repository key (common for package management)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```
**Documentation**: [GnuPG Manual](https://gnupg.org/documentation/)
### lsb-release
**Purpose**: Linux Standard Base release info
**Use**: Provides system information for scripts and applications to determine OS version.
**Syntax**: `lsb_release [options]`
**Examples**:
```bash
# Show all information
lsb_release -a
# Show distribution ID
lsb_release -i
# Show release number
lsb_release -r
# Show codename
lsb_release -c
# Used in scripts
if [ "$(lsb_release -si)" = "Ubuntu" ]; then
echo "Running on Ubuntu"
fi
```
**Documentation**: [lsb_release Manual](https://manpages.ubuntu.com/manpages/focal/man1/lsb_release.1.html)
### docker-ce
**Purpose**: Docker Community Edition engine
**Use**: Core Docker runtime for creating and running containers.
**Syntax**: `docker [command] [options]`
**Examples**:
```bash
# Basic container operations
docker run hello-world
docker run -it ubuntu bash
docker run -d -p 80:80 nginx
# Container management
docker ps # List running containers
docker ps -a # List all containers
docker stop container_id
docker rm container_id
# Image management
docker images
docker pull ubuntu:latest
docker build -t myapp .
```
**Documentation**: [Docker Documentation](https://docs.docker.com/)
### docker-ce-cli
**Purpose**: Docker command line interface
**Use**: Command-line tools for interacting with Docker engine.
**Syntax**: Same as docker-ce (provides the `docker` command)
**Examples**:
```bash
# All docker commands come from docker-ce-cli
# See docker-ce section for examples
# Check CLI version
docker version --format '{{.Client.Version}}'
# CLI-specific features
docker --help
docker system info
docker system df # Show disk usage
```
**Documentation**: [Docker CLI Reference](https://docs.docker.com/engine/reference/commandline/cli/)
### containerd.io
**Purpose**: Container runtime
**Use**: Low-level container runtime that Docker uses to manage containers.
**Syntax**: `ctr [options] [command]` (advanced usage)
**Examples**:
```bash
# Check containerd status
sudo systemctl status containerd
# Direct containerd commands (advanced)
sudo ctr images list
sudo ctr containers list
# Usually managed by Docker daemon
# Most users interact through docker commands
# Check containerd version
containerd --version
```
**Documentation**: [containerd Documentation](https://containerd.io/docs/)
### docker-buildx-plugin
**Purpose**: Docker Buildx plugin
**Use**: Advanced Docker build features including multi-platform builds and build caching.
**Syntax**: `docker buildx [command] [options]`
**Examples**:
```bash
# Create and use builder
docker buildx create --name mybuilder --use
# Multi-platform build
docker buildx build --platform linux/amd64,linux/arm64 -t myapp .
# Build with cache
docker buildx build --cache-from type=local,src=/tmp/cache --cache-to type=local,dest=/tmp/cache .
# List builders
docker buildx ls
# Inspect build
docker buildx imagetools inspect myapp:latest
```
**Documentation**: [Docker Buildx Documentation](https://docs.docker.com/buildx/)
### docker-compose-plugin
**Purpose**: Docker Compose plugin
**Use**: Define and run multi-container Docker applications using YAML configuration files.
**Syntax**: `docker compose [command] [options]`
**Examples**:
```bash
# Start services defined in docker-compose.yml
docker compose up
docker compose up -d # Detached mode
# Stop and remove services
docker compose down
# View logs
docker compose logs
docker compose logs service_name
# Scale services
docker compose up --scale web=3
# Build services
docker compose build
```
**Documentation**: [Docker Compose Documentation](https://docs.docker.com/compose/)
## Desktop Applications
### redshift
**Purpose**: Blue light filter
**Use**: Automatically adjust screen color temperature based on time of day to reduce eye strain.
**Syntax**: `redshift [options]`
**Examples**:
```bash
# Start redshift with location
redshift -l 40.7:-74.0 # NYC coordinates
# Run once (no continuous adjustment)
redshift -O 3000
# Reset to normal
redshift -x
# Run in background
redshift &
```
**Documentation**: [Redshift Manual](http://jonls.dk/redshift/)
### libreoffice
**Purpose**: Office suite
**Use**: Open-source alternative to Microsoft Office with word processing, spreadsheets, and presentations.
**Syntax**: `libreoffice [options] [file]`
**Examples**:
```bash
# Open LibreOffice start center
libreoffice
# Open specific applications
libreoffice --writer document.odt
libreoffice --calc spreadsheet.ods
libreoffice --impress presentation.odp
# Convert documents
libreoffice --convert-to pdf document.docx
libreoffice --headless --convert-to pdf *.docx
```
**Documentation**: [LibreOffice Help](https://help.libreoffice.org/)
### evince
**Purpose**: PDF viewer
**Use**: View and navigate PDF documents with search and annotation capabilities.
**Syntax**: `evince [options] [file]`
**Examples**:
```bash
# Open PDF file
evince document.pdf
# Open at specific page
evince --page-index=5 document.pdf
# Open in fullscreen
evince --fullscreen document.pdf
# Print document
evince --preview document.pdf
```
**Documentation**: [Evince Manual](https://help.gnome.org/users/evince/stable/)
### brave-browser
**Purpose**: Privacy-focused web browser
**Use**: Web browsing with built-in ad blocking, tracking protection, and privacy features.
**Syntax**: `brave-browser [options] [URL]`
**Examples**:
```bash
# Start Brave browser
brave-browser
# Open specific URL
brave-browser https://example.com
# Open in incognito mode
brave-browser --incognito
# Open with specific profile
brave-browser --profile-directory="Profile 1"
# Disable web security (development)
brave-browser --disable-web-security --user-data-dir="/tmp/brave"
```
**Documentation**: [Brave Support](https://support.brave.com/)
## Snap Packages
### snapd
**Purpose**: Snap package daemon
**Use**: System service that manages snap packages - universal Linux packages with automatic updates.
**Syntax**: `snap [command] [options]`
**Examples**:
```bash
# Search for snaps
snap find code
snap find --category=development
# Install/remove snaps
snap install code --classic
snap remove code
# List installed snaps
snap list
# Update snaps
snap refresh
snap refresh code # Update specific snap
# Check snap info
snap info code
```
**Documentation**: [Snap Documentation](https://snapcraft.io/docs)
### yq
**Purpose**: YAML processor
**Use**: Parse, filter, and manipulate YAML data from command line. Complement to jq for YAML files.
**Syntax**: `yq [options] expression [file]`
**Examples**:
```bash
# Read YAML value
yq '.database.host' config.yaml
# Update YAML value
yq '.database.port = 5432' config.yaml
# Convert YAML to JSON
yq -o json config.yaml
# Filter arrays
yq '.services[] | select(.name == "web")' docker-compose.yml
# Merge YAML files
yq eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' file1.yml file2.yml
```
**Documentation**: [yq Documentation](https://mikefarah.gitbook.io/yq/)
### btop
**Purpose**: Modern system monitor
**Use**: Beautiful, feature-rich system monitor showing CPU, memory, disk, and network usage with an intuitive interface.
**Syntax**: `btop [options]`
**Examples**:
```bash
# Start btop
btop
# Key bindings within btop:
# q - quit
# h - help
# + - add shown information
# - - subtract shown information
# f - filter processes
# t - tree view
# m - memory view
# ESC - clear filter/reset
```
**Documentation**: [btop GitHub](https://github.com/aristocratos/btop)
### code (Visual Studio Code)
**Purpose**: IDE/code editor
**Use**: Popular, extensible code editor with debugging, Git integration, and extensive plugin ecosystem.
**Syntax**: `code [options] [file/directory]`
**Examples**:
```bash
# Open file or directory
code .
code file.txt
code /path/to/project
# Open with specific options
code --new-window project/
code --goto file.js:10:5 # Go to line 10, column 5
code --diff file1.txt file2.txt
# Extensions management
code --install-extension ms-python.python
code --list-extensions
```
**Documentation**: [VS Code Documentation](https://code.visualstudio.com/docs)
### cursor
**Purpose**: AI-powered code editor
**Use**: Modern code editor with built-in AI assistance for code completion, generation, and refactoring.
**Syntax**: `cursor [options] [file/directory]`
**Examples**:
```bash
# Open file or directory
cursor .
cursor file.txt
cursor /path/to/project
# AI features (within editor):
# Ctrl+K - AI chat/commands
# Ctrl+L - AI inline suggestions
# Ctrl+I - AI code generation
# Tab - Accept AI suggestion
```
**Documentation**: [Cursor Documentation](https://docs.cursor.com/)
---
## Getting Started
Most command-line tools are immediately available after installation. For desktop applications, you can find them in your application launcher.
### Quick Command Examples
- Monitor system: `btop` or `iotop`
- Search files: `fd filename` or `rg "search term"`
- Process JSON: `curl api.example.com | jq '.data'`
- Start development server in tmux: `tmux new-session -d -s dev`
- Check Docker status: `docker --version && docker ps`
### Configuration Tips
- Customize zsh with `~/.zshrc`
- Configure tmux with `~/.tmux.conf`
- Set up Git aliases for common operations
- Use Docker Compose for multi-container applications