DEV Community

Abhinav Kumar
Abhinav Kumar

Posted on • Updated on

What are the most used commands in your shell history?

Recently I came across a thread on reddit which asked users the most used command in their shell history.

My results:

     1  419  13.0489%    git
     2  265  8.25288%    cd
     3  239  7.44316%    sudo
     4  122  3.79944%    cat
     5  77   2.39801%    which
     6  76   2.36686%    dkr
     7  72   2.24229%    rm
     8  60   1.86858%    rg
     9  57   1.77515%    yarn
    10  57   1.77515%    nvim
Enter fullscreen mode Exit fullscreen mode

Obviously git is my most used command because I ran it on my work laptop. It should be a lot more but I have been using prezto's git aliases lately. Other common commands are dkr which is an alias for sudo docker and rg, the binary for ripgrep.

I wonder how is it for the dev.to community?

Use this command from linux.byexample.com to list your most used commands:

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10
Enter fullscreen mode Exit fullscreen mode

I use zsh and it was not working for me because zsh's history command just prints a few most recent commands only. I had to tweak it a bit:

history 1 | cat | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a; }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
# or
fc -l 1 | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a; }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
Enter fullscreen mode Exit fullscreen mode

Discussion (33)

Collapse
dmfay profile image
Dian Fay
     1  179  17.9179%   git
     2  88   8.80881%   ls
     3  86   8.60861%   cd
     4  79   7.90791%   rm
     5  74   7.40741%   cat
     6  57   5.70571%   vi
     7  44   4.4044%    pacman
     8  37   3.7037%    mocha
     9  28   2.8028%    sudo
    10  25   2.5025%    tree

Outside the usual suspects, pacman is the Arch Linux package manager and mocha is a JavaScript test framework. I'm actually a little surprised the latter made the top 10.

Collapse
rhymes profile image
rhymes

for a moment I thought you had a version of Pacman installed in the terminal

Collapse
dmfay profile image
Dian Fay

I mean, it exists, but I was never any good at Pacman :D

a command-line implementation of the Pacman game

Thread Thread
rhymes profile image
rhymes

ahhahaha me neither.

I'm more of a Space Invaders person.

Collapse
nmcain profile image
Noah Cain

     1  43  17.0635%   cd
     2  37  14.6825%   flutter
     3  31  12.3016%   ls
     4  27  10.7143%   git
     5  22  8.73016%   webdev
     6  14  5.55556%   nano
     7  11  4.36508%   sudo
     8  10  3.96825%   adb
     9  8   3.1746%    pub
    10  7   2.77778%   rm

Flutter, am I right?

Collapse
simov profile image
simo
     1  301  30.1%  g
     2  162  16.2%  cd
     3  105  10.5%  ll
     4  87   8.7%   npm
     5  43   4.3%   s
     6  32   3.2%   sudo
     7  30   3%     rm
     8  20   2%     node
     9  19   1.9%   mocha
    10  17   1.7%   nvm

g - git, s - sublime

Collapse
abhinav profile image
Abhinav Kumar Author

Are you using self-defined aliases for git or the ones defined by a bash/zsh framework?

Collapse
simov profile image
simo

I've manually added the following lines in my .bashrc file:

# git alias and autocomplete
alias g='git'
source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g
Collapse
igormp profile image
Igor Moura
     1  997  12.7023%    exit
     2  992  12.6386%    git
     3  916  11.6703%    sudo
     4  295  3.75844%    ping
     5  266  3.38897%    cd
     6  261  3.32526%    yaourt
     7  212  2.70098%    ls
     8  138  1.75819%    startx
     9  126  1.6053%     cat
    10  110  1.40145%    qemu-system-x86_64

I honestly didn't expect qemu to be there lol

Collapse
rhymes profile image
rhymes
     1  355  35.5355%   git
     2  106  10.6106%   yarn
     3  48   4.8048%    pipenv
     4  28   2.8028%    brew
     5  26   2.6026%    rm
     6  25   2.5025%    zgrep
     7  25   2.5025%    cd
     8  22   2.2022%    curl
     9  19   1.9019%    pyenv
    10  18   1.8018%    redis-cli
Collapse
abhinav profile image
Abhinav Kumar Author

How is pipenv working out for you? Is it comparable to yarn or cargo in your experience?

Collapse
rhymes profile image
rhymes • Edited

I use pyenv (to have multiple Python versions installed) and pipenv a lot.

