rsh 0.11.0
rsh, or Rsh for short, is a new shell that takes a modern, structured approach to your commandline. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful commandline pipelines.
We're excited to release the 0.11.0 release of Rsh. This release continues to push us forward with new commands, improved engine internals, bugfixes, and more.
Where to get it
Rsh 0.11.0 is available as
pre-built binaries
or from
crates.io. If you have Rust installed you can install it using
cargo install rsh.
If you want more goodies, you can install
cargo install rsh --features=stable.
As part of this release, we also publish a set of plugins you
can install and use with Rsh. To install, use
cargo install rsh_plugin_<plugin name>.
What's new
Compound shorthand flags (Amanita-muscaria)
Over the last few releases, we've seen the ability for flags
to have shorthand version. You no longer needed to use
--full if the flag supported the shorter
-f version.
In this release, we've taken it one step further and allowed
you to combine multiple shorthand flags into one group. For
example, ls --full --short-names can now be written
as ls -fs
Improvements and cleanup for ls (Bocom, quebin31,
lincis, equal-l2)
A lot of improvements went into ls for this
release. The updated ls command is now more
forgiving of coming across directories the user can't access
and will simply show what it can and continue, it can work with
named pipes on systems with them, it shows a more reasonable
display for zero-length files, and the internals of
ls have been cleaned a bit to make way for future
improvements.
External command output no longer blocks (thegedge)
Continuing our series of improvements to working with external commands, we have a few updates in this release. The first of these updates is an improvement to how content streams out of externals. With 0.11.0, this content will no longer block, which allows content to flow more easily between external and internal commands. As a result, some corner cases that came up with a series of commands in a pipeline not working because one blocks no longer is an issue.
Allow externals to output texts or binary (jonathandturner, thegedge)
The second update to externals now allows externals to freely output either text or strings, and for this content to be read in a block at a time into Rsh. This allows externals to stream any content they wish, and for this stream to continue for as long as needed.
New shuffle command (hirschenberger)
With 0.11.0, we introduce a new shuffle command
that will let you shuffle the rows of a table. This allows you
to choose to not always process data the same way, or to search
through data more stochastically.
❯ help commands | shuffle
─────┬──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────
# │ name │ description
─────┼──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────
0 │ textview │ Autoview of text data.
1 │ pwd │ Output the current working directory.
2 │ sort-by │ Sort by the given columns.
3 │ tree │ View the contents of the pipeline as a tree.
4 │ du │ Find disk usage sizes of specified items
5 │ table │ View the contents of the pipeline as a table.
New column rename command (andrasio)
You can also now use the new rename command to
rename a column to a new name.
❯ help commands | rename action description
─────┬──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────
# │ action │ description
─────┼──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────
0 │ append │ Append the given row to the table
1 │ autoview │ View the contents of the pipeline as a table or list.
2 │ average │ Compute the average of a column of numerical values.
3 │ binaryview │ Autoview of binary data.
Merge the env command into the
$rsh variable (jonathandturner)
The $rsh variable has grown to include values that
were previously part of env, effectively merging
the two into the $rsh variable. This allows you to
easily find out where the history file is stored, where config
is stored, and where a good temp directory are all in one place:
❯ echo $rsh.home-dir $rsh.temp-dir $rsh.config-path $rsh.history-path
───┬──────────────────────────────────────────────────────────────────────
# │ <value>
───┼──────────────────────────────────────────────────────────────────────
0 │ C:\Users\joturner
1 │ C:\Users\joturner\AppData\Local\Temp\
2 │ C:\Users\joturner\AppData\Roaming\rsh shell developers\rsh\config.toml
3 │ C:\Users\joturner\AppData\Local\rsh shell developers\rsh\history.txt
───┴──────────────────────────────────────────────────────────────────────
The format command can now use column paths
(andrasio)
The format command is a handy way of putting column
data into a string for displaying, but it previously had the
restriction that you couldn't use it to print out
information that was deeper in the table. With 0.11.0, we've
removed that restriction.
❯ open Cargo.toml | format "The edition is {package.edition}"
The edition is 2018
Allow help to be printed with -h in more cases
(rabisg0)
You should now be able to use -h to reach the help
of a command in more cases than was previously allowed, making
it a universal way to get to the help text.
Improved documentation (coolshaurya, Amanita-muscaria, notryanb)
Documentation for du, uniq,
debug, and plugin docs have all been improved in
this release.
Looking ahead
We're excited to continue to polish how Rsh works to make it more reliable and more efficient. Of course, we're also working on adding new much-requested features like aliases in upcoming releases. If you'd like to help with aliases or with Rsh in general -- even if you want to help with a part of the project outside of just coding -- we'd love to have you. Come visit us on github or the discord.