Custom C-Shell

  • Skills: Operating Systems · C (Programming Language) · Unix · Linux
  • Github URL: Project Link

Developed a feature-rich Unix-like shell tailored for enhanced command-line interaction. This shell combines standard functionalities with innovative features to improve usability, process management, and user experience.

Key Features:
✅ Command Execution: Supports built-in commands, aliases, custom functions, and piping.
✅ Process Management: Seamlessly manages background and foreground processes with commands like bg, fg, and activities.
✅ Custom Commands: Includes unique utilities like hop (directory navigation), reveal (enhanced file listing), seek (custom search), and iman (fetching man pages online).
✅ I/O Redirection: Handles complex scenarios with <, >, and >> operators.
✅ Color-Coded Output: Uses intuitive ANSI escape sequences to colorize errors, directories, executables, and more for better readability.
✅ Logging: Maintains a command history, supporting re-execution and log management.
✅ Signal Handling: Robust handling of signals like SIGINT, SIGTSTP, and SIGQUIT for smooth user control.
Technical Highlights:
🔹 Designed modular components with separate files for color management, process control, command execution, and more.
🔹 Built a linked list-based process tracker for real-time state management and sorting.
🔹 Integrated custom configuration through .myshrc to load user-defined aliases and functions.
🔹 Implemented networking capabilities to fetch man pages from online resources (iman).
🔹 Optimized command parsing to handle multiple commands, background execution, and advanced redirection.
Outcomes:
📈 Improved user experience by combining traditional shell capabilities with custom innovations.
⚙️ Delivered a maintainable and extensible codebase for future enhancements.
Skills Demonstrated:
💡 Programming: C/C++ for systems-level development.
💡 Unix/Linux: Deep understanding of POSIX systems, process control, and signal handling.
💡 Software Design: Modular and scalable architecture.
💡 Networking: Socket programming for HTTP-based utilities.