List all aliases starting with a particular string
Solution 1:
grep for them
-
Far better suggestion from the comments - grep on alias.
You can list all your aliases, even the ones not written in
~/.bash_profile
, by callingalias
.grep the result to find the aliases starting from
gt
as:alias | grep "^alias gt"
-
Since the aliases are created by writing
alias <alias_name>=...
, to list the aliases starting with, for example,gt
, you can do:grep "^alias gt" ~/.bash_profile
The
^
in the grep argument is an anchor. The caret^
and the dollar sign$
are meta-characters that respectively match the empty string at the beginning and end of a line.In
^alias gt
, it implies that you want only those lines that start with "alias gt". On my machine, I get the following result:alias gts="git status" alias gtd="git diff" alias gtpull="git pull" alias gtb="git branch" alias gtpush="git push" alias gtpullmk="gtpull;./make all" alias gtst="git stash" alias gtstash="gtst save" alias gtstlist="gtst list" alias gtctall="runformatter;git commit -a"
-
Alternatively, you could grep without the anchor as:
grep gt ~/.bash_profile
Here, you are simply looking for any line that contains the substring "gt", anywhere. As a result, you may get some unnecessary lines, but you will get all aliases that use any of your git aliases.
On my machine, I get the following output using this search. Notice the extra line at the top, which was not present in the previous output:
alias debugmk="echows;gtb;${ws}/make ${DEBUG_OPTIONS}" alias gts="git status" alias gtd="git diff" alias gtpull="git pull" alias gtb="git branch" alias gtpush="git push" alias gtpullmk="gtpull;./make all" alias gtst="git stash" alias gtstash="gtst save" alias gtstlist="gtst list" alias gtctall="runformatter;git commit -a"
-
Finally, depending upon which command you find more useful (or even go for both if they both are useful), you can create a new alias to list all git related aliases:
alias allgit="alias | grep gt"
Solution 2:
You can use the Programmable Completion Builtins compgen
command with the a
option. The syntax looks like:
compgen [option] [word]
The a
option lists all the aliases
and word
matches all the aliases beginning with those characters. So, to answer your question to list all git aliases:
compgen -a gt
More info can be found with this command:
help compgen