TekSH is a small project that would like to grow bigger. Its aim is to implement a shell and add functionality. You are welcome to join us !
git clone https://github.com/SizzleUnrlsd/TekSH
cd Teksh && make
./teksh
./teksh --version
████████╗███████╗██╗ ██╗███████╗██╗ ██╗
╚══██╔══╝██╔════╝██║ ██╔╝██╔════╝██║ ██║
██║ █████╗ █████╔╝ ███████╗███████║
██║ ██╔══╝ ██╔═██╗ ╚════██║██╔══██║
██║ ███████╗██║ ██╗███████║██║ ██║
╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1.83.9
•[/home/TekSH]{ main } pwd
•[/home]{ main } ls ; cd ~
•[/home/TekSH]{ main } cd -
•[/home/TekSH]{ main } touch toto ; ls -alt > toto ; cat toto
•[/home/TekSH]{ main } ls | cat | cat | cat > toto
•[/home/TekSH]{ main } turtle
- [Builtins]
•[/home/TekSH]{ main } alias l ls -alt
•[/home/TekSH]{ main } cd
•[/home/TekSH]{ main } echo
•[/home/TekSH]{ main } env
•[/home/TekSH]{ main } exit
•[/home/TekSH]{ main } set
•[/home/TekSH]{ main } setenv
•[/home/TekSH]{ main } unset
•[/home/TekSH]{ main } unsetenv
•[/home/TekSH]{ main } history
- [Plugins]
You can also create your own orders with the plugins. Use the turtle command:
•[/home] turtle
_____ ____
/ \ | o |
| |/ ___\|
|_________/
|_| | |_| |
This command was added to the code quite simply. You can therefore develop your software and integrate it into the shell in this section:
Shell
├── plugins
│ └── add_ons
│ ├── loader.c
│ ├── Makefile
│ └── plugins
│ ├── plugin_display.c
│ └── plugin_turtle.c
The language supported is C. C++ and Python will follow soon.
When a new version of teksh is available, this message appears:
████████╗███████╗██╗ ██╗███████╗██╗ ██╗
╚══██╔══╝██╔════╝██║ ██╔╝██╔════╝██║ ██║
██║ █████╗ █████╔╝ ███████╗███████║
██║ ██╔══╝ ██╔═██╗ ╚════██║██╔══██║
██║ ███████╗██║ ██╗███████║██║ ██║
╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
You're not up to date,
Update to the latest version? Y / n
$>
You will then be prompted to update the repository. A new update system will be coming soon.
- [Fedora]
- [Debian]
- [Archlinux]
- [Raspeberry Pi OS (Test in development)]
Tests are carried out for each distribution. Run the tests with the following command:
make tests_build
For verbosity:
make tests_build_verbose
Other distributions will be tested soon !
- [x86_64]
- [ARM]
Integration tests on different architectures are coming soon.
Teksh is compiled with gcc. You can find the compilation flags in the following folder:
Shell
├── flag_makefile
│ ├── cflags.txt
│ ├── ldlibs.txt
│ ├── memory_flags.txt
│ └── nodeadcode.txt
By default, the shell catches errors linked to SIGSEGV. You can disable this mode by recompiling with :
make debug
Internal shell errors that are caught are stored in an 'error_prompt_cmd' file.
Shell
├── mini_dump
│ └── error_promt_cmd
You can help by sharing this file in case of a bug.
- Addition of a new update system
- Support for other distribution
- Addition of scripting functions
- Integration of C++ and Python for plugins
- Patch the 'echo' command to support advanced options and special character escapes
- Integration of different themes in the shell to customise appearance and style
- Improved memory utilisation
- Advanced input/output management
- Add architecture tests.
- Improving tests and Github Action.
- File descriptor management
Note : This roadmap is subject to change and will be updated as the project evolves.
1.3.4
- Add : job control
- fix : multiple-pipe
- Fix : Output management outside tty
- Improve : Improved update system
1.5.5
- Fix : Improved cleaning after each fork
- Improve : improved builtin history
- Impairment : depreciation of wildcard and builtin history
1.7.8
- Fix : SIGINT signal with prompt management
- Feat : C++ code available in plugins
- Feat : control management + Z (not yet finished)
- Improve : improve plugins by adding command line arguments
- Refactor : exclusion of certain libraries when they are not needed
1.80.9
- Feat : autocomplete improvement, with git, docker (not finished), make
- Style
1.82.8
- Improve : Improved memory allocator management : implementing garbage collector.
- Fix : Fix memory errors due to garbage changes.
1.83.9
- Improve : Bug prevention.
- Fix : Bug stream in relation to the use of tty.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. You can contact us by e-mail :
hugo.payet@epitech.eu