Releases: podlLev/shell-java
Release list
v1.0.0 — First Stable Release
First stable release of shell-java — a custom POSIX-style shell implementation in Java.
What's New in v1.0.0
alias— set, list and expand command aliasesunalias— remove aliases with-aflag to clear all- Recursive alias expansion with self-reference protection
- Alias names complete via Tab alongside builtins and PATH binaries
- Unit tests for core components (
Tokenizer,PathResolver,HistoryManager,JobManager,AliasManager,Environment,OutputWriter,CommandRegistry) - README with features, usage examples, architecture and release history
- MIT license
Full Feature Set
- Builtin commands:
echo,pwd,cd,ls,mkdir,rmdir,touch,cat,type,exit,history,fc,clear,alias,unalias,declare,export,unset,jobs,complete - I/O redirection:
>,>>,2>,2>> - Pipelines:
cmd1 | cmd2 | cmd3 - Background execution:
command & - Variable expansion:
$VAR,${VAR},$?,$$,$! - History expansion:
!!,!n,!prefix - Tab completion: builtins, PATH executables, files, directories, aliases
- Persistent command history via
~/.shell_java_history - Job control: background execution and
jobsbuiltin - Quote handling: single quotes, double quotes, backslash escaping
Changes
See [#9] for full details.
v0.7.0 — Pipes and Variable Expansion
Seventh milestone release adding pipeline execution and variable expansion.
What's New
|— pipe output of one command into input of anothercmd1 | cmd2 | cmd3— multi-stage pipelines$VAR/${VAR}— variable expansion$?— last command exit code$$— current shell PID$!— last background job PIDVAR=value— variable assignment syntaxdeclare— set and list variablesexport— export variables to environmentunset— remove variables
Changes
See [#8] for full details.
Notes
Planned for v1.0.0: alias/unalias, unit tests for core components, and README update — marking the first stable release.
v0.6.0 — Command History
Sixth milestone release adding full command history support.
What's New
- Persistent history saved to
~/.shell_java_historyacross sessions HISTFILE— custom history file locationHISTSIZE— limit number of stored entries (default 1000)HISTCONTROL—ignoredups,ignorespace,erasedups,ignorebothhistorybuiltin with-r,-w,-a,-cflags!!— repeat last command!n— run command by number!prefix— run last command starting with prefixfcbuiltin with-lflag for listing and rerun by numberclearbuiltin to clear terminal screen
Changes
See [#7] for full details.
Notes
Planned for v0.7.0: pipes (|) and variable expansion ($VAR).
v0.5.0 — Job Control
Fifth milestone release adding background job execution and job management.
What's New
&operator — run commands in background (ping -n 10 127.0.0.1 &)- Background processes launch immediately, printing
[1] <pid> jobs— list background jobs with status and+/-markersDonejobs appear once on nextjobscall then are removed- Job numbers reset when all jobs are cleared
Changes
See [#6] for full details.
Notes
Planned for v0.6.0: command history (history builtin, persistent history file, Up/Down arrow navigation).
v0.4.0 — Tab Completion
Fourth milestone release adding full tab completion support via JLine3.
What's New
- Tab completes builtin command names
- Tab completes PATH executables (Windows-aware, strips .exe/.bat extensions)
- Tab completes file and directory paths for arguments
- Tab cycles through candidates with repeated presses
complete -C <script> <command>— register custom completion scriptcomplete -p <command>— print registered completion speccomplete -r <command>— remove registered completion spec- Registered scripts run on Tab with COMP_LINE/COMP_POINT env vars
Changes
See [#5] for full details.
Notes
Planned for v0.5.0: job control.
v0.3.0 — I/O Redirection
Third milestone release adding full I/O redirection support for both builtin and external commands.
What's New
>— redirect stdout to file (overwrite)>>— redirect stdout to file (append)2>— redirect stderr to file (overwrite)2>>— redirect stderr to file (append)- All builtins and external commands respect redirection
ParseResultconverted to record for cleaner code
Notes
Planned for v0.4.0: tab autocomplete via JLine3.
v0.2.0 — File operations and shell quoting
Second milestone release adding file and directory operation builtins and full POSIX-compliant shell quoting.
What's New
File & Directory Operations (#2)
ls— list directory contents, sorted alphabeticallymkdir— create directories including intermediate parentsrmdir— remove empty directoriestouch— create empty files or update last-modified timestampcat— display file contentsBuiltinFactoryenum for centralized builtin registration
Shell Quoting (#3)
- Single quotes — all characters preserved literally
- Double quotes — literal value except
\\,\",$, and` - Backslash outside quotes — escapes next character
- Backslash inside double quotes — recognized sequences resolved, unrecognized sequences preserve backslash literally
- Empty string preservation —
echo ""produces empty string token - Unterminated quote detection — clean error message, shell continues
Notes
Planned for v0.3.0: I/O redirection (>, >>, <).
v0.1.0 — Initial shell with builtins and external command execution
First milestone release of a custom Java shell implementation supporting an interactive REPL, builtin commands, and execution of external programs via PATH resolution.
Features
- Interactive REPL loop for reading and dispatching commands
- Builtin commands:
exitechopwdcdtype— identifies whether a command is a builtin or an external executable
- PATH-based resolution and execution of external programs, with
PATHEXT-aware extension matching on Windows - Graceful handling of unrecognized/invalid commands
Notes
This is an early-stage release focused on core shell mechanics. Planned for
future versions: quoting/escaping, I/O redirection, pipes, and command history.