<commit_before># rshell
Written by <NAME> for the University of California - Riverside CS100 class (Fall 2015).

## Description of rshell
The program consists in a shell called **rshell** and written in C++. This shell must be able to perform the following steps:

1. Print a command prompt (like $).

2. Read in a command (which has the form `cmd = executable [ argumentList ] [ connector cmd ]`) on one line.

`&&`, `||` and `;` are the three connectors that can be used to link commands between each other on the same command line. They work as following:
- **;**: The next command is always executed.
- **&&**: The next command is executed only if the current one succeeds.
- **||**: The next command is executed only if the current one fails.

## Features
- In order to distinguish the normal shell from the **rshell**, `€` will be used instead of `$` as a command prompt. 
- **rshell** displays the username and the host name using the form `[username@hostname]`.
- # can be used to comment a part of command. Everything located after # will be ignored.
- To exit **rshell**, type `exit`.
- An error message is displayed whenever a command fails.
- The `test`command can be used either with the brackets `[]` or the `test` instruction and is working perfectly fine with the connectors. (However, no code has been written to handle it: the **rshell** from hw1 can handle it itself, even though `execvp` has been used) If no flag is typed by the user, **rshell** seems to add the `-e` flag by default. Nevertheless, the Test class will be implemented in order to make sure that the `-e` flag is the one used by default.<commit_msg>Updated README.md.<commit_after># rshell
Written by <NAME> for the University of California - Riverside CS100 class (Fall 2015).

## Description of rshell
The program consists in a shell called **rshell** and written in C++. This shell must be able to perform the following steps:

1. Print a command prompt (like $).

2. Read in a command (which has the form `cmd = executable [ argumentList ] [ connector cmd ]`) on one line.

`&&`, `||` and `;` are the three connectors that can be used to link commands between each other on the same command line. They work as following:
- **;**: The next command is always executed.
- **&&**: The next command is executed only if the current one succeeds.
- **||**: The next command is executed only if the current one fails.

## Features
- In order to distinguish the normal shell from the **rshell**, `€` will be used instead of `$` as a command prompt. 
- **rshell** displays the username and the host name using the form `[username@hostname]`.
- # can be used to comment a part of command. Everything located after # will be ignored.
- To exit **rshell**, type `exit`.
- An error message is displayed whenever a command fails.
- (The `test`command can be used either with the brackets `[]` or the `test` instruction and is working perfectly fine with the connectors.) ==> Need to finish testSuccess to be able to run following commands.
{'fraction_non_alphanumeric': 0.09588586595885866, 'fraction_numerical': 0.0063039150630391505, 'mean_word_length': 4.03338898163606, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2690275', 'n_tokens_mistral': 792, 'n_tokens_neox': 766, 'n_words': 469}