Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more.

Overview

Yori: CMD reimagined

Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more. It includes a handful of native Win32 tools that implement commonly needed tasks which can be used with any shell.

Build

Compiling currently requires Visual C++, version 2 or newer. To compile, run NMAKE. Once compiled, YMAKE.EXE allows for more efficient subsequent compilation, using all cores in the machine.

License

Yori is available under the MIT license.

System requirements

For the core shell and components, NT 3.1 or newer for 32 bit; XP 64 or newer for 64 bit. Individual features may require newer versions. Note the ysetup.exe installer works best with NT 4 and IE 4 or newer.

To install on older versions:

Release Considerations
95, 98 or Me These releases are not supported and extensive changes would be required to execute on them.
NT 4 with IE 3 Installer cannot create shortcuts, they must be created manually
NT 4 with IE 2 Install the wintdist.exe redistributable which contains the IE 3 wininet.dll before running the installer. The installer cannot create shortcuts.
NT 3.5x Install the wint351.exe redistributable which contains the IE 3 wininet.dll before running the installer. The installer cannot create program manager groups or items.
NT 3.1 No installer exists. Files must be copies to the machine manually.
Issues
  • If ErrorLevel / Is Yori Elevated ?

    If ErrorLevel / Is Yori Elevated ?

    Hello.. I'm new to Yori.. I'm enjoying its simplicity, useful completions, and (thank you for) the aliases. But I do have some pretty basic issues:

    1. Is there a way to use ERRORLEVEL within an IF statement?..

    And:

    1. Is there a way to determine from a .ys1 script (Init file) if the current shell is running with elevation?

    I usually do this in CMD by running any command that requires elevation, which sets the ErrorLevel.. for example:

    $ net session>nul 2>&1 $ if ErrorLevel == 0 (Echo We have elevation)

    But in a Yori script (Init file) it seems neither if statements, nor the ErrorLevel can be used (conditionally) at all.. Even calling an external script .cmd for this task seems not to work.. Or is there currently a way to do it?

    fixed in master 
    opened by mdnava 20
  • YECHO and double quotes escape with CMD

    YECHO and double quotes escape with CMD

    In Yori environment all works perfectly:

    YORI> ECHO -n -- -argument1 "value 1" --> -argument1 value 1 this is not what we want but quite expected. Here we need to escape our " symbols

    YORI> ECHO -n -- -argument1 ^"value 1^" -- > -argument1 "value 1" and all is nice and flawless...

    But something weird is going on when I try to use yecho.exe with CMD: CMD> yecho.exe -n -- -argument1 "value 1" --> -argument1 value 1 Nothing special... all as expected

    CMD> yecho.exe -n -- -argument1 ^"value 1^" --> -argument1 value 1 Ok... the thing here is CMD by itself handled ^" symbols and yecho.exe recieved -argument1 "value 1" as in previous attempt and nothing suprisingly new here... so in theory we just need to add additional escape for ^ symbol:

    CMD> yecho.exe -n -- -argument1 ^^^"value 1^^^" --> -argument1 ^"value 1^" And that is completely unxpected behavior... let's even try what is not supposed to be:

    CMD> yecho.exe -n -- -argument1 ^^"value 1^^" --> -argument1 ^"value 1^^" And I have tried a lot of things to make yecho.exe work with CMD and double quotes, but nothing was successful... the only thing what's worked is such construction:

    CMD> yori.exe -nouser -c ECHO -n -- -argument1 ^^^"value 1^^^" --> -argument1 "value 1" And this is quite expected and absolutely normal...

    I understand that this is quite a headache with all that double quote "magic" in Windows and CMD specially and do not expect a quick reaction... Just want to ask: Am I missing something here? Maybe you can give an advice how to properly escape the double quotes so yecho.exe will work with CMD as it works in YORI?

    opened by aleaksunder 14
  • Use a different installer

    Use a different installer

    http://malsmith.net/download?obj=yori/latest-stable/win32/ysetup.exe

    cant be extracted with InnoExtract or 7-Zip in a meaningful way.

    It would be better to have this, or to simply offer a zip build with the executable.

    opened by ghost 11
  • "Ctrl Click Select" doesn't work under Windows Terminal

    I've jumped on the Yori train and enjoy it :) context and version:

    • I use it from within Windows Terminal (latest 0.10.781 with mouse support).
    • yori 1.21

    issue: What I cannot get to work is "ctrl click select", which works fine when yori is started from a simple CMD terminal.

    solution approaches:

    • I've set YORIQUICKEDIT=1 which don't have an effect.
    • As well I've checked issue #19 and updated ypm -u (which fixed the #19 issue, but not mine)

    request:

    • does one have a solution for this, or is this another problem with WinTerm compatiibility?
    external 
    opened by spex66 10
  • Ctrl+Arrow on the command line doesn't work under Win Terminal

    Ctrl+Arrow on the command line doesn't work under Win Terminal

    Hi, am a heavy user of skipping words on the command line via the Ctrl+left and Ctrl+right hotkeys.

    Bash/fish and cmd.exe and GUI textareas support it, although they differ slightly on the right arrow. The Unix shells go to the end of the word (rather than beginning of next) when moving to the right. Probably to be able to edit the end of the word more quickly. I don't have a strong preference here.

    Hopefully Yori could support it as well.

    opened by mixmastamyk 10
  • MOVE and ERASE do not raise ERRORLEVEL when file is locked with another process

    MOVE and ERASE do not raise ERRORLEVEL when file is locked with another process

    Hi!

    Another finding... let's create C:\temp\raiser.txt and lock it with following:

    CMD> notepad.exe > "C:\temp\raiser.txt"
    

    so this file will be locked until notepad.exe will be closed... and now try to move or erase this file:

    CMD> "ymove.exe" "C:\temp\raiser.txt" "C:\temp\deraiser.txt"
    CMD> ECHO.!ERRORLEVEL!
    0
    

    ymove.exe "C:\temp" "C:\tempNew" with locked file in C:\temp leads to the same... and almost same thing with ERASE:

    CMD> "yerase.exe" "C:\temp\raiser.txt"
    erase: delete of \\?\C:\temp\raiser.txt failed: <<here goes localized error message>>
    CMD> ECHO.!ERRORLEVEL!
    0
    

    at least error message is shown, but ERRORLEVEL becomes 0

    fixed in master 
    opened by aleaksunder 9
  • Speed of execution degrades significantly using more than 10 pipes in script

    Speed of execution degrades significantly using more than 10 pipes in script

    Hello!

    I understand everything has it's limits and not insist to get this into primary goal... this is just a remark!

    I am seeing a sharp drop in performance using decent amount of stream input and output.

    This is only for example but let's assume we have a text file with such content: replace.txt

    0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    

    So in real life we have a text file encoded with non-english ASCII symbols.

    And we need to replace all those 36 values with text and going to do so with following script with a lot of pipes: replace.ys1

    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "0" "-" | REPL -- "1" "-" | REPL -- "2" "-" | REPL -- "3" "-" | REPL -- "4" "-" | REPL -- "5" "-" | REPL -- "6" "-" | REPL -- "7" "-" | REPL -- "8" "-" | REPL -- "9" "-" | REPL -- "A" "-" | REPL -- "B" "-" | REPL -- "C" "-" | REPL -- "D" "-" | REPL -- "E" "-" | REPL -- "F" "-" | REPL -- "G" "-" | REPL -- "H" "-" | REPL -- "I" "-" | REPL -- "J" "-" | REPL -- "K" "-" | REPL -- "L" "-" | REPL -- "M" "-" | REPL -- "N" "-" | REPL -- "O" "-" | REPL -- "P" "-" | REPL -- "Q" "-" | REPL -- "R" "-" | REPL -- "S" "-" | REPL -- "T" "-" | REPL -- "U" "-" | REPL -- "V" "-" | REPL -- "W" "-" | REPL -- "X" "-" | REPL -- "Y" "-" | REPL -- "Z" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    

    All works... but: `timethis.exe yori -nouser -c YS "replace.ys1"

    Elapsed time:      0:00:11.989
    Child CPU time:    0:00:00.156
    Child kernel time: 0:00:00.156
    Child user time:   0:00:00.000
    Tree CPU time:     0:00:00.562
    Tree kernel time:  0:00:00.406
    Tree user time:    0:00:00.156
    

    12 seconds certainly not a big deal but if process comes to real text file with normal contents speed degrades drastically...

    The thing here is if we split those 36 REPL pipes into 36 different lines:

    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "0" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "1" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "2" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "3" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "4" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "5" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "6" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "7" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "8" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "9" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "A" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "B" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "C" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "D" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "E" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "F" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "G" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "H" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "I" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "J" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "K" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "L" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "M" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "N" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "O" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "P" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "Q" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "R" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "S" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "T" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "U" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "V" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "W" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "X" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "Y" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    ICONV -i ascii -e utf8 -w -- "replace.txt" | REPL -- "Z" "-" | ICONV -i utf8 -e ascii -w | SPONGE -- "replace.txt"
    

    and do that again with: `timethis.exe yori -nouser -c YS "replace.ys1"

    Elapsed time:      0:00:01.738
    Child CPU time:    0:00:00.436
    Child kernel time: 0:00:00.421
    Child user time:   0:00:00.015
    Tree CPU time:     0:00:02.281
    Tree kernel time:  0:00:01.656
    Tree user time:    0:00:00.625
    

    So despite there was 36 disk reads 72 encoding conversions and 36 disk writes it is 6 times faster than 1st variant... one problem here is we need to check an ERRORLEVEL after each of 36 lines to ensure that all was correctly.

    And by the way in real life with 30 lines in script we get speed something around 5 seconds per file and with one line in script with 30 pipes speed drops to 30 seconds per file!

    And this is not about REPL only... I've tried a lot of sequiental pipes around multipe ICONV and it seems it degrades in the same way!

    So it is basically 6 times faster everywhere I've seen, tried this with CMD YORI YORIMIN and ONEYORI... and the numbers always almost the same!

    And just for example tried this in CMD with external findstr.exe:

    CMD> echo "long long long long long long long long long long long long long long long long long long long text"  | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text" | findstr "text"
    

    So there is 128 pipes and nothing seems to degrade significantly... I am basically want to say that as I see this is not due to Windows piping mechanism!

    Or maybe you can advice how to speed things up?

    P.S. I'm so sorry to be so annoying =) I believe I am doing useful things for this project

    opened by aleaksunder 8
  • cisco amp and malwarebye detecting as malware

    cisco amp and malwarebye detecting as malware

    ysetup and the update cab are being detected as trojan by several engines, so is being blocked by my corporate anti-virus (cisco amp and malwarebyte).

    https://www.virustotal.com/gui/file/568d3e98510528d8fa1db59a0c21963933d0b7719610d623bbdad34098ad6956/detection

    opened by tmottabr 8
  • Implement Ctrl+Z and/or Ctrl+D to exit shell

    Implement Ctrl+Z and/or Ctrl+D to exit shell

    Would be nice to implement hot keys to exit the shell as POSIX shells do. Traditionally it is ^D, though Windows used ^Z+Enter instead.

    However since WSL has become more common implementing both might be a good idea. Thanks.

    opened by mixmastamyk 8
  • Ctrl-left mutates the command line

    Ctrl-left mutates the command line

    The Ctrl-Left functionality to move the cursor between words also expands environment variables and trims spaces. However, it doesn't actually re-render the command line immediately, so the mutations only show up after a subsequent editing command.

    This can lead to some confusing and undesirable behavior, as seen in this video, where I use Ctrl-Left to jump past an environment variable and then press Del to delete the first character (which should be %):

    yori

    fixed in master 
    opened by jstarks 7
  • Feature : ECHO utility to support hex output

    Feature : ECHO utility to support hex output

    Maybe I missing something but can I do hex output to file with any Yori utility?

    It will be nice to do something like this: echo -hex -- \x04\xFF > C:\temp\file.hex or hexwrite \x04\xFF > C:\temp\file.hex

    Maybe I am wrong but I think this very simple to implement, so things like described in this question can be done in Windows.

    By the way I've noticed that REPL utility is missing from main HELP command of Yori shell... it was very nice to find it by accident =)

    opened by aleaksunder 6
  • autocomplete for chinese path is weird

    autocomplete for chinese path is weird

    image For example, there exists a directory "MCNP格式转换工具" in the Desktop directory, and the PWD is Desktop. If I typed "cd MC" and press TAB to autocomplete the residual characters, the display result looks weird.

    I guess the behavior of yori is to display characters based on the same width (1 ASCII character width) but the Chinese characters occupied 2 widths.

    Wish this bug could be fixed in the next update 😄

    opened by z0ow 1
  • Reverse search through history?

    Reverse search through history?

    Hi!

    There is a high chance that I just didn't manage to find the relevant documentation/discussion, but I can't figure out if yori supports reverse search (like ctrl+r in bash or in clink). Any help is appreciated. Thanks!

    opened by flriancu 1
  • Support clink-like lua completion scripts

    Support clink-like lua completion scripts

    Clink offers the ability to customize its shell completion with lua scripts. Some of clink's own functionality, like built-in completions, are also implemented in lua. This integration is very powerful; it makes it possible to customize the built-in completion as well as add custom completion logic.

    In addition to the abilities of the lua programming language, Clink offers a parsing API that greatly simplifies the development of custom completion scripts.

    This is related to our discussion in #41: supporting lua and Clink's argument parser API is one way to address the concern about the complexity of completion scripts for non-trivial commands like git.

    Another benefit I can see is that by supporting this API, existing lua completion scripts can be used as is in yori, which may make the idea of migrating to yori much more attractive for clink users. Published collections of clink completion scripts like https://github.com/vladimir-kotikov/clink-completions would instantly add to yori's power and hopefully foster community enthusiasm and engagement, since the clink project itself appears to be abandoned.

    TBD:

    • The clink parser API does not have support for descriptions, so it may need to be extended to implement feature requests like #42
    • Clink functionality can be accessed in lua completion scripts via the clink variable. I imagine that you would want to expose a yori variable instead (but expose clink as an alias for compatibility with clink scripts)
    opened by remkop 0
  • Yori in WinGet

    Yori in WinGet

    I know there are already requests for Scoop and Chocolatey, but consider making Yori available in WinGet. This seems like a good candidate for the fledgling package management system.

    external 
    opened by rbeesley 3
