Git Product home page Git Product logo

job-control-shell-emulator's Introduction

Job Control Shell Emulator

Job-Control-Shell-Emulator

As part of our Operating Systems course, our team is ambitiously crafting an advanced shell emulator. This project, a work-in-progress as of December 2023, focuses on sophisticated job control and system call integration, specifically tailored for Linux environments.

Our team, consisting of three dedicated members, is utilizing the C programming language for development. We leverage the robustness of the GNU Compiler Collection (GCC) and the efficiency of the GNU Make build automation tool. To ensure the reliability and stability of our shell emulator, we are also employing the Valgrind and GNU Debugger tool for meticulous memory debugging. An integral part of our development process is the continuous integration (CI) pipeline, hosted and managed via GitHub Actions.

Table of Contents

  1. Overview
  2. Authors
  3. Project Architecture
  4. Visual Previews
  5. Getting Started
  6. Usage Instructions
  7. Testing
  8. Debugging

Overview

This 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.

Key Commands and Functionalities

Essential Commands

  • Navigation: Change directories using cd.
  • Directory Display: Show current directory with pwd.
  • Exiting the Shell: Use exit to terminate the shell session.
  • Status of Last Command: Query using ?.
  • External Command Execution: Seamlessly run external commands.
  • I/O Redirections: Comprehensive redirection capabilities including <, >, >>, >|, 2>, 2>>, 2>|.
  • Job Management: List jobs with jobs, support for background execution using &, and job termination with kill.

Advanced Features

  • Command History: Efficient logging of command history for easy recall.
  • Job Control: Detailed management of foreground and background processes.
  • Input/Output Redirection: Redirect standard input/output with ease.
  • Piping: Facilitates the chaining of commands through piping.
  • Signal Handling: Robust management of system signals for process control.
  • Enhanced Job Control Options: Introducing additional controls for job management.
  • Extended Command Set: Inclusion of commands like fg (foreground) and bg (background).
  • Advanced Piping Support: Further development of piping functionalities.
  • Redirection Expansion: Broader options for input/output redirections, especially in conjunction with piping.

Visual Previews

Job Control Shell
Job Control Shell


Basic Prompt View
Basic Prompt View


Listing Files
Listing Files


Executing an External Command: Date
Executing an External Command: Date


I/O Redirections
I/O Redirections


Jobs
Jobs


Complex Substitution With Pipes
Complex Substitution With Pipes

Getting Started

System Requirements

Installation Guide

  1. Clone the Repository: First, clone the repository to your local machine.
  2. Compilation: Open your terminal and navigate to the cloned repository's directory. Compile the project by executing:
    make all

Usage Instructions

  • Running the Shell Emulator: To start the shell, enter the following command in your terminal:
    make run
  • Cleaning the Project: To remove all compiled files, use:
    make clean

Testing

  • Running Tests: For testing, execute:
    make test

This will run the provided test suite to ensure everything is functioning correctly.

Debugging

  • GNU Debugger: To debug the shell emulator using GDB, execute:
    make gdb

job-control-shell-emulator's People

Contributors

mathusanm6 avatar nathanguetteville avatar gabinddl avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.