Igor Vinokurov
Igor Vinokurov

Reputation: 13

How to prepend existing alias in shell?

I have existing alias for ls from oh-my-zsh suite.

igor@shogun ~ % alias ls
ls='ls -G'
igor@shogun ~ %

This alias depends on various settings like OS, color settings and so on. Therefore I can't just overwrite and would like prepend existing alias to something like this:

LC_COLLATE=C ls -G

But this does not work as expected, '-G' is gone:

igor@shogun ~ % alias ls='LC_COLLATE ls'
igor@shogun ~ % alias ls
ls='LC_COLLATE ls'
igor@shogun ~ %

I can do:

igor@shogun ~ % alias ls
ls='ls -G'
igor@shogun ~ % alias ls="LC_COLLATE=C `alias ls|sed -E "s/ls='(.*)'/\1/"`"
igor@shogun ~ % alias ls
ls='LC_COLLATE=C ls -G'
igor@shogun ~ %

Ugly! :)

Any elegant solution?

Upvotes: 1

Views: 160

Answers (1)

thatseeyou
thatseeyou

Reputation: 2012

No dependency to external program like sed.

eval old$(alias ls);alias ls="LC_COLLATE=C $oldls"

Upvotes: 1

Related Questions