Releases(v1.70)
  • v1.70(Jan 9, 2022)

    • Many changes so edit works better on Nano server, including no background colors and clipboard
    • Better support for edit detecting character encodings
    • Optional support for POSIX move and delete on recent versions of Windows 10
    • Detect console processes so Ctrl+C on a GUI process won't wedge the console
    • lsof support for dumping handles from all processes
    • ypm support for creating Terminal fragment and path updates post-install
    • ypm support for setting default shell to yori or yui
    • ystart to optionally start processes elevated
    • yshutdn on Nano server
    • ypm/ysetup on Nano server using winhttp and TUI dialog
    • ysetup command line interface with feature parity to UI
    • ysetup on MIPS
    • yhash support on NT 4-2003
    • Install program manager item on NT 3.x
    • New tool: petool for generating PE header checksums
    • Many minor tweaks and bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v1.60(Aug 30, 2021)

    • Add support in setup to integrate with Windows Terminal
    • Many enhancements in ymake to move closer to nmake compatibility
    • Escape backslashes before quotes, fixing YORICOMPLETEWITHTRAILINGSLASH behavior
    • Support for enumerating process handles in procinfo
    • Performance enhancements rendering colored text
    • Support for extracting CAB files without cabinet.dll
    • Many minor tweaks and bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v1.51(Apr 4, 2021)

  • v1.50(Apr 3, 2021)

    • Native arm64 build, detected as needed in ysetup
    • Support pasting rich text in clip
    • Support for ydbg to debug child processes
    • Performance improvements in ymake
    • Support for osver to display the edition in addition to the version
    • New tool: attrib for changing file attributes
    • New tool: dircase for modifying NTFS per-directory case sensitivity
    • New tool: envdiff for detecting differences between two environment blocks
    • New tool: slmenu for a selectable, scriptable menu
    • Many, many minor changes and enhancements
    Source code(tar.gz)
    Source code(zip)
  • v1.40(Nov 10, 2020)

    • Many redraw fixes where characters don't render correctly
    • Echo, intcmp and strcmp are true builtins to improve performance with AV products
    • Improved handling of Alt+nnn keycodes
    • Undo/redo in edit
    • Lots of new edit key shortcuts including Ctrl+A, Shift+Ctrl+Home/Shift+Ctrl+End, Ctrl+left/Ctrl+right, Ctrl+Y
    • Support searching backwards in edit
    • Allow drive selection in edit (sorry!)
    • Fix crash in timethis (thanks Robert!)
    • Fix crash in edit with negative tab width (thanks Pyroman!)
    • Fix crash in edit opening empty files (thanks Pyronman!)
    • Improvements to sleep countdown (thanks Pyroman!)
    • Support for octal and binary in expr (thanks Pyroman!)
    • Various hexdump correctness fixes
    • Ydbg support for live kernel dumps or full dumps (when kernel debugging enabled)
    • ps display parent process
    • New tool - ymake for efficient parallel compilation of nmake makefiles
    Source code(tar.gz)
    Source code(zip)
  • v1.30(Jul 18, 2020)

    • Add support for process times in ps
    • Add support for line ending conversions in iconv
    • Common Ctrl+key combinations from bash
    • Improved completion script capabilities and simple git completion script
    • Pushd with no arguments swaps current directory and most recently pushed directory
    • Many improvements for NT 3.5 and 3.51
    • Fix uninstall option in setup
    • New tool - assoc (and ftype) for editing file associations
    • New tool - edit for editing files similar to MS-DOS edit
    Source code(tar.gz)
    Source code(zip)
  • v1.21(Apr 4, 2020)

  • v1.20(Jan 15, 2020)

    • Uninstall support in ysetup
    • History -u (aliased to F7) to interactively select previous commands
    • Add support for bash-style tab completion with YORICOMPLETELISTALL=1
    • Add support for trailing backslashes in tab completion with YORICOMPLETEWITHTRAILINGSLASH=1
    • Support scroll lock and pause in ymore for suspending display
    • Allow mem to group processes with the same name
    • New tool - charmap for displaying ranges of characters
    • New tool - co for interactively moving, copying and deleting files
    • New tool - kill for terminating processes
    • New tool - stride for writing input lines periodically
    Source code(tar.gz)
    Source code(zip)
  • v1.11(Nov 28, 2019)

    1.11 - 16 Oct 2019

    • Fix tail -f
    • Use correct color to display directory headers in sdir
    • Fix memory leak
    • Fix alt+nn handling again
    • Fix crash in more on 32 bit systems
    • Fix handling of undefined environment variables in set and if
    • Fix mouseover handling after completion scripts
    • Add new OS build string
    • Allow dir to hide hidden and system files
    Source code(tar.gz)
    Source code(zip)
