I use Open Object Rexx on Windows (3.1, 2000, XP, now 7, 10).

I'm not sure what is available on Linux but maybe the same thing.

Rexx can be used as a macro language for nearly any software, but I use it just for command line scripting. I have 200+ Rexx scripts I regard as serious and write more for one-shot applications a few times a week.

E.g., I have several Rexx scripts for running Robocopy, and each script has VERY carefully worked out, tested, etc. options.

One Rexx script I leave running in each Windows command line window as a shell: It's useful but dirt simple, just reads the command line, does what it can do and otherwise passes to Windows. In particular with that shell I have the cutest little file system tree walking, jumping, etc. commands.

One of my favorite Rexx scripts I invoke with an icon in the UL corner of my screen. This script moves the windows, maintaining the current Z-order and X position order, so that the UL corners of the windows are on a line from the UR of the screen to the middle left. This way at least a little of each window is visible and can be made fully visible without moving any of the other windows and still leaving at least a part of all the other windows visible. To me THAT is how to arrange screen windows. So, yes, Rexx has a little API to some of the Windows API.

In any command line window,
Rexx can do good things with the environment variables of that window. So, I initialize each command line window with environment variables like

mark.hn=C:\Users\user1\DATA05\TOPICS\MEDIA\HACKER_NEWS\

So, that environment variable has the file system directory I use for HN posts, etc. Then via my little shell, I can type

g hn

(go to hn), and my little shell looks up environment variable MARK.HN and makes that tree name the current drive/directory.

Apparently when using an hierarchical file system to implement a taxonomic hierarchy of subject matter, some of the leaves of the hierarchy are wanted much more often than the directories on the path to that leaf. For such leaves, say, x, my little environment variable MARK.x work nicely.

It's common for me to have a file system directory tree name in KEdit and then want to open a window with that tree name the current drive/directory. Okay. In KEdit I put the tree name on the Windows system clipboard, and then my little Rexx shell command

g

makes the tree name on the clipboard current. Dirt simple to implement and darned handy.

There's lots more in my little command shell, and it's easy to implement more.

There's a book on Rexx by Mike Cowlishaw, and it's nicely done, but Open Object Rexx comes with some nice PDF files that might be documentation enough.

Rexx is elegant. E.g., it's a total sweetheart for its string manipulation facilities. The only data type is a string. If the content of a string is the decimal digits of a number, then can do arithmetic on it. Yes, can ask if the content is a number.

Built-in quite nicely are stem variables, essentially collection classes or, if you will, AVL trees. So, for variable i can have

array.i

where array is the collection and i is the key. If have strings i, j, k then can have a three dimensional key

array.i.j.k

Powerful. Easy. Elegant!

Yes, there is a statement interpret where can enter a string and have it executed immediately. So, e.g., could have some code that constructed a string that was the source code for a do-loop, give that string to the interpret statement, and have the loop executed.

Yes there are some plenty good enough trace and debugging facilities.

Rexx is no toy: For some years Rexx on 3000+ IBM mainframes connected with VNET (at the user level much like the Internet) was the basis of administrative computing in IBM.

Can get add-ons for sorting, TCP/IP, manipulating windows on Windows, scientific functions, etc.

I suspect that on Windows PowerShell is more powerful but harder to use for when Rexx will work.

In time I'll have to get okay facility with PowerShell, but I'll likely never give up on Rexx.

Rexx used to be the macro language for KEdit but eventually KEdit wrote KEXX, their own version of Rexx. KEXX is nice, sometimes works better with KEdit than an external macro language could, and has built-in documentation that is likely good enough, especially if had a start with Rexx.

Rexx and KEdit let me have just simple text as the basis of nearly all my computing and essentially all my typing. Rexx and KEdit are for text like a chef's knife and cutting board are for a cook. AFAIK, all source code is still just simple text!

Long live the kings, text, TeX, Rexx, Kexx!!!