Thinking about globbing, I think rm * is a mistake anyway...
The way I'd do programs is something like this: echo input > program_name options.... So, you wouldn't rm *. You'd ls | rm. You'd implement rm like this: void main() { foreach(file; stdin.byLine) std.file.remove(file); } This way, options and things to operate on are nicely separated, and you can process the input with more filters easily. glob * | grep 'poo' | rm and etc. Windows Powershell actually kinda works this way, from what I know of it. You can do ps | kill and it works. I almost *almost* want to write my own custom userland. But, while I can complain all day about what we have... meh it works well enough that I'm in no rush to spend a lot of time replacing it.