A readline and libedit replacement that supports UTF-8, syntax highlighting, hints and Windows and is BSD licensed.

Read Evaluate Print Loop ++ A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unl

Marcin Konarski 570 May 7, 2022
crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

Sebastian 129 May 11, 2022
simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

kill-shell simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

RE43P3R 1 Oct 18, 2021
Pine's ok shell, a shell in C++

POSH Pine's ok shell, a shell in C++ Answers to questions nobody asked. "Is your name Pine?" No, although that would be neat. Pine is supposed to be a

Boops-Boops 1 Nov 6, 2021
DOS CMD line build of a current SQLite3

DOSQLite This is a DOS/32 build of the command line tool for SQLite 3 based on sqlite-amalgamation-3340100. It was built using DJGPP like my other pro

null 7 Sep 26, 2021
LwSHELL is lightweight, platform independent, command line shell for embedded systems.

LwSHELL is lightweight, platform independent, command line shell for embedded systems. It targets communication with embedded systems from remote terminal to quickly send commands and the retrieve data from the device.

Tilen Majerle 47 May 6, 2022
Mini Shell in C implementing the basic command line functionalities

Mini-Shell Mini Shell in C implementing the basic command line functionalities Instructions to execute the shell: Download the readline library using

Mansi 1 Nov 19, 2021
A Windows Shell Extension for the Pixar USD file format.

