{"id":22894809,"url":"https://github.com/mathusanm6/job-control-shell-emulator","last_synced_at":"2026-04-02T18:52:07.008Z","repository":{"id":210529919,"uuid":"725167925","full_name":"mathusanm6/Job-Control-Shell-Emulator","owner":"mathusanm6","description":"A compact, C-developed shell emulator with advanced job control and system call integration, optimised for Linux environments.","archived":false,"fork":false,"pushed_at":"2024-06-20T09:16:08.000Z","size":2237,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T22:41:25.311Z","etag":null,"topics":["bash","c","job-control","linux","low-level-programming","shell","shell-emulator"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mathusanm6.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-29T15:21:16.000Z","updated_at":"2024-06-20T09:16:11.000Z","dependencies_parsed_at":"2023-12-03T13:29:22.738Z","dependency_job_id":"2c6b4f0e-fddc-4a9d-9f86-cdb23523a04b","html_url":"https://github.com/mathusanm6/Job-Control-Shell-Emulator","commit_stats":null,"previous_names":["mathusanme/job-control-shell-emulator","mathusanm6/job-control-shell-emulator"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mathusanm6/Job-Control-Shell-Emulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathusanm6%2FJob-Control-Shell-Emulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathusanm6%2FJob-Control-Shell-Emulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathusanm6%2FJob-Control-Shell-Emulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathusanm6%2FJob-Control-Shell-Emulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mathusanm6","download_url":"https://codeload.github.com/mathusanm6/Job-Control-Shell-Emulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathusanm6%2FJob-Control-Shell-Emulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272443960,"owners_count":24936049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","c","job-control","linux","low-level-programming","shell","shell-emulator"],"created_at":"2024-12-13T23:19:54.850Z","updated_at":"2025-12-30T21:35:49.065Z","avatar_url":"https://github.com/mathusanm6.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Job Control Shell Emulator\n[![Job-Control-Shell-Emulator](https://github.com/mathusanMe/Job-Control-Shell-Emulator/actions/workflows/main.yml/badge.svg)](https://github.com/mathusanMe/Job-Control-Shell-Emulator/actions/workflows/main.yml)\n\nAs part of our **Operating Systems course**, our team has ambitiously crafted an advanced shell emulator. This project focuses on sophisticated job control and system call integration, specifically tailored for Linux environments.\n\nOur team, consisting of **three dedicated members**, is utilizing the C programming language for development. We leverage the robustness of the [GNU Compiler Collection (GCC)](https://gcc.gnu.org/) and the efficiency of the [GNU Make](https://www.gnu.org/software/make/) build automation tool. To ensure the reliability and stability of our shell emulator, we are also employing the [Valgrind](https://valgrind.org/) and [GNU Debugger](https://www.gnu.org/software/gdb/) tool for meticulous memory debugging. An integral part of our development process is the continuous integration (CI) pipeline, hosted and managed via GitHub Actions.\n\n## Table of Contents\n1. [Overview](#overview)\n2. [Authors](AUTHORS.md)\n3. [Project Architecture](ARCHITECTURE.md)\n4. [Visual Previews](#visual-previews)\n5. [Getting Started](#getting-started)\n6. [Usage Instructions](#usage-instructions)\n7. [Testing](#testing)\n8. [Debugging](#debugging)\n\n## Overview\n\nThis project presents a sophisticated shell emulator, meticulously crafted in C for Linux systems. It's tailored for academic purposes, showcasing robust features like advanced job control and seamless system call integration.\n\n### Key Commands and Functionalities\n\n#### Essential Commands\n- **Navigation**: Change directories using `cd`.\n- **Directory Display**: Show current directory with `pwd`.\n- **Exiting the Shell**: Use `exit` to terminate the shell session.\n- **Status of Last Command**: Query using `?`.\n- **External Command Execution**: Seamlessly run external commands.\n- **I/O Redirections**: Comprehensive redirection capabilities including `\u003c`, `\u003e`, `\u003e\u003e`, `\u003e|`, `2\u003e`, `2\u003e\u003e`, `2\u003e|`.\n- **Job Management**: List jobs with `jobs`, support for background execution using `\u0026`, and job termination with `kill`.\n\n#### Advanced Features\n- **Command History**: Efficient logging of command history for easy recall.\n- **Job Control**: Detailed management of foreground and background processes.\n- **Input/Output Redirection**: Redirect standard input/output with ease.\n- **Piping**: Facilitates the chaining of commands through piping.\n- **Signal Handling**: Robust management of system signals for process control.\n- **Enhanced Job Control Options**: Introducing additional controls for job management.\n- **Extended Command Set**: Inclusion of commands like `fg` (foreground) and `bg` (background).\n- **Advanced Piping Support**: Further development of piping functionalities.\n- **Redirection Expansion**: Broader options for input/output redirections, especially in conjunction with piping.\n\n## Visual Previews\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/job-control-shell.png\" alt=\"Job Control Shell\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eJob Control Shell\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/basic-prompt-view.jpeg\" alt=\"Basic Prompt View\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eBasic Prompt View\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/listing-files.jpeg\" alt=\"Listing Files\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eListing Files\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/date.jpeg\" alt=\"Executing an External Command: Date\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eExecuting an External Command: Date\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/redirections.jpeg\" alt=\"I/O Redirections\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eI/O Redirections\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/jobs.jpeg\" alt=\"Jobs\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eJobs\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/complex-substitution.png\" alt=\"Complex Substitution With Pipes\"\u003e\n  \u003cbr\u003e\n  \u003csub\u003eComplex Substitution With Pipes\u003c/sub\u003e\n\u003c/p\u003e\n\n## Getting Started\n\n### System Requirements\n- **Operating System**: Linux-based or use Docker (Dockerfile provided).\n- **Required Tools \u0026 Packages**: \n  - [GNU Compiler Collection (GCC)](https://gcc.gnu.org/) \n  - [GNU Make](https://www.gnu.org/software/make/)\n  - [GNU Debugger (GDB)](https://www.gnu.org/software/gdb/)\n  - [Valgrind](https://valgrind.org/)\n  - [Git](https://git-scm.com/)\n  - [Clang-Format](https://clang.llvm.org/docs/ClangFormat.html)\n  - [libreadline-dev](https://packages.debian.org/sid/libreadline-dev)\n\n### Installation Guide\n1. **Clone the Repository**: First, clone the repository to your local machine.\n2. **Compilation**: Open your terminal and navigate to the cloned repository's directory. Compile the project by executing:\n   ```bash\n   make all\n   ```\n\n## Usage Instructions\n- **Running the Shell Emulator**: To start the shell, enter the following command in your terminal:\n  ```bash\n  make run\n  ```\n- **Cleaning the Project**: To remove all compiled files, use:\n  ```bash\n  make clean\n  ```\n\n## Testing\n- **Running Tests**: For testing, execute:\n  ```bash\n  make test\n  ```\n\nThis will run the provided test suite to ensure everything is functioning correctly.\n\n## Debugging\n- **GNU Debugger**: To debug the shell emulator using GDB, execute:\n  ```bash\n  make gdb\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathusanm6%2Fjob-control-shell-emulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathusanm6%2Fjob-control-shell-emulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathusanm6%2Fjob-control-shell-emulator/lists"}