Fun idea! The real time interaction with GPIO from the CLI is the most interesting thing here, I could see a general framework for that being useful for early-stage prototyping with new hardware/sensors if you included things like I2C, SPI, and UART.
For that, a Forth is superior because it allows you to augment the set of commands.
The next level of this is serving the Arduino as files: https://github.com/echoline/NinePea then mounting that on your host OS. A friend wrote his own 9P server while doing embedded work on an ST Arm board by mounting the board under Linux. Files are just nodes to RPC calls that you the user decide so the file server can do anything.
Your IO points can be individual files so you can 'echo 127 >/n/arduino/pwm0' to set and reading is just as easy 'cat /n/arduino/pwm0' If you want to save all the pin states you 'tar -c /n/arduino | gzip >arduinostate.tgz' then reverse that process to write the values back.
To change pin config you can create a ctl file which you can use to control and configure things using key=value pairs, e.g. echo 'pinmode pin=3 mode=output' >/n/arduino/ctl. Errors are communicated through the file system so a failed write() will return -1 along with an errstr(2) message to your calling process.
Want a cli in addition? No problem, just make a file called e.g. con (console) and hang a REPL off it. Now open that file using a console emulator like con(1) on Plan 9: 'con -C /n/arduino/con' and type your heart away.
I have toyed with the linked library on 9front and tinkered with robotfs and the RNG demos. This is one of the cleanest ways to interact with software IMO.