{"id":23642040,"url":"https://github.com/marlonpassos-git/mp-shell","last_synced_at":"2026-05-10T06:39:02.241Z","repository":{"id":269253093,"uuid":"906835973","full_name":"MarlonPassos-git/mp-shell","owner":"MarlonPassos-git","description":"A POSIX-compliant shell built as part of the Codecrafters challenge, featuring support for built-in commands, I/O redirection, and external program execution. ","archived":false,"fork":false,"pushed_at":"2024-12-23T07:24:21.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-23T07:25:16.938Z","etag":null,"topics":["codecrafters","codecrafters-shell","learning-project","posix","shell"],"latest_commit_sha":null,"homepage":"","language":"Go","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/MarlonPassos-git.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-22T03:42:33.000Z","updated_at":"2024-12-23T07:25:09.000Z","dependencies_parsed_at":"2024-12-23T07:25:17.875Z","dependency_job_id":null,"html_url":"https://github.com/MarlonPassos-git/mp-shell","commit_stats":null,"previous_names":["marlonpassos-git/mfp-shell","marlonpassos-git/mp-shell"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarlonPassos-git%2Fmp-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarlonPassos-git%2Fmp-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarlonPassos-git%2Fmp-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarlonPassos-git%2Fmp-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarlonPassos-git","download_url":"https://codeload.github.com/MarlonPassos-git/mp-shell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239579790,"owners_count":19662669,"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","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":["codecrafters","codecrafters-shell","learning-project","posix","shell"],"created_at":"2024-12-28T10:39:04.378Z","updated_at":"2025-11-10T09:30:20.511Z","avatar_url":"https://github.com/MarlonPassos-git.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MP-Shell \n[![Create Release](https://github.com/MarlonPassos-git/mp-shell/actions/workflows/release.yml/badge.svg)](https://github.com/MarlonPassos-git/mp-shell/actions/workflows/release.yml) \n[![Tag Version](https://img.shields.io/github/v/tag/MarlonPassos-git/mp-shell)](https://github.com/MarlonPassos-git/mp-shell/tags)\n\n\n## About the Project\n\nThis project implements a POSIX-compliant interactive and minimalist shell, designed to interpret shell commands, execute external programs, and provide support for various builtin commands. It also implements advanced features such as input/output redirection and support for single and double quote handling.\n\nThe goal is to create a lightweight and flexible experience while maintaining compatibility with [POSIX standards](https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html), making the shell ideal for learning and experimentation.\n\n## Installation\n\nTo install the shell, run the following command in your terminal:\n```bash\ncurl https://raw.githubusercontent.com/MarlonPassos-git/mp-shell/refs/heads/master/install.sh | bash\n```\n\n\u003e [!IMPORTANT]  \n\u003e Currently, the shell is only available for Linux systems. Support for other operating systems may be added in the future.\n\n## Usage\n\nAfter installing the shell, you can run it by typing `mp-shell` in your terminal. The shell will start in interactive mode, allowing you to enter commands and see the output.\n\n```bash\n$ mp-shell\n```\n\n## Builtin Commands\n\nBelow is the list of builtin commands implemented in the shell or planned for future implementation:\n\n| Command                 | Description                                                                                | Usage Example                      | Status |\n| ----------------------- | ------------------------------------------------------------------------------------------ | ---------------------------------- | ------ |\n| `exit`                  | Terminates the shell execution with the specified status code.                             | `exit 0`                           | ✅      |\n| `echo`                  | Prints the provided arguments to the terminal.                                             | `echo hello world`                 | ✅      |\n| `type`                  | Displays how the shell interprets a command.                                               | `type echo`                        | ✅      |\n| `pwd`                   | Prints the current working directory.                                                      | `pwd`                              | ✅      |\n| `cd`                    | Changes the current working directory.                                                     | `cd /usr/local/bin`                | ✅      |\n| Output Redirection (1\u003e) | Redirects the output of a command to a file.                                               | `echo \"Hello World\" \u003e file.txt`    | ✅      |\n| Error Redirection (2\u003e)  | Redirects error messages to a file.                                                        | `ls nonexistent 2\u003e error.txt`      | ✅      |\n| Append Output (1\u003e\u003e)     | Appends the output of a command to the end of a file.                                      | `echo \"More text\" \u003e\u003e file.txt`     | ✅      |\n| Append Error (2\u003e\u003e)      | Appends error messages to the end of a file.                                               | `ls nonexistent 2\u003e\u003e error.txt`     | ✅      |\n| `:`                     | A null command that does nothing but expand arguments and perform redirections.            | `: [arguments]`                    | 🛠️      |\n| `.`                     | Reads and executes commands from a specified file in the current shell environment.        | `. filename [arguments]`           | 🛠️      |\n| `eval`                  | Concatenates arguments into a single command, then executes it.                            | `eval [arguments]`                 | ❌      |\n| `exec`                  | Replaces the shell with the specified command without creating a new process.              | `exec [-cl] [-a name] [command]`   | ❌      |\n\n\u003e [!NOTE]  \n\u003e Note: There are other commands considered builtins in Bash, as listed in the [Bash Builtins Manual](https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html). However, since this is primarily a learning project, these are unlikely to be implemented.\n\n## Advanced Features\n\n- **Support for single and double quotes:** Preserves literal values or interprets special characters, respectively.\n- **External program execution:** Locates and executes external programs using the PATH.\n\n#### Examples:\n\n```bash\n$ echo \"Text with 'single quotes' and \\\"double quotes\\\"\"\nText with 'single quotes' and \"double quotes\"\n```\n\n## Codecrafters Challenge\n\nThis shell project is part of the [Codecrafters Shell Course](https://app.codecrafters.io/courses/shell/). The course provides a guided journey to build your own shell from scratch, offering an in-depth understanding of shell functionalities and POSIX compliance.\n\nIf you're interested in taking the course, you can use my referral link to join: [https://app.codecrafters.io/r/witty-leopard-861910](https://app.codecrafters.io/r/witty-leopard-861910).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarlonpassos-git%2Fmp-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarlonpassos-git%2Fmp-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarlonpassos-git%2Fmp-shell/lists"}