One night I cooked a lip-smacking good lemon, chicken and white wine risotto. After dinner, while I was smashing the rest of the wine, I decided to write sokoban in bash. I can't explain it.
Over the next couple of nights I wrote it while listening exclusively to Bruce Springsteen (I've had a thing for the Born in the USA and Nebraska albums lately).
Enjoy.
For usage instructions, just run the program with no args:
$ ./springsteen_sokoban.sh
usage: ./springsteen_sokoban.sh levels/<level-file-name>
Use the vim movement keys to move your character (the '@' symbol) around.
Push all the crates (the 'o' characters) onto the goal squares (the '.' symbols) to win.
Press r to restart the level.