I don't know about cargo but pipenv is not that different from yarn. It has a file with the list of dependencies and a lock file. It tends to consume less resources than yarn because Python dependencies trees are usually much smaller than those of JS libraries.

Collapse
phlash909 profile image
Phil Ashby


1 146 14.6% vi
2 137 13.7% ls
3 96 9.6% cd
4 64 6.4% eog
5 52 5.2% git
6 44 4.4% ssh
7 38 3.8% cat
8 32 3.2% rm
9 26 2.6% su
10 26 2.6% make

I've been doing some facial recognition scripting recently (hello eog), and apparently I like other computers (ssh), nuking stuff (rm) and root :)

quite glad to see make get in at 10!

Collapse
val_baca profile image
Valentin Baca

No surprise here. git, cd, ls, vim, build, search

     1  3663  36.6337%   g
     2  938   9.38094%   cd
     3  534   5.34053%   igs        # inall git status (runs 'git status' in each dir in pwd)
     4  516   5.16052%   ..
     5  277   2.77028%   vim        # <3
     6  258   2.58026%   ls
     7  216   2.16022%   <redacted> # company build command, aliased to be 2 letters :)
     8  200   2.0002%    ws         # alias to cd to my workspace dir
     9  175   1.75018%   <redacted> # company workspace information command, aliased to be 2 letters
    10  167   1.67017%   ag         # the silver searcher > (grep or awk or find)
Collapse
abhinav profile image
Abhinav Kumar Author • Edited

You might want to look into autojump or autojump-rs to quickly jump to your workspace directories.

Also, ripgrep is a competent (not drop-in though) alternative to ag/grep.

Collapse
val_baca profile image
Valentin Baca

Thanks. I've found that autojump and the like are too non-determistic to be reliable.

ripgrep is missing two very critical features: -G (--file-search-regex) and the ability to grep gzip'd files. The ripgrep vim plugin is also sub-par to ag's.

ripgrep is certainly faster, but they're both so fast their difference is often in ms.

Collapse
vlasales profile image
Vlastimil Pospichal
     1  117  12.4468%   ll
     2  113  12.0213%   xmllint
     3  92   9.78723%   vim
     4  45   4.78723%   php
     5  39   4.14894%   cd
     6  36   3.82979%   mv
     7  34   3.61702%   git
     8  28   2.97872%   cat
     9  27   2.87234%   docker
    10  24   2.55319%   mongo
Collapse
andy profile image
Andy Zhao (he/him)
     1  137  27.4%  git
     2  50   10%    cd
     3  47   9.4%   ls
     4  43   8.6%   brew
     5  26   5.2%   br (bin/rails)
     6  24   4.8%   brg (bin/rails guard)
     7  13   2.6%   heroku
     8  12   2.4%   pg_upgrade
     9  12   2.4%   pg_restore
    10  11   2.2%   rm

Surprised that brew,pg_upgrade, and pg_restore are there. Wonder if it take your most recent commands from the previous week.

Collapse
ferricoxide profile image
Thomas H Jones II

Probably depends on how your shell history is set up. Things like whether concurrent sessions are set up to aggregate history, whether session's shell-history is configured to save to disk at all, how large you've set your HISTSIZE, etc. will all play in.

Collapse
fynn_it profile image
fÿm
     1  378  6.77784%    ga (git add .)
     2  358  6.41922%    gc (git commit -m)
     3  346  6.20405%    gulp
     4  319  5.71992%    ls
     5  292  5.23579%    gpll (git pull && echo ' --pulled -- ' && git push && echo ' --pushed -- ')
     6  232  4.15994%    gs (git status)
     7  202  3.62202%    npm
     8  182  3.2634%     ..
     9  178  3.19168%    git
    10 156  2.7972%     gpl (git pull)
Collapse
shreyasminocha profile image
Shreyas Minocha
     1  1179  11.77%       git
     2  1119  11.171%      cd
     3  556   5.55056%     npm
     4  537   5.36089%     ls
     5  439   4.38255%     gstt
     6  362   3.61386%     rm
     7  311   3.10472%     mv
     8  242   2.41589%     sudo
     9  242   2.41589%     cat
    10  216   2.15633%     brew

Where gstt is my alias for git status