Activision USD Shell Extension A Windows Shell Extension for the Pixar USD file format. Windows Explorer Features Hydra Realtime Preview Thumbnails Co

null 276 May 9, 2022
C++ functions matching the interface and behavior of python string methods with std::string

Pystring is a collection of C++ functions which match the interface and behavior of python's string class methods using std::string. Implemented in C+

Sony Pictures Imageworks 717 May 8, 2022
Bitset Sort, a faster std::sort replacement.

Bitset Sort Bitset Sort is a variant of quick sort, specifically BlockQuickSort. Bitset Sort uses a carefully written partition function to let the co

null 62 Apr 26, 2022
A command-line tool to extract dylib files from the dyld shared cache file.

DyldExtractor A command-line tool to extract dylib files from the dyld shared cache file. Starting with macOS 11, standalone binaries of system librar

Cyandev 8 Mar 12, 2022
Flexible and fast Z-shell plugin manager that will allow installing everything from GitHub and other sites.

ZINIT News Zinit Wiki Quick Start Install Automatic Installation (Recommended) Manual Installation Usage Introduction Plugins and snippets Upgrade Zin

z-shell 25 Apr 18, 2022
a shell written in C

shell a shell written in C. CREDITS = https://github.com/brenns10/lsh/blob/master/src/main.c -for most of the template code. This project has a 10% ch

