From simple scripts to powerful system tools - A hands-on journey through Unix/Linux system programming and automation, evolving complexity with each project.
This repository documents my evolution from writing basic Bash one-liners to developing sophisticated system utilities in C. Each level builds upon previous knowledge, creating a comprehensive toolbox for Unix/Linux system management.
Basic automation and file management
- Simple file operations
- System information scripts
- Basic text processing
Useful utilities with error handling
- Backup systems
- Process monitoring
- Configuration management
System programming introduction
- File analysis tools
- Process information
- Memory usage monitors
Combining Bash and C for efficiency
- Performance monitors
- System health dashboards
- Automated maintenance tools
Production-ready system tools
- Security scanners
- Network monitors
- Custom system utilities
unix-toolbox-evolution/
β
βββ level-1-shell-basics/ # Beginner Bash scripts
β βββ file-cleaner/ # Simple temp file cleaner
β βββ system-info/ # Basic system information
β βββ text-processor/ # AWK/SED examples
β
βββ level-2-scripting-logic/ # Intermediate utilities
β βββ backup-manager/ # Automated backup system
β βββ process-watcher/ # Process monitoring tool
β βββ config-manager/ # Dotfile management
β
βββ level-3-c-foundations/ # C system programming
β βββ file-analyzer/ # File statistics in C
β βββ memory-monitor/ # RAM usage tool
β βββ process-lister/ # ps-like utility
β
βββ level-4-integration/ # Bash + C projects
β βββ system-dashboard/ # Combined monitoring tool
β βββ performance-logger/ # System metrics collector
β βββ auto-maintenance/ # Smart cleanup system
β
βββ level-5-advanced-toolbox/ # Complex system tools
β βββ security-scanner/ # File integrity checker
β βββ network-monitor/ # Connection watcher
β βββ custom-commands/ # Enhanced Unix utilities
β
βββ playground/ # Experiments and tests
βββ docs/ # Learning notes and references
βββ README.md
βββ templates/ # Starter templates
βββ .evolution-log # Personal progress tracker
# Clone the repository
git clone https://github.com/DavFilsDev/unix-toolbox-evolution.git
cd unix-toolbox-evolution
# Start with Level 1
cd level-1-shell-basics/file-cleaner
./cleanmytemp.sh --help
# Or jump to any level
cd level-3-c-foundations/file-analyzer
make && ./analyze /path/to/file- Linux/macOS/WSL (Unix-like environment)
- Bash 4.0 or higher
- GCC/Clang for C projects (Level 3+)
- Basic terminal familiarity
- β Unix philosophy and tool design
- β Bash scripting and automation
- β C system programming
- β Error handling and robustness
- β Performance optimization
- β Filesystem and permissions
- β Process management
- β Memory and resource monitoring
- β Networking basics
- β Security principles
- β Git and version control
- β Documentation writing
- β Testing and debugging
- β Code organization
- β Open source contribution
# Level 1: Basic cleaner
find /tmp -type f -mtime +7 -delete
# Level 2: With logging and safety
./cleaner.sh --dry-run --log /var/log/cleanup.log
# Level 3: C version for speed
./fastclean --parallel --exclude "*.important"
# Level 5: Intelligent cleaner
./smartclean --learn --auto --notify# Level 1: Simple Bash
top -n 1 | grep "Cpu"
# Level 3: C program for efficiency
./cpumon --interval 1 --format json
# Level 4: Integrated dashboard
./sysdash --web --port 8080
# Level 5: Alerting system
./monitor --threshold 80% --alert email --action "scale-services"Each level contains:
- Project README with objectives and learnings
- Code comments explaining key concepts
- Challenge exercises to extend functionality
- Further reading links for deep dives
- Start at Level 1, even if you know basics (reinforces fundamentals)
- Complete all projects in a level before moving to next
- Modify and extend each project with your own features
- Document your learnings in the
.evolution-log
- Use as reference for Unix tool development
- Copy templates for new projects
- Study the progression patterns
- Contribute your own tools or improvements
- Start Simple: Minimum viable tool first
- Iterate: Add features gradually
- Refactor: Improve code quality at each stage
- Document: Explain the "why" not just the "how"
- Share: Make tools useful for others
This is a personal learning journey, but contributions are welcome! See CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
timeline
title Toolbox Evolution Timeline
section Level 1
Shell Basics : File operations<br>System info
section Level 2
Scripting Logic : Backup systems<br>Process monitoring
section Level 3
C Foundations : File analysis<br>Memory tools
section Level 4
Integration : Dashboards<br>Maintenance
section Level 5
Advanced Tools : Security<br>Networking
"The Unix philosophy is to write programs that do one thing and do it well." β This repository is my journey to embody that philosophy through practical, evolving tools.
David RATIANDRAIBE Cybersecurity & AI-Oriented Engineer (Student) Madagascar π²π¬