740 lines
18 KiB
Markdown
740 lines
18 KiB
Markdown
# Bash Scripting Resources
|
|
|
|
Comprehensive directory of authoritative sources, tools, and learning resources for bash scripting.
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Official Documentation](#official-documentation)
|
|
2. [Style Guides and Standards](#style-guides-and-standards)
|
|
3. [Tools and Utilities](#tools-and-utilities)
|
|
4. [Learning Resources](#learning-resources)
|
|
5. [Community Resources](#community-resources)
|
|
6. [Books](#books)
|
|
7. [Cheat Sheets and Quick References](#cheat-sheets-and-quick-references)
|
|
8. [Testing and Quality](#testing-and-quality)
|
|
9. [Platform-Specific Resources](#platform-specific-resources)
|
|
10. [Advanced Topics](#advanced-topics)
|
|
|
|
---
|
|
|
|
## 🚨 CRITICAL GUIDELINES
|
|
|
|
### Windows File Path Requirements
|
|
|
|
**MANDATORY: Always Use Backslashes on Windows for File Paths**
|
|
|
|
When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).
|
|
|
|
**Examples:**
|
|
- ❌ WRONG: `D:/repos/project/file.tsx`
|
|
- ✅ CORRECT: `D:\repos\project\file.tsx`
|
|
|
|
This applies to:
|
|
- Edit tool file_path parameter
|
|
- Write tool file_path parameter
|
|
- All file operations on Windows systems
|
|
|
|
|
|
### Documentation Guidelines
|
|
|
|
**NEVER create new documentation files unless explicitly requested by the user.**
|
|
|
|
- **Priority**: Update existing README.md files rather than creating new documentation
|
|
- **Repository cleanliness**: Keep repository root clean - only README.md unless user requests otherwise
|
|
- **Style**: Documentation should be concise, direct, and professional - avoid AI-generated tone
|
|
- **User preference**: Only create additional .md files when user specifically asks for documentation
|
|
|
|
|
|
---
|
|
|
|
## Official Documentation
|
|
|
|
### Bash Manual
|
|
|
|
**GNU Bash Reference Manual**
|
|
- **URL:** https://www.gnu.org/software/bash/manual/
|
|
- **Description:** The authoritative reference for bash features, syntax, and built-ins
|
|
- **Use for:** Detailed feature documentation, syntax clarification, version-specific features
|
|
|
|
**Bash Man Page**
|
|
```bash
|
|
man bash # Complete bash documentation
|
|
man bash-builtins # Built-in commands
|
|
```
|
|
- **Use for:** Quick reference on local system, offline documentation
|
|
|
|
### POSIX Standards
|
|
|
|
**POSIX Shell Command Language**
|
|
- **URL:** https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
|
|
- **Description:** IEEE/Open Group specification for portable shell scripting
|
|
- **Use for:** Writing portable scripts, understanding sh vs bash differences
|
|
|
|
**POSIX Utilities**
|
|
- **URL:** https://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
|
|
- **Description:** Standard utilities available in POSIX-compliant systems
|
|
- **Use for:** Portable command usage, cross-platform compatibility
|
|
|
|
### Command Documentation
|
|
|
|
**GNU Coreutils Manual**
|
|
- **URL:** https://www.gnu.org/software/coreutils/manual/
|
|
- **Description:** Documentation for core GNU utilities (ls, cat, grep, etc.)
|
|
- **Use for:** Understanding Linux command behavior, GNU-specific features
|
|
|
|
**Man Pages Online**
|
|
- **URL:** https://man7.org/linux/man-pages/
|
|
- **URL:** https://www.freebsd.org/cgi/man.cgi (BSD/macOS)
|
|
- **Description:** Online searchable man pages
|
|
- **Use for:** Quick online reference, comparing Linux vs BSD commands
|
|
|
|
---
|
|
|
|
## Style Guides and Standards
|
|
|
|
### Google Shell Style Guide
|
|
|
|
**URL:** https://google.github.io/styleguide/shellguide.html
|
|
|
|
**Key Points:**
|
|
- Industry-standard practices from Google
|
|
- Covers naming conventions, formatting, best practices
|
|
- When to use shell vs other languages
|
|
- Safety and portability guidelines
|
|
|
|
**Use for:** Professional code style, team standards, code reviews
|
|
|
|
### Defensive Bash Programming
|
|
|
|
**URL:** https://kfirlavi.herokuapp.com/blog/2012/11/14/defensive-bash-programming
|
|
|
|
**Key Points:**
|
|
- Writing robust bash scripts
|
|
- Error handling patterns
|
|
- Safe coding practices
|
|
- Code organization
|
|
|
|
**Use for:** Improving script reliability, avoiding common pitfalls
|
|
|
|
### Shell Style Guide (GitHub)
|
|
|
|
**URL:** https://github.com/bahamas10/bash-style-guide
|
|
|
|
**Key Points:**
|
|
- Community-driven style guidelines
|
|
- Practical examples
|
|
- Modern bash features
|
|
|
|
**Use for:** Alternative perspectives on style, community standards
|
|
|
|
---
|
|
|
|
## Tools and Utilities
|
|
|
|
### ShellCheck
|
|
|
|
**Website:** https://www.shellcheck.net/
|
|
**GitHub:** https://github.com/koalaman/shellcheck
|
|
**Online Tool:** https://www.shellcheck.net/ (paste code for instant feedback)
|
|
|
|
**Description:** Static analysis tool for shell scripts
|
|
|
|
**Installation:**
|
|
```bash
|
|
# Ubuntu/Debian
|
|
apt-get install shellcheck
|
|
|
|
# macOS
|
|
brew install shellcheck
|
|
|
|
# Windows (Scoop)
|
|
scoop install shellcheck
|
|
|
|
# Via Docker
|
|
docker run --rm -v "$PWD:/mnt" koalaman/shellcheck script.sh
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
shellcheck script.sh # Check script
|
|
shellcheck -x script.sh # Follow source statements
|
|
shellcheck -f json script.sh # JSON output
|
|
shellcheck -e SC2086 script.sh # Exclude specific warnings
|
|
```
|
|
|
|
**ShellCheck Wiki:** https://www.shellcheck.net/wiki/
|
|
- Detailed explanations of every warning
|
|
- **Use for:** Understanding and fixing ShellCheck warnings
|
|
|
|
### shfmt
|
|
|
|
**GitHub:** https://github.com/mvdan/sh
|
|
|
|
**Description:** Shell script formatter
|
|
|
|
**Installation:**
|
|
```bash
|
|
# macOS
|
|
brew install shfmt
|
|
|
|
# Go
|
|
go install mvdan.cc/sh/v3/cmd/shfmt@latest
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
shfmt -i 4 -w script.sh # Format with 4-space indent
|
|
shfmt -d script.sh # Show diff without modifying
|
|
shfmt -l script.sh # List files that would be changed
|
|
```
|
|
|
|
**Use for:** Consistent code formatting, automated formatting in CI
|
|
|
|
### BATS (Bash Automated Testing System)
|
|
|
|
**GitHub:** https://github.com/bats-core/bats-core
|
|
|
|
**Description:** Testing framework for bash scripts
|
|
|
|
**Installation:**
|
|
```bash
|
|
git clone https://github.com/bats-core/bats-core.git
|
|
cd bats-core
|
|
./install.sh /usr/local
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
bats test/ # Run all tests
|
|
bats test/script.bats # Run specific test file
|
|
bats --tap test/ # TAP output format
|
|
```
|
|
|
|
**Documentation:** https://bats-core.readthedocs.io/
|
|
|
|
**Use for:** Unit testing bash scripts, CI/CD integration
|
|
|
|
### bashate
|
|
|
|
**GitHub:** https://github.com/openstack/bashate
|
|
|
|
**Description:** Style checker (used by OpenStack)
|
|
|
|
**Installation:**
|
|
```bash
|
|
pip install bashate
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
bashate script.sh
|
|
bashate -i E006 script.sh # Ignore specific errors
|
|
```
|
|
|
|
**Use for:** Additional style checking beyond ShellCheck
|
|
|
|
### checkbashisms
|
|
|
|
**Package:** devscripts (Debian)
|
|
|
|
**Description:** Checks for bashisms in sh scripts
|
|
|
|
**Installation:**
|
|
```bash
|
|
apt-get install devscripts # Ubuntu/Debian
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
checkbashisms script.sh
|
|
checkbashisms -f script.sh # Force check even if #!/bin/bash
|
|
```
|
|
|
|
**Use for:** Ensuring POSIX compliance, portable scripts
|
|
|
|
---
|
|
|
|
## Learning Resources
|
|
|
|
### Interactive Tutorials
|
|
|
|
**Bash Academy**
|
|
- **URL:** https://www.bash.academy/
|
|
- **Description:** Modern, comprehensive bash tutorial
|
|
- **Topics:** Basics, scripting, advanced features
|
|
- **Use for:** Learning bash from scratch, structured learning path
|
|
|
|
**Learn Shell**
|
|
- **URL:** https://www.learnshell.org/
|
|
- **Description:** Interactive bash tutorial with exercises
|
|
- **Use for:** Hands-on practice, beginners
|
|
|
|
**Bash Scripting Tutorial**
|
|
- **URL:** https://linuxconfig.org/bash-scripting-tutorial
|
|
- **Description:** Comprehensive tutorial series
|
|
- **Use for:** Step-by-step learning, examples
|
|
|
|
### Guides and Documentation
|
|
|
|
**Bash Guide for Beginners**
|
|
- **URL:** https://tldp.org/LDP/Bash-Beginners-Guide/html/
|
|
- **Author:** The Linux Documentation Project
|
|
- **Description:** Comprehensive guide covering basics to intermediate
|
|
- **Use for:** Structured learning, reference material
|
|
|
|
**Advanced Bash-Scripting Guide**
|
|
- **URL:** https://tldp.org/LDP/abs/html/
|
|
- **Description:** In-depth coverage of advanced bash topics
|
|
- **Topics:** Complex scripting, text processing, system administration
|
|
- **Use for:** Advanced techniques, real-world examples
|
|
|
|
**Bash Hackers Wiki**
|
|
- **URL:** https://wiki.bash-hackers.org/
|
|
- **Alternative:** https://flokoe.github.io/bash-hackers-wiki/ (maintained mirror)
|
|
- **Description:** Community-driven bash documentation
|
|
- **Use for:** In-depth explanations, advanced topics, edge cases
|
|
|
|
**Greg's Wiki (Wooledge)**
|
|
- **URL:** https://mywiki.wooledge.org/
|
|
- **Key Pages:**
|
|
- https://mywiki.wooledge.org/BashFAQ
|
|
- https://mywiki.wooledge.org/BashPitfalls
|
|
- https://mywiki.wooledge.org/BashGuide
|
|
- **Description:** High-quality bash Q&A and guides
|
|
- **Use for:** Common questions, avoiding pitfalls, best practices
|
|
|
|
### Video Courses
|
|
|
|
**Bash Scripting on Linux (Udemy)**
|
|
- **Description:** Comprehensive video course
|
|
- **Use for:** Visual learners
|
|
|
|
**Shell Scripting: Discover How to Automate Command Line Tasks (Udemy)**
|
|
- **Description:** Practical shell scripting course
|
|
- **Use for:** Automation-focused learning
|
|
|
|
**LinkedIn Learning - Learning Bash Scripting**
|
|
- **Description:** Professional development course
|
|
- **Use for:** Structured corporate training
|
|
|
|
---
|
|
|
|
## Community Resources
|
|
|
|
### Stack Overflow
|
|
|
|
**Bash Tag**
|
|
- **URL:** https://stackoverflow.com/questions/tagged/bash
|
|
- **Use for:** Specific problems, code review, troubleshooting
|
|
|
|
**Top Questions:**
|
|
- **URL:** https://stackoverflow.com/questions/tagged/bash?tab=Votes
|
|
- **Use for:** Common problems and solutions
|
|
|
|
### Unix & Linux Stack Exchange
|
|
|
|
**URL:** https://unix.stackexchange.com/
|
|
|
|
**Shell Tag:** https://unix.stackexchange.com/questions/tagged/shell
|
|
**Bash Tag:** https://unix.stackexchange.com/questions/tagged/bash
|
|
|
|
**Use for:** Unix/Linux-specific questions, system administration
|
|
|
|
### Reddit
|
|
|
|
**/r/bash**
|
|
- **URL:** https://www.reddit.com/r/bash/
|
|
- **Description:** Bash scripting community
|
|
- **Use for:** Discussions, learning resources, help
|
|
|
|
**/r/commandline**
|
|
- **URL:** https://www.reddit.com/r/commandline/
|
|
- **Description:** Command-line interface community
|
|
- **Use for:** CLI tips, tools, productivity
|
|
|
|
### IRC/Chat
|
|
|
|
**Freenode #bash**
|
|
- **URL:** irc://irc.freenode.net/bash
|
|
- **Description:** Real-time bash help channel
|
|
- **Use for:** Live help, quick questions
|
|
|
|
**Libera.Chat #bash**
|
|
- **URL:** irc://irc.libera.chat/bash
|
|
- **Description:** Alternative IRC channel
|
|
- **Use for:** Live community support
|
|
|
|
---
|
|
|
|
## Books
|
|
|
|
### "Classic Shell Scripting" by Arnold Robbins & Nelson Beebe
|
|
|
|
**Publisher:** O'Reilly
|
|
**ISBN:** 978-0596005955
|
|
|
|
**Topics:**
|
|
- Shell basics and portability
|
|
- Text processing and filters
|
|
- Shell programming patterns
|
|
|
|
**Use for:** Comprehensive reference, professional development
|
|
|
|
### "Learning the bash Shell" by Cameron Newham
|
|
|
|
**Publisher:** O'Reilly
|
|
**ISBN:** 978-0596009656
|
|
|
|
**Topics:**
|
|
- Bash basics
|
|
- Command-line editing
|
|
- Shell programming
|
|
|
|
**Use for:** Systematic learning, reference
|
|
|
|
### "Bash Cookbook" by Carl Albing & JP Vossen
|
|
|
|
**Publisher:** O'Reilly
|
|
**ISBN:** 978-1491975336
|
|
|
|
**Topics:**
|
|
- Solutions to common problems
|
|
- Recipes and patterns
|
|
- Real-world examples
|
|
|
|
**Use for:** Problem-solving, practical examples
|
|
|
|
### "Wicked Cool Shell Scripts" by Dave Taylor & Brandon Perry
|
|
|
|
**Publisher:** No Starch Press
|
|
**ISBN:** 978-1593276027
|
|
|
|
**Topics:**
|
|
- Creative shell scripting
|
|
- System administration
|
|
- Fun and practical scripts
|
|
|
|
**Use for:** Inspiration, practical applications
|
|
|
|
### "The Linux Command Line" by William Shotts
|
|
|
|
**Publisher:** No Starch Press
|
|
**ISBN:** 978-1593279523
|
|
**Free PDF:** https://linuxcommand.org/tlcl.php
|
|
|
|
**Topics:**
|
|
- Command-line basics
|
|
- Shell scripting fundamentals
|
|
- Linux system administration
|
|
|
|
**Use for:** Beginners, comprehensive introduction
|
|
|
|
---
|
|
|
|
## Cheat Sheets and Quick References
|
|
|
|
### Bash Cheat Sheet (DevHints)
|
|
|
|
**URL:** https://devhints.io/bash
|
|
|
|
**Content:**
|
|
- Quick syntax reference
|
|
- Common patterns
|
|
- Parameter expansion
|
|
- Conditionals and loops
|
|
|
|
**Use for:** Quick lookups, syntax reminders
|
|
|
|
### Bash Scripting Cheat Sheet (GitHub)
|
|
|
|
**URL:** https://github.com/LeCoupa/awesome-cheatsheets/blob/master/languages/bash.sh
|
|
|
|
**Content:**
|
|
- Comprehensive syntax guide
|
|
- Examples and explanations
|
|
- Best practices
|
|
|
|
**Use for:** Single-file reference
|
|
|
|
### explainshell.com
|
|
|
|
**URL:** https://explainshell.com/
|
|
|
|
**Description:** Interactive tool that explains shell commands
|
|
|
|
**Example:** Paste `tar -xzvf file.tar.gz` to get detailed explanation of each flag
|
|
|
|
**Use for:** Understanding complex commands, learning command options
|
|
|
|
### Command Line Fu
|
|
|
|
**URL:** https://www.commandlinefu.com/
|
|
|
|
**Description:** Community-contributed command-line snippets
|
|
|
|
**Use for:** One-liners, clever solutions, learning new commands
|
|
|
|
### tldr Pages
|
|
|
|
**URL:** https://tldr.sh/
|
|
**GitHub:** https://github.com/tldr-pages/tldr
|
|
|
|
**Description:** Simplified man pages with examples
|
|
|
|
**Installation:**
|
|
```bash
|
|
npm install -g tldr
|
|
# Or
|
|
brew install tldr
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
tldr tar
|
|
tldr grep
|
|
tldr find
|
|
```
|
|
|
|
**Use for:** Quick command examples, practical usage
|
|
|
|
---
|
|
|
|
## Testing and Quality
|
|
|
|
### Testing Frameworks
|
|
|
|
**BATS (Bash Automated Testing System)**
|
|
- **URL:** https://github.com/bats-core/bats-core
|
|
- **Documentation:** https://bats-core.readthedocs.io/
|
|
- **Use for:** Unit testing
|
|
|
|
**shUnit2**
|
|
- **URL:** https://github.com/kward/shunit2
|
|
- **Description:** xUnit-based unit testing framework
|
|
- **Use for:** Alternative to BATS
|
|
|
|
**Bash Unit**
|
|
- **URL:** https://github.com/pgrange/bash_unit
|
|
- **Description:** Bash unit testing
|
|
- **Use for:** Lightweight testing
|
|
|
|
### CI/CD Integration
|
|
|
|
**GitHub Actions Example**
|
|
```yaml
|
|
name: Test
|
|
on: [push, pull_request]
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Install ShellCheck
|
|
run: sudo apt-get install -y shellcheck
|
|
- name: Run ShellCheck
|
|
run: find . -name "*.sh" -exec shellcheck {} +
|
|
- name: Install BATS
|
|
run: |
|
|
git clone https://github.com/bats-core/bats-core.git
|
|
cd bats-core
|
|
sudo ./install.sh /usr/local
|
|
- name: Run Tests
|
|
run: bats test/
|
|
```
|
|
|
|
**GitLab CI Example**
|
|
```yaml
|
|
test:
|
|
image: koalaman/shellcheck-alpine
|
|
script:
|
|
- find . -name "*.sh" -exec shellcheck {} +
|
|
|
|
bats:
|
|
image: bats/bats
|
|
script:
|
|
- bats test/
|
|
```
|
|
|
|
### Code Coverage
|
|
|
|
**bashcov**
|
|
- **URL:** https://github.com/infertux/bashcov
|
|
- **Description:** Code coverage for bash
|
|
- **Installation:** `gem install bashcov`
|
|
- **Use for:** Measuring test coverage
|
|
|
|
---
|
|
|
|
## Platform-Specific Resources
|
|
|
|
### Linux
|
|
|
|
**Linux Man Pages**
|
|
- **URL:** https://man7.org/linux/man-pages/
|
|
- **Use for:** Linux-specific command documentation
|
|
|
|
**systemd Documentation**
|
|
- **URL:** https://www.freedesktop.org/software/systemd/man/
|
|
- **Use for:** systemd service management
|
|
|
|
### macOS
|
|
|
|
**macOS Man Pages**
|
|
- **URL:** https://www.freebsd.org/cgi/man.cgi
|
|
- **Description:** BSD-based commands (similar to macOS)
|
|
- **Use for:** macOS command differences
|
|
|
|
**Homebrew**
|
|
- **URL:** https://brew.sh/
|
|
- **Use for:** Installing GNU tools on macOS
|
|
|
|
### Windows
|
|
|
|
**Git for Windows**
|
|
- **URL:** https://gitforwindows.org/
|
|
- **Documentation:** https://github.com/git-for-windows/git/wiki
|
|
- **Use for:** Git Bash on Windows
|
|
|
|
**WSL Documentation**
|
|
- **URL:** https://docs.microsoft.com/en-us/windows/wsl/
|
|
- **Use for:** Windows Subsystem for Linux
|
|
|
|
**Cygwin**
|
|
- **URL:** https://www.cygwin.com/
|
|
- **Use for:** POSIX environment on Windows
|
|
|
|
### Containers
|
|
|
|
**Docker Bash Best Practices**
|
|
- **URL:** https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
|
|
- **Use for:** Bash in containers
|
|
|
|
**Container Best Practices**
|
|
- **URL:** https://cloud.google.com/architecture/best-practices-for-building-containers
|
|
- **Use for:** Production container scripts
|
|
|
|
---
|
|
|
|
## Advanced Topics
|
|
|
|
### Process Substitution
|
|
|
|
**Greg's Wiki:**
|
|
- **URL:** https://mywiki.wooledge.org/ProcessSubstitution
|
|
- **Use for:** Understanding `<()` syntax
|
|
|
|
### Parameter Expansion
|
|
|
|
**Bash Hackers Wiki:**
|
|
- **URL:** https://wiki.bash-hackers.org/syntax/pe
|
|
- **Use for:** Complete parameter expansion reference
|
|
|
|
### Regular Expressions
|
|
|
|
**Bash Regex:**
|
|
- **URL:** https://mywiki.wooledge.org/RegularExpression
|
|
- **Use for:** Regex in bash `[[ =~ ]]`
|
|
|
|
**PCRE vs POSIX:**
|
|
- **URL:** https://www.regular-expressions.info/posix.html
|
|
- **Use for:** Understanding regex flavors
|
|
|
|
### Parallel Processing
|
|
|
|
**GNU Parallel:**
|
|
- **URL:** https://www.gnu.org/software/parallel/
|
|
- **Tutorial:** https://www.gnu.org/software/parallel/parallel_tutorial.html
|
|
- **Use for:** Parallel command execution
|
|
|
|
### Job Control
|
|
|
|
**Bash Job Control:**
|
|
- **URL:** https://www.gnu.org/software/bash/manual/html_node/Job-Control.html
|
|
- **Use for:** Background jobs, job management
|
|
|
|
---
|
|
|
|
## Troubleshooting Resources
|
|
|
|
### Debugging Tools
|
|
|
|
**bashdb**
|
|
- **URL:** http://bashdb.sourceforge.net/
|
|
- **Description:** Bash debugger
|
|
- **Use for:** Step-by-step debugging
|
|
|
|
**xtrace**
|
|
```bash
|
|
set -x # Enable
|
|
set +x # Disable
|
|
```
|
|
- **Use for:** Trace command execution
|
|
|
|
**PS4 for Better Trace Output**
|
|
```bash
|
|
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
|
|
set -x
|
|
```
|
|
|
|
### Common Issues
|
|
|
|
**Bash Pitfalls**
|
|
- **URL:** https://mywiki.wooledge.org/BashPitfalls
|
|
- **Description:** 50+ common mistakes in bash
|
|
- **Use for:** Avoiding and fixing common errors
|
|
|
|
**Bash FAQ**
|
|
- **URL:** https://mywiki.wooledge.org/BashFAQ
|
|
- **Description:** Frequently asked questions
|
|
- **Use for:** Quick answers to common questions
|
|
|
|
---
|
|
|
|
## Summary: Where to Find Information
|
|
|
|
| Question Type | Resource |
|
|
|---------------|----------|
|
|
| Syntax reference | Bash Manual, DevHints cheat sheet |
|
|
| Best practices | Google Shell Style Guide, ShellCheck |
|
|
| Portable scripting | POSIX specification, checkbashisms |
|
|
| Quick examples | tldr, explainshell.com |
|
|
| Common mistakes | Bash Pitfalls, ShellCheck Wiki |
|
|
| Advanced topics | Bash Hackers Wiki, Greg's Wiki |
|
|
| Testing | BATS documentation |
|
|
| Platform differences | Platform-specific docs, Stack Overflow |
|
|
| Troubleshooting | Stack Overflow, Unix & Linux SE |
|
|
| Learning path | Bash Academy, TLDP guides |
|
|
|
|
---
|
|
|
|
## Quick Resource Lookup
|
|
|
|
**When writing a new script:**
|
|
1. Start with template from Google Style Guide
|
|
2. Use ShellCheck while developing
|
|
3. Reference Bash Manual for specific features
|
|
4. Check Bash Pitfalls for common mistakes
|
|
|
|
**When debugging:**
|
|
1. Use `set -x` for tracing
|
|
2. Check ShellCheck warnings
|
|
3. Search Bash Pitfalls
|
|
4. Search Stack Overflow for specific error
|
|
|
|
**When learning:**
|
|
1. Start with Bash Academy or TLDP
|
|
2. Use explainshell.com for commands
|
|
3. Read Greg's Wiki for in-depth topics
|
|
4. Practice with BATS tests
|
|
|
|
**When ensuring quality:**
|
|
1. Run ShellCheck
|
|
2. Run shellcheck
|
|
3. Format with shfmt
|
|
4. Write BATS tests
|
|
5. Review against Google Style Guide
|
|
|
|
These resources provide authoritative, up-to-date information for all aspects of bash scripting.
|