Releases: melihcelenk/MyLinuxHelper
MyLinuxHelper v1.5.1 - Release Notes
Release Date: 09.11.2025
Previous Version: v1.5.0
🐛 Bug Fixes
Fixed Hierarchical Category Display in Interactive Menu
Issue: In the interactive bookmark menu (bookmark list -i), categories were displayed as flat strings (e.g., projects/bash, projects/mmm) instead of showing the hierarchical structure that was already working in the non-interactive list view.
Fix: The interactive menu now correctly displays hierarchical categories with proper indentation and nesting, matching the non-interactive list behavior.
Before:
📂 projects/bash
[mylinuxhelper] /path/to/project
📂 projects/mmm
[mesela] /path/to/project
After:
📂 projects
📂 bash
[mylinuxhelper] /path/to/project
📂 mmm
[mesela] /path/to/project
Impact:
- Better visual organization of bookmarks in interactive mode
- Consistent behavior between interactive and non-interactive list views
- Improved user experience when navigating bookmarks with hierarchical categories
Improved Docker Command Handling
Issue: The mlh docker in <pattern> command had several issues:
- Required manual
sudousage:sudo mlh docker in <pattern>(which failed due to PATH issues) - Could not detect Docker Desktop socket vs system Docker daemon
- Poor error messages when Docker daemon was not accessible
Fixes:
- Automatic Sudo Detection: The command now automatically detects if Docker requires sudo permissions and handles it internally. Users no longer need to run
sudo mlh docker in <pattern>. - Docker Socket Detection: Automatically detects and uses the correct Docker socket:
- Prefers system Docker daemon at
/var/run/docker.sock - Ignores Docker Desktop socket if Docker Desktop is not running
- Provides clear error messages if Docker daemon is not accessible
- Prefers system Docker daemon at
- Better Error Messages: Improved error handling with clear, actionable messages:
- Interactive vs non-interactive session detection
- Specific guidance for permission issues
- Helpful troubleshooting suggestions
Usage:
# Before (didn't work):
sudo mlh docker in port # Command not found error
# After (works automatically):
mlh docker in port # Automatically handles sudo if neededTroubleshooting: If you encounter issues, the command now provides specific guidance:
- Run in an interactive terminal for password prompts
- Add user to docker group for passwordless access
- Clear error messages for Docker daemon connection issues
Fixed Configuration File Handling
Issue: Fresh installations could fail if the configuration file (~/.mylinuxhelper/mlh.conf) was missing, causing bookmark alias setup to fail.
Fix: The setup script now automatically creates the configuration file from the example template if it doesn't exist, ensuring BOOKMARK_ALIAS=bm is set by default.
Impact:
- Fresh installations work out of the box
- Bookmark alias (
bm) is available immediately after installation - No manual configuration required for basic usage
✨ New Features
Uninstall Functionality
New Command: mlh --version uninstall
Completely removes MyLinuxHelper from your system, including:
- Configuration directory (
~/.mylinuxhelper) - Symlinks in
~/.local/binand/usr/local/bin - PATH exports from
~/.bashrcand~/.profile - Wrapper functions from
~/.bashrc(mlh, bookmark, alias wrappers) - Auto-update hooks
Usage:
# Via interactive menu:
mlh
# Select: 0. App Settings & Updates
# Select: 4. Uninstall MyLinuxHelper
# Or directly:
mlh --version uninstallSafety: The uninstall command requires explicit confirmation (type 'yes') before proceeding, preventing accidental removal.
🔧 Improvements
Installation Cleanup
Improvement: The installation process now automatically removes development files that are not needed by end users:
- Test files and test directories
- Development documentation (CLAUDE.md, TODO.md)
- Release notes (except current version)
- GitHub workflows and CI configuration
- Development assets
Impact:
- Cleaner installation directory
- Faster installation (smaller download)
- Only essential files are installed
- Better separation between development and production files
Note: The .git directory is preserved to enable update functionality via git pull.
Enhanced Documentation
Improvements:
- Added demo animations for bookmark functionality
- Added demo animation for Linux/Docker container management
- Updated README with troubleshooting section for Docker commands
- Improved examples and usage patterns
📊 Test Results
All existing tests continue to pass. The test suite has been improved to handle edge cases and provide better error reporting.
Total tests: 293+
Passed: 293+ (100%)
Skipped: 5 (shellcheck tests when shellcheck not available)
Failed: 0
🔄 Migration Guide
Upgrading from v1.5.0
-
Run Update:
mlh update # Or manually: bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
-
No Configuration Changes Required:
- No changes to config files needed
- Existing bookmarks remain unchanged
- All features work as before, with improvements
-
Docker Command Changes:
- You no longer need to use
sudo mlh docker in <pattern> - Simply run
mlh docker in <pattern>- it will handle sudo automatically - If you encounter issues, the command now provides clear error messages and troubleshooting steps
- You no longer need to use
No Breaking Changes
- All existing
bookmarkcommands continue to work exactly as before - Interactive menu now correctly displays hierarchical categories
- No changes to bookmark storage format or behavior
- Docker commands are backward compatible with improved error handling
📦 Installation
New Installation
bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"Update Existing Installation
mlh update🎯 Summary of Changes
This release focuses on bug fixes and usability improvements:
- Fixed: Hierarchical category display in interactive bookmark menu
- Fixed: Docker command sudo handling and error messages
- Fixed: Configuration file creation for fresh installations
- Added: Uninstall functionality via
mlh --version uninstall - Improved: Installation process with automatic cleanup of development files
- Improved: Documentation with demo animations and troubleshooting guides
📞 Support & Feedback
- Issues: https://github.com/melihcelenk/MyLinuxHelper/issues
- Discussions: https://github.com/melihcelenk/MyLinuxHelper/discussions
- Documentation: See
README.mdin the repository
🙏 Acknowledgments
Thank you to all users who reported issues and provided feedback to help improve MyLinuxHelper!
Full Changelog: v1.5.0...v1.5.1
MyLinuxHelper v1.5.0 - Release Notes
Release Date: 2025-11-09
Previous Version: v1.4.1
🎉 What's New in v1.5.0
⭐ Major Feature: Configurable Bookmark Shortcuts (Phase 4)
We've added a highly requested usability feature - configurable shortcut aliases for the bookmark command!
Key Highlights:
- Custom Shortcuts: Create your own shortcut/alias for the
bookmarkcommand (e.g.,bm,fav,goto) - Simple Setup: Just add
BOOKMARK_ALIAS=bmto~/.mylinuxhelper/mlh.confand run./setup.sh - Smart Conflict Detection: Setup warns if your chosen alias conflicts with existing commands
- Dynamic Help: Help text automatically shows examples using your configured shortcut
- Full Feature Support: All bookmark features work with the alias - it's just a convenient shortcut
Example Usage:
# After setup, if you chose 'bm':
bm . # Save current directory
bm list # Interactive list (NEW: default behavior)
bm myproject # Jump to named bookmark
bm --help # Help shows 'bm' in examplesConfiguration:
- Config file:
~/.mylinuxhelper/mlh.conf(new centralized config for all MLH settings) - Format:
BOOKMARK_ALIAS=bm - Example: See
docs/config/mlh.conf.examplein repository - Change anytime by editing the config file and re-running
./setup.sh - Set to empty string to disable the shortcut
🚀 Improved Default Behavior
Interactive List by Default
bookmark listnow shows interactive TUI by default (was non-interactive)- Faster workflow: No need to add
-iflag anymore - New flag: Use
bookmark list -nfor non-interactive simple output - Filter support:
bookmark list <category>opens interactive list filtered by category
Before:
bookmark list # Non-interactive output
bookmark list -i # Interactive TUI (had to specify)Now:
bookmark list # Interactive TUI (default - faster!)
bookmark list -n # Non-interactive output (when needed)✨ Enhancements
Unified Configuration System
- New: Centralized
mlh.conffor all MLH configuration - Better organized: Clear sections for different features
- Future-ready: All future MLH settings will use this file
- Example provided: See
docs/config/mlh.conf.example
Bookmark System
- Improved: Hierarchical category display in list view
- Categories now display with proper indentation:
📂 projects/linux - Subcategories are shown nested under parent categories
- Categories now display with proper indentation:
- Improved: Path validation warnings with better visual indicators (⚠ symbol)
- Improved: Better handling of command name conflicts during bookmark creation
Testing & Quality
- Reorganized: Bookmark tests moved to
tests/bookmark/subdirectory - Added: Comprehensive test suite for bookmark alias feature (41 new tests)
- Config file handling (28 tests)
- Dynamic help display
- Alias validation and conflict detection
- Integration tests (13 tests)
- Added: Automated ShellCheck validation test suite
- Validates all shell scripts for code quality
- Integrated into main test runner
- Total Test Count: Now 293 tests (was 246)
- bookmark/mlh-bookmark: 80 tests
- bookmark/bookmark-alias: 28 tests
- bookmark/bookmark-alias-integration: 13 tests
- shellcheck: 6 tests (validates code quality)
- All other test suites: stable
- Code Quality: All scripts pass ShellCheck validation
- Formatting: All scripts formatted with shfmt for consistency
📚 Documentation Updates
New Documentation
docs/config/mlh.conf.example: Template configuration file with all options documenteddocs/BOOKMARK_ALIAS_GUIDE.md: Comprehensive alias setup and troubleshooting guide (moved from old location)
Updated Documentation
CLAUDE.md:- Updated with centralized config system architecture
- New test structure documentation
- Bookmark alias implementation details
README.md:- Updated bookmark examples to show new default behavior
- Config system reference
📊 Test Results
Total tests: 293
Passed: 288 (98.3%)
Skipped: 5 (shellcheck tests when shellcheck not available)
Failed: 0
Test Coverage by Component:
✅ bookmark/bookmark-alias-integration: 13/13 passed
✅ bookmark/bookmark-alias: 28/28 passed
✅ bookmark/mlh-bookmark: 80/80 passed
✅ current-session: 1/1 passed
✅ isjsonvalid: 18/18 passed
✅ linux: 15/15 passed
✅ ll: 10/10 passed
✅ mlh-about: 12/12 passed
✅ mlh-docker: 18/18 passed
✅ mlh-history: 34/34 passed
✅ mlh-json: 18/18 passed
✅ mlh: 20/20 passed
✅ search: 16/16 passed
✅ shellcheck: 6/6 passed (when shellcheck available)
✅ time-debug: 4/4 passed
Note: All tests pass when required tools (shellcheck, tmux) are available. Test suite now includes automated ShellCheck validation.
🔄 Migration Guide
Upgrading from v1.4 or v1.4.1
-
Run Update:
mlh update # Or manually: bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
-
Configure Alias (Optional):
# Create/edit config file mkdir -p ~/.mylinuxhelper nano ~/.mylinuxhelper/mlh.conf # Add your preferred alias BOOKMARK_ALIAS=bm # Re-run setup to apply changes cd ~/.mylinuxhelper ./setup.sh # Reload shell source ~/.bashrc
No Breaking Changes
- All existing
bookmarkcommands continue to work exactly as before - New default:
bookmark listnow shows interactive menu (faster workflow!) - Existing bookmarks in
~/.mylinuxhelper/bookmarks.jsonare fully compatible - Shortcut/alias feature is completely optional
📦 Installation
New Installation
bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"Update Existing Installation
mlh update🎯 Roadmap for v1.6
Based on the TODO.md and GitHub issues, future enhancements being considered:
- Centralized config system expansion - Additional settings for history, docker, etc.
- fzf integration for fuzzy finding bookmarks
- Tab completion for bookmark names and categories
- Git repo detection - automatically bookmark git repository roots
- Frecency-based sorting - most frequently/recently used bookmarks first
- Bookmark export/import for sharing across machines
- Bookmark sync via Git for multi-device workflows
🐛 Known Issues
- ShellCheck Tests: ShellCheck validation tests are skipped if
shellcheckis not installed. Install withsudo apt-get install shellcheck(or use Docker) to run these tests. - WSL Compatibility: Interactive mode works but may require
/dev/ttyfallback in some WSL configurations. This is automatically handled by the code.
📞 Support & Feedback
- Issues: https://github.com/melihcelenk/MyLinuxHelper/issues
- Discussions: https://github.com/melihcelenk/MyLinuxHelper/discussions
- Documentation: See
README.mdandCLAUDE.mdin the repository
🙏 Acknowledgments
Special thanks to all contributors and users who provided feedback on the bookmark system and requested the alias feature!
Full Changelog: 1.4.1...v1.5.0
📝 Note on v1.4.1
v1.4.1 was an internal release with code quality improvements (ShellCheck fixes, formatting). This release (v1.5.0) includes all user-facing features and enhancements since v1.4.1.
v1.4.1 - Comprehensive Test Suite & Code Quality
🎉 MyLinuxHelper v1.4.1 - Comprehensive Test Suite & Code Quality
This release introduces a complete test framework with 161 tests achieving 100% success rate, enhanced mlh history command with powerful time-based filtering, and significant code quality improvements.
✨ What's New
🆕 Enhanced Command History (mlh history)
Major improvements to command history management:
- Time-based filtering: Show commands from last 3 days (
-t 3d), 20 minutes (-t 20m), or 2 hours (-t 2h) - Before offset: Specify time offset with
-bflag (e.g.,-t 20m -b 1h) - Context view: Show commands around a specific line number with
-gflag - Find with limit: Search and limit results (e.g.,
mlh history 10 -f docker) - Improved goto command: Better navigation to specific command numbers
- Line numbers: Added for easier command reference
mlh history -t 3d # Last 3 days
mlh history -t 20m -b 1h # 20 minutes starting from 1 hour ago
mlh history -g 1790 # Show context around command #1790
mlh history 10 -f git # Last 10 git commands🔧 linux.sh Improvements
- Fixed examples: Updated documentation with correct usage examples
- Better error messages and help text
🔒 Security & CI/CD
- Added ShellCheck workflow: Automated code quality checks on every commit
- CodeQL analysis: Enhanced security scanning
- GitHub Actions permissions: Fixed workflow permissions for better security
✨ Highlights
📊 New: Comprehensive Test Suite
Added 161 tests across 9 plugins with full coverage:
./tests/test # Run all 161 tests
./tests/test mlh-history # Run specific plugin testsTest Coverage:
- mlh-history (34 tests) - Command history & time parsing
- mlh.sh (20 tests) - Main dispatcher & routing
- mlh-docker (18 tests) - Container access & patterns
- mlh-json (18 tests) - JSON search & validation
- isjsonvalid (18 tests) - Validation engine
- search (16 tests) - File search
- linux (15 tests) - Container management
- mlh-about (12 tests) - Project info
- ll (10 tests) - Directory listing
Results: ✅ 161 passing, 0 failing (8 tests gracefully skip if jq is not installed)
🔧 Test Framework Features
- SKIP Support: Gracefully handles missing dependencies (e.g.,
jq) - Syntax Detection: Pre-validates test files for CRLF/syntax errors
- Color Output: Green (PASS) / Yellow (SKIP) / Red (FAIL)
- Auto-fix Hints: Provides commands to fix detected issues
🐛 Bug Fixes
- mlh-history: Fixed pattern matching after code formatting
- Test Runner: Now properly catches and reports syntax errors
- CRLF Detection: Added pre-validation with helpful fix commands
🧹 Code Quality
ShellCheck Clean:
- ✅ Fixed 17 SC2155 warnings (separate declare/assign)
- ✅ Removed unused variables
- ✅ All scripts pass ShellCheck validation
- ✅ Compatible with
shfmtformatter
Before:
local var=$(command) # Masks return valueAfter:
local var
var=$(command) # Proper error handling📚 Documentation
New/Updated:
- Complete test coverage documentation
- Development guide (formatting, testing, contributing)
- Code quality standards
- Troubleshooting (CRLF fixes)
🚀 Upgrade
mlh update
# Or: cd ~/.mylinuxhelper && git pull && ./setup.sh📊 Stats
| Metric | Value |
|---|---|
| Total Tests | 161 |
| Passing Tests | 161 (or 153 without jq) |
| Success Rate | 100% |
| Test Suites | 9 |
| ShellCheck Issues | 0 |
📦 What's Changed Since v1.3
New Features:
- Complete test suite (161 tests across 9 plugins)
- Enhanced
mlh historycommand with time filtering - Test framework with SKIP support and syntax validation
- ShellCheck and CodeQL workflows
Improvements:
- Fixed all ShellCheck warnings (17 instances)
- Code formatting with shfmt
- Comprehensive documentation updates
- Better error messages and help text
Bug Fixes:
- Fixed test runner syntax error detection
- Fixed pattern matching after formatting
- Removed unused variables
🔗 Resources
Test Summary:
Total tests: 161
Passed: 161 (or 153 with 8 skipped if jq is not installed)
Failed: 0
All tests passed! ✅
v1.3 – Version Management & JSON Search
Release Date: 17.10.2025
Overview
This release focuses on version management, automatic updates, and project information features. Major refactoring has been done to improve code maintainability and user experience.
New Features
1. Version Management System (mlh-version.sh)
- New standalone version management module separated from main dispatcher
- Version information with detailed metadata:
- Current version with release date
- First release date tracking
- Semantic versioning support
- Command support:
mlh --version- Display current versionmlh -v- Short version displaymlh --version --help- Version command help
2. Automatic Update System
- Smart update functionality that downloads and installs latest version from GitHub
- Multiple command variants:
mlh update- Update to latest versionmlh --version update- Update via version commandmlh -v update- Update via short flag
- Periodic update scheduling with configuration menu:
- Daily updates
- Weekly updates
- Monthly updates
- Disable option
- Configuration stored in
~/.mylinuxhelper/.update-config - Automatic bashrc hook installation for background update checking
- Smart time-based update logic using epoch timestamps
- Command:
mlh update -p- Configure periodic updates
3. About Page (mlh-about.sh)
- Comprehensive project information page
- Displays:
- Project description and features
- Author information (Melih Çelenk)
- GitHub repository link
- License information (MIT License)
- Version history:
- First release date
- Current version with date
- Latest GitHub release with date
- GitHub Releases API integration:
- Fetches latest release version from GitHub
- Retrieves and formats release date (ISO 8601 → DD.MM.YYYY)
- Graceful fallback if API unavailable
- Cross-platform date parsing (GNU/BSD compatibility)
- Command:
mlh about- Show project information
4. App Settings & Updates Menu
- New submenu for application-level settings
- Organized structure:
- Show current version
- Update to latest version
- Configure periodic updates
- Back to main menu
- Accessible from main interactive menu (option 8)
- Better organization of version/update related features
5. JSON Helper (mlh-json.sh and isjsonvalid.sh)
- Advanced JSON operations with fuzzy search and validation
- Centralized validation architecture:
isjsonvalid.shis the single source of truth for JSON validation- Both
isjsonvalidandmlh json --isvaliduse the same validation engine - Flexible output modes: quick (Yes/No) or detailed (with colors)
- Validation commands:
isjsonvalid <file>- Quick validation (Yes/No output)isjsonvalid -d <file>- Detailed validation with colorsmlh json --isvalid <file>- Detailed validation (default)mlh json --isvalid -d <file>- Detailed validation with colors
- Search commands:
mlh json get <field> from <file>- Search fields in JSON
- Comprehensive search capabilities:
- Searches ALL JSON keys (arrays, objects, and scalar values)
- Fuzzy field name matching (case-insensitive)
- Partial key matching (e.g.,
reqfinds "RequestedTags") - Path hint support for targeted search (e.g.,
q.studyd→Query.StudyDate) - Interactive menu for multiple matches
- Full JSON path display with quoted segments
- Duplicate prevention for unique results
- Intelligent output formatting:
- Object fields:
"Path"."Key": "value" - Array values:
"ArrayPath": ["value"] - Compact JSON format for complex structures
- Object fields:
- Auto-installation of dependencies:
- Automatically installs
jqif not present - Uses system package manager detection
- Automatically installs
- Command:
mlh json --help- Show JSON helper help
Improvements
Code Quality
- Clean code refactoring:
- Removed duplicate VERSION constant across files
- Single source of truth for version information
- Removed duplicate GITHUB_REPO references
- Better separation of concerns with modular scripts
- Centralized JSON validation: Removed duplicate validation code from
mlh-json.sh, delegated toisjsonvalid.sh - Single source of truth for JSON validation logic
User Experience
- Enhanced interactive menu:
- Reorganized menu items (1-8)
- Merged JSON-related commands into single option (4)
- Added "About MyLinuxHelper" option (7)
- Added "App Settings & Updates" submenu (8)
- Better navigation with back option in submenu
- Smart menu flow: Help messages exit to shell (not loop back to menu)
- Users can read help and immediately use commands without re-navigating
- Improved help system:
- Fixed
mlh update --helpnot showing help - Fixed
mlh --version -hshowing version instead of help - Proper help flag checking in all commands
- Consistent help documentation
- Fixed
Architecture
- Modular design:
- Separated version management to
mlh-version.sh - Separated about page to
mlh-about.sh - Clean delegation pattern using
exec - Single responsibility functions
- Separated version management to
- Robust error handling:
- Strict error handling with
set -euo pipefail - Graceful degradation for network failures
- Cross-platform compatibility (curl/wget, date commands)
- Strict error handling with
Technical Details
New Files
plugins/mlh-version.sh- Version management and update systemplugins/mlh-about.sh- About page with project informationplugins/mlh-json.sh- JSON operations helper with fuzzy search
Modified Files
plugins/mlh.sh:- Removed VERSION constant
- Added
show_app_settings_menu()function - Updated
show_interactive_menu()to 8 options - Merged JSON operations (isjsonvalid + mlh json) into single menu option
- Changed menu flow: Help displays now exit instead of looping back
- Added
about,update, andjsoncommand handlers - Added json category to help documentation
- Improved help documentation
plugins/isjsonvalid.sh:- Added
-d/--detailflag support for flexible output modes - Centralized JSON validation logic (single source of truth)
- Enhanced help documentation with examples
- Color-coded output in detailed mode
- Better error messages
- Added
plugins/mlh-json.sh:- Delegates validation to
isjsonvalid.sh(removed duplicate code) - Updated
--isvalidcommand to forward toisjsonvalid.sh - Defaults to detailed output for
mlh json --isvalid - Updated help to show both
isjsonvalidandmlh jsoncommands - Combined usage examples for all JSON operations
- Delegates validation to
Configuration Files
~/.mylinuxhelper/.update-config- Stores periodic update settingsSCHEDULE- Update frequency (daily/weekly/monthly/disabled)LAST_UPDATE- Epoch timestamp of last update check
API Integration
- GitHub Releases API endpoint:
https://api.github.com/repos/melihcelenk/MyLinuxHelper/releases/latest - Fetched data:
tag_name,published_at - Date format conversion: ISO 8601 → DD.MM.YYYY
Usage Examples
Version Information
# Show current version
mlh --version
mlh -v
# Show version help
mlh --version --helpUpdate Commands
# Update to latest version
mlh update
mlh --version update
mlh -v update
# Configure periodic updates
mlh update -p
# Show update help
mlh update --helpAbout Page
# Show project information
mlh about
# Access via interactive menu
mlh
# Then select option 7Settings Menu
# Open interactive menu
mlh
# Then select option 8 for "App Settings & Updates"Interactive Menu
# Open interactive menu
mlh
# Menu structure:
# 1. linux - Linux container management
# 2. search - Fast file search
# 3. i - Package installer
# 4. JSON operations - Validate and search JSON files
# 5. ll - Enhanced directory listing
# 6. mlh docker - Docker shortcuts
# 7. About - Project information
# 8. Settings - Version and updatesJSON Helper
# Quick JSON validation (Yes/No)
isjsonvalid users.json
# Output: Yes
# Detailed JSON validation
mlh json --isvalid users.json
# Output: ✓ Valid JSON
# Search for a field (fuzzy match, case-insensitive)
mlh json get name from users.json
# Output: "users"."name": "John"
# Partial/fuzzy matching
mlh json get mail from users.json
# Finds "email": "users"."email": "john@example.com"
# Path hint for targeted search (no menu)
mlh json get settings.lang from config.json
# Output: "settings"."language": "en"
# Multiple matches - shows interactive menu
mlh json get user from users.json
# Output:
# Found 2 matches for 'user':
# 1. "users": ["John"]
# 2. "users": ["Jane"]
# Select a number (1-2) or press Enter to show all:
# Show help
mlh json --helpBreaking Changes
None. All existing commands remain fully compatible.
Bug Fixes
- Fixed
mlh update --helpexecuting update instead of showing help - Fixed
mlh --version -hshowing version instead of help - Improved error handling in menu navigation
- Better user feedback for invalid menu selections
Future Enhancements
- Release notes display in about page
- Update notifications on new release
- Rollback functionality
- Version comparison utilities
- Plugin version management
- JSON Manipulating utilities
Contributors
- Melih Çelenk (@melihcelenk)
License
MIT License - See LICENSE file for details
Full Changelog: v1.2...v1.3
v1.2 – Fast File Search & Version Display
🔍 MyLinuxHelper v1.2
This release adds a powerful file search command and version display functionality, making it easier to find files and track your MyLinuxHelper version.
✨ New Features
-
Fast file search (
search)- Quickly search for files in current directory and subdirectories.
- Smart search: Case-insensitive when no wildcards are used.
- Wildcard support: Use patterns like
*.json,test*,config.?. - Optional path parameter: Search in specific directories.
- Built on
findcommand for reliability and speed. - Examples:
search myfile # Search in current directory search "*.json" # Find all JSON files search config.js ./src # Search in specific directory search "*.conf" /etc # Search configuration files
-
Version display (
mlh -v)- Check your MyLinuxHelper version with
mlh -vormlh --version. - Version info also shown in
mlh --help. - Current version: v1.2.0
- Example:
$ mlh -v MyLinuxHelper v1.2.0
- Check your MyLinuxHelper version with
🔧 Improvements
-
Enhanced interactive menu
- Added
searchcommand to themlhinteractive menu (option 2). - Menu now shows 6 commands instead of 5.
- Better organization with search placed prominently.
- Added
-
Updated help documentation
search --help: Comprehensive examples for file searching.- All search patterns and use cases documented.
-
Consistent command naming
- Fixed example in
setup.sh:mlh docker in asd→mlh docker in mycontainer. - More intuitive examples throughout documentation.
- Fixed example in
📦 New Files
plugins/search.sh- Fast file search using find command
📝 Updated Files
plugins/mlh.sh- Added version display and updated interactive menusetup.sh- Registeredsearchcommand and updated examplesREADME.md- Addedsearchcommand documentation and version info
🚀 Installation
Install or upgrade to v1.2:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"Or if you already have it cloned:
cd MyLinuxHelper
git pull origin main
./setup.sh💡 Usage Examples
Search for files:
search myfile # Find files by name
search "*.json" # Find all JSON files recursively
search nginx.conf /etc # Search in a specific directory
search "test*" ./src # Find test files in src directoryCheck version:
mlh -v # Short form
mlh --version # Long form🎯 What's Next
Planned for future releases:
- Content search within files (
grepintegration) - Search result filtering and sorting options
- More
mlhcategories (git, network, system)
Full Changelog: https://github.com/melihcelenk/MyLinuxHelper/compare/v1.1.0...v1.2.0
v1.1 – MLH Interactive Menu & Docker Container Shortcuts
🎯 MyLinuxHelper v1.1
This release introduces an interactive command menu system and smart Docker container management, making MyLinuxHelper even more user-friendly and powerful.
✨ New Features
-
Interactive menu system (
mlh)- Run
mlhwithout arguments to browse all available commands interactively. - Select commands by number to view detailed help and examples.
- Dynamic help loading from each command's
--helpimplementation. - Example menu:
MyLinuxHelper - Available Commands =================================== 1. linux <name> - Create and manage Linux containers 2. i <package> - Install packages (auto-detects package manager) 3. isjsonvalid <file.json> - Validate JSON files 4. ll [path] - Enhanced directory listing (ls -la) 5. mlh docker in <pattern> - Enter running Docker container Select [1-5, q]:
- Run
-
Smart Docker container access (
mlh docker in)- Enter running containers by name pattern with
mlh docker in <pattern>. - Single match: Automatically enters the container.
- Multiple matches: Displays an interactive selection menu with container details.
- Example with multiple matches:
$ mlh docker in mycontainer Multiple containers found matching 'mycontainer': 1. mycontainer-web (nginx:latest | Up 2 hours) 2. mycontainer-api (node:18 | Up 2 hours) 3. mycontainer-db (postgres:14 | Up 2 hours) Select container [1-3]: 1 Entering container: mycontainer-web
- Case-insensitive search for easier container discovery.
- Enter running containers by name pattern with
🔧 Improvements
-
Enhanced help documentation
- All commands now include comprehensive
--helpoutput with examples. linux --help: Container creation, management, and deletion examples.i --help: Package installation with all supported package managers listed.isjsonvalid --help: JSON validation examples for single and multiple files.ll --help: Directory listing usage patterns.mlh docker --help: Interactive menu demonstration with sample output.
- All commands now include comprehensive
-
Modular architecture
- New dispatcher system (
mlh.sh) for organizing shortcut commands. - Category-based organization (currently:
docker, easily extensible). - Each category in its own file (
mlh-docker.sh) for maintainability.
- New dispatcher system (
📦 New Files
plugins/mlh.sh- Main dispatcher for MyLinuxHelper shortcut commandsplugins/mlh-docker.sh- Docker-specific shortcuts and utilities
📝 Updated Files
plugins/ll.sh- Enhanced help with detailed examplesplugins/isjsonvalid.sh- Enhanced help with validation examplesinstall.sh- Improved help showing all supported package managerssetup.sh- Registeredmlhcommand and updated examplesREADME.md- Comprehensive documentation for all features
🚀 Installation
Install or upgrade to v1.1:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)" \
|| bash -c "$(wget -qO- https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
Or if you already have it cloned:
cd MyLinuxHelper
git pull origin main
./setup.shv1.0 – Core Shell Utilities & Docker Integration
🚀 MyLinuxHelper v1.0
This is the first public release of MyLinuxHelper, a lightweight shell toolkit that brings quality-of-life improvements to Linux and WSL environments.
✨ Included Features
-
Setup system (
setup.sh)- Automatically registers helper scripts into your PATH.
- No need for manual chmod or alias configuration.
-
Package installer command (
i)- Detects your package manager automatically (
apt,dnf,yum,zypper,apk,pacman). - Supports safe installation across distributions.
- Detects your package manager automatically (
-
JSON validation (
isjsonvalid)- Quickly validates JSON files with
jq. - Returns
Yes,No, or detailed error messages.
- Quickly validates JSON files with
-
Directory listing (
ll)- Shortcut for
ls -lawith consistent formatting.
- Shortcut for
-
Ephemeral Docker environments (
linux)- Create quick disposable Linux containers using:
linux mycontainer
- Supports:
-t,--tmp: Temporary container (auto-deletes on exit)-p,--permanent: Persistent container-s,--stop: Stop running container-d,--delete: Stop + delete container
- Displays an interactive menu if Docker is not installed:
⚠️ This command requires Docker. 1. Install Docker and run (i docker.io) 2. Install Docker only 3. Exit
- Create quick disposable Linux containers using:
🧪 Tested Environments
- Ubuntu 22.04 / 24.04 (local & WSL2)
- Killercoda Ubuntu 24.04 Playground (no Docker preinstalled)
- Google Cloud Shell (Docker restricted)
🔮 Upcoming Features
- Interactive menu system for command selection
- Auto-update mechanism
- Optional plugin manager
📄 License
Licensed under the MIT License — free for all personal and commercial use, with attribution.
💡 Tip: You can bootstrap any Linux machine instantly using:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/melihcelenk/MyLinuxHelper/main/get-mlh.sh)"