Arin 11 Jul 1, 2021
IDAShell is a shell extension for launching IDA from the context menu of executables.

IDAShell About IDAShell is a shell extension for launching IDA from the context menu of executables. Usage Just install and it works. If you moved IDA

null 147 Apr 29, 2022
LSH is a simple implementation of a shell in C

It demonstrates the basics of how a shell works. That is: read, parse, fork, exec, and wait. Since its purpose is demonstration (not feature completeness or even fitness for casual use), it has many limitations

Stephen Brennan 1.2k May 11, 2022
An implementation of shell commands in C++

ShellSynergy An implementation of shell commands in C++ using std::filesystem Build To run the project execute command: [email protected]:~$ ./RUN.sh Short shel

Vova Makotkin 6 Dec 7, 2021
A C-based Mini Shell: mumsh

A C-based Mini Shell: mumsh This project is a course project in VE482 Operating System @UM-SJTU Joint Institute. In this project, a mini shell mumsh i

Kexuan Huang 4 Feb 19, 2022
Linux Shell Implementation In C - Language

Linux-Shell ASSIGNMENT 2 Name : Naman Anand Roll no : 200101070 SUBJECT : CS242 ASSIGNMENT : 2 COMPILING AND FOR RUNNING COMMANDS :-> 1)gcc -o 2001010

Naman  Anand 17 Oct 30, 2021
Linux Shell Implementation In C - Language

Linux-Mini-Shell This is a C code for Linux Shell (a mini version). The code is designed to work properly in LINUX terminal. To compile the code and r

Akshat Mittal 2 Dec 1, 2021