Collapse
null_abe profile image
Antoine B.
     1  350  32.3475%    sudo
     2  214  19.7782%    git
     3  89   8.22551%    cd
     4  62   5.73013%    docker
     5  41   3.78928%    rm
     6  25   2.31054%    docker-compose
     7  19   1.75601%    mkdir
     8  18   1.66359%    chmod
     9  15   1.38632%    vim
    10  15   1.38632%    tar

sudo won this

Collapse
tilman profile image
Til

if the terminal is your IDE:

1   2749                             14.3633%    vim
2   2414                             12.613%     git
3   1808                             9.44668%    ll
4   1392                             7.27311%    curl
5   1154                             6.02957%    cd
6   1127                             5.8885%     node
7   469                              2.45049%    npm
8   262                              1.36893%    cat
9   245                              1.28011%    rm
10  232                              1.21218%    docker
Collapse
mjb2kmn profile image
MN Mark
 1  169  33.8%  ssh
 2  58   11.6%  git
 3  45   9%     cd
 4  44   8.8%   ll
 5  26   5.2%   vim
 6  23   4.6%   dig
 7  22   4.4%   exit
 8  17   3.4%   vi
 9  15   3%     clear
10  8    1.6%   ping

I might be a software engineer by title, but really a sysadmin by necessity.
I didn't expect to see exit and clear so much but I suppose it makes sense with all the tmux panes being created and destroyed and my habit of clearing the screen when switching between tasks.

Collapse
abhinav profile image
Abhinav Kumar Author

Ctrl+D and Ctrl+L?

Collapse
tsia profile image
tsia
     1  1073  10.73%  sudo
     2  852   8.52%   cd
     3  795   7.95%   ssh
     4  522   5.22%   dig
     5  455   4.55%   curl
     6  412   4.12%   vi
     7  368   3.68%   git
     8  304   3.04%   rm
     9  283   2.83%   ls
    10  249   2.49%   cat

I'm more of a sysadmin guy as you might have guessed by git being only on 7 :D

Collapse
leojpod profile image
leojpod
     1  536  20.727%     gcam
     2  312  12.065%     gco
     3  124  4.79505%    npm
     4  124  4.79505%    gc
     5  121  4.67904%    ga
     6  111  4.29234%    git
     7  105  4.06032%    elm
     8  97   3.75097%    rm
     9  75   2.90023%    docker-compose
    10  54   2.08817%    g

aka a bunch of git shortcuts, the infamouse npm for npm start on all my projects, yet more git stuff
number 11 is nvim with 51 :D

Collapse
nirebu profile image
Nicolò Rebughini

On my main VM lots of DNS queries, talking to other machines and inline loops; and oh, some heavy ansible testing made its way to the top 10

     1  192  19.2%  dig
     2  153  15.3%  ssh
     3  107  10.7%  cd
     4  104  10.4%  sudo
     5  52   5.2%   rm
     6  50   5%     for
     7  46   4.6%   split
     8  44   4.4%   scp
     9  39   3.9%   ansible-playbook
    10  20   2%     ll
Collapse
ferricoxide profile image
Thomas H Jones II • Edited

Depending on your distribution, the "only X number of lines of history are printed" is the default behavior. For bash and ksh, subbing fc -l 1 for history usually suffices.

Collapse
c0il profile image
Vernet Loïc

Git also wins for me. :) php would be second when combining php and sf.

 1  393  23.632%     git
 2  128  7.69693%    cd
 3  120  7.21587%    sf
 4  75   4.50992%    php
 5  54   3.24714%    rm
 6  54   3.24714%    kf.preprod3
 7  52   3.12688%    grep
 8  49   2.94648%    redis-cli
 9  46   2.76609%    composer
10  42   2.52556%    ping
  • sf is an alias for php app/console
  • kf.preprod3 is a ssh alias
Collapse
eddinn profile image
Edvin Dunaway • Edited
 1  274  27.4%  ssh
 2  118  11.8%  ping
 3  56   5.6%   ls
 4  55   5.5%   vim
 5  52   5.2%   cd
 6  47   4.7%   cat
 7  46   4.6%   sudo
 8  38   3.8%   grep
 9  31   3.1%   find
10  24   2.4%   gf
11  21   2.1%   ll
12  21   2.1%   less
13  16   1.6%   gp
14  15   1.5%   rm
15  15   1.5%   la
16  15   1.5%   dnfd
17  11   1.1%   git
18  10   1%     cpp
19  9    0.9%   diff
20  8    0.8%   chmod

I mainly work via ssh, so my total commands differ there.