willlma
willlma

Reputation: 7533

Print terminal alias command as well as executing it

As a terminal noob, I've created aliases for pretty much everything I do. The problem is that I've started forgetting those few commands that I do know because of it. On top of that, I sometimes need to edit a variable in the previous command.

So what I'd like is if when I use an alias, the first line printed is the actual command it represents, then proceed to execute the command. Since pressing up and !! simply reprints the alias, I'm not too sure how to get a reference to the underlying command.

Thanks.

Upvotes: 9

Views: 3997

Answers (3)

Liyong Zhou
Liyong Zhou

Reputation: 231

You can use variables in your alias to get a clean output:

alias test='_TMP="pushd /home/a/b/c";echo $_TMP; eval $_TMP'

If you want to avoid messages coming out of alias, you can do

_TMP="pushd /home/a/b/c >/dev/null 2>&1"

It does add an environment var of _TMP.

The old post had error in it.

Upvotes: 0

fedorqui
fedorqui

Reputation: 289675

You can always use:

  • alias to list all your aliases, or
  • alias name to show the specification of the alias name.

So in fact you can define your alias as

alias myalias="alias myalias; <do stuff>"

I also think that chepner's answer with Alt-Control-e is more practical, but I am posting this for completeness.

Upvotes: 13

chepner
chepner

Reputation: 531135

After you type your alias, but before you hit enter, you can type Meta-Control-e (probably Alt-Control-e, but possibly Esc-Control-e) to expand what you've typed; this will expand any aliases and history expansions so you can see the "long" form of what you've typed.

Upvotes: 10

Related Questions