Skip to content

[FEATURE] Command Aliases & Custom Commands #62

@thidaskaveesha

Description

@thidaskaveesha

Feature: Command Aliases & Custom Commands

Description

Add support for user-defined command aliases to simplify repetitive tasks and create shortcuts for complex command sequences.

Motivation

Users often execute the same commands repeatedly or need to chain multiple commands together. Command aliases would:

  • Reduce typing for frequently used commands
  • Allow custom shortcuts (e.g., ll for dir /w)
  • Support command chaining (e.g., update = cd projects && dir)
  • Improve productivity and user experience

Proposed Implementation

Core Features

  1. Create Alias: alias name="command"

    • Example: alias ll="dir /w"
    • Example: alias docs="cd C:\Users\Documents"
  2. List Aliases: alias (with no arguments)

    • Display all registered aliases
  3. Remove Alias: unalias name

    • Example: unalias ll
  4. Persistent Storage: Save aliases to .mycmd_aliases file

    • Load aliases on shell startup
    • Auto-save when aliases are modified

Technical Requirements

  • Create AliasCommand.java for managing aliases
  • Create UnaliasCommand.java for removing aliases
  • Create AliasManager.java utility class for alias operations
  • Add alias resolution in main command execution loop
  • Implement file I/O for persistent storage
  • Add alias support to ShellContext.java
  • Update HelpCommand.java to include alias documentation

Acceptance Criteria

  • Users can create aliases with alias command
  • Aliases persist across shell sessions
  • Aliases can be listed with alias command
  • Aliases can be removed with unalias command
  • Circular alias references are prevented
  • Error handling for invalid alias names
  • Help documentation is updated

Example Usage

MyCMD>alias ll="dir /w"
Alias created: ll="dir /w"

MyCMD>ll
[executes dir /w command]

MyCMD>alias
ll="dir /w"
docs="cd C:\Users\Documents"

MyCMD>unalias ll
Alias removed: ll

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions