i have bad news: bash is already a massively improved/extended ksh clone. ksh was a massively improved/extended sh clone. sh got a ton of improvements early on.
this is about as good as you can get without breaking compatibility completely (bash already breaks compatibility with posix sh in some ways).
anyway, once you’ve figured out the hermetic incantations required to work with filenames with whitespace in them, it’ll be time to write scripts that can handle filenames with newlines in them :D
Most shells will issue $PS2 as the continuation prompt if you quote a filename and try to insert a carriage return.
Ctrl-V Ctrl-J is the explicit keypress pair to insert a carriage return without triggering $PS2, but beware: If the carriage return is outside of quotes, that’s equivalent to starting a new command in much the same way a semicolon or a new line in a shell script would.
echo"hello^V^Jthere" [Enter] echoes hello on one line and then there on the next, but echo hello^V^Jthere [Enter] will echo hello then try to run a command called there
We’d have to assume that whatever fixes spaces in filenames would also have an option to fix this subtlety. And I say to whoever tries: Good luck with that.
i have bad news: bash is already a massively improved/extended ksh clone. ksh was a massively improved/extended sh clone. sh got a ton of improvements early on.
this is about as good as you can get without breaking compatibility completely (bash already breaks compatibility with posix sh in some ways).
anyway, once you’ve figured out the hermetic incantations required to work with filenames with whitespace in them, it’ll be time to write scripts that can handle filenames with newlines in them :D
Most shells will issue
$PS2
as the continuation prompt if you quote a filename and try to insert a carriage return.Ctrl-V Ctrl-J is the explicit keypress pair to insert a carriage return without triggering
$PS2
, but beware: If the carriage return is outside of quotes, that’s equivalent to starting a new command in much the same way a semicolon or a new line in a shell script would.echo "hello^V^Jthere"
[Enter] echoeshello
on one line and thenthere
on the next, butecho hello^V^Jthere
[Enter] will echohello
then try to run a command calledthere
We’d have to assume that whatever fixes spaces in filenames would also have an option to fix this subtlety. And I say to whoever tries: Good luck with that.