Shortcuts in your shell
Posted Wed, 28 Mar 2007
I always run across commands I want to run more than once, but don't
necessarily merit an alias in my zshrc file. For these commands, I abuse
environment variables and use them as prefixes.
For instance, I have one command that runs mplayer in a loop, in case the connection drops:
while true; do mplayer -cache 48 -prefer-ipv4 http://foo.com/streamthing; doneNormally, I might use
!while to re-invoke this command. However, I
have lots of oneliners in my shell history that start with while.
So, let's hack around it:
MPLAYER= while true; do mplayer -cache 48 -prefer-ipv4 http://foo.com/streamthing; doneThis will set the environment variable 'MPLAYER' to an empty string and pass it to the while subshell (and thus mplayer), but since MPLAYER isn't used as an environment variable in mplayer, we won't break anything.
Now, any time I want to rerun this specific command, I can just do
!MPLAYER and we're all set. Doing this is *extremely* useful and
allows you to define alias-like procedures in real-time, assuming you have a
persistent shell history. If you don't have a persistent shell history, set it
up, as it's useful for more things than the above hack.