I went a little overboard and wrote a one-liner to accurately answer this question
history|cut -d " " -f 5|sort|uniq -c|sort -nr|head -5
Note:
history
displays like this for me20622 2023-02-18 16:41:23 ls
I don’t know if that’s because I setHISTTIMEFORMAT='%F %T '
in .bashrc, or if it’s like that for everyone. If it’s different for you change-f 5
to target the command. Use-f 5-7
to include flags and arguments.My top 5 (since last install)
2002 ls 1296 cd 455 hx 427 g 316 find
g
is an alias for gitui. When I include flags and arguments most of the top commands are aliases, often shortcuts to a project directory.Not to ramble, but after doing this I figured I should alias the longest, most-used commands (even aliasing
ls
tol
could have saved 2002 keystrokes :P) So I wrote another one-liner to check for available single characters to alias with:for c in a b c d e f g h i j k l m n o p q r s t u v w x y z; do [[ ! $(command -v $c) ]] && echo $c; done
In .bash_aliases I’ve added
alias b='hx ${HOME}/.bash_aliases'
to quickly edit aliases andalias r='source ${HOME}/.bashrc'
to reload them.nano
ncdu
du -sh /too/bar
to get size of files/folders.sudo !!
inserts sudo into previous command when forgotten.yay
for full system update if yay is installed.cat
reads files.tldr
because I am too impatient to read through man pages or google the exact syntax for what I want to do.There are exactly three kinds of manpages:
- Way too detailed
- Not nearly detailed enough
- There is no manpage
I will take 1 any day over 2 or 3. Sometimes I even need 1, so I’m grateful for them.
But holy goddamn is it awful when I just want to use a command for aguably its most common use case and the flag or option for that is lost in a crowd of 30 other switches or buried under some modal subcommand.
grep
helps if you already know the switch, which isn’t always.You could argue commands like this don’t have “arguably most common usecases”, so manpages should be completely neutral on singling out examples. But I think the existence of tl;dr is the counterargument.
Tangent complaint: I thought the Unix philosophy was “do one thing, and do it well”? Why then do so many of these shell commands have a billion options? Mostly /s but sometimes it’s flustering.
Sudo !!
It reruns the last command as sudo.
Pretty useful since I’m always forgetting.
Most commands soon followed by sudo !!
qmv -f do ${dir}
… for quickly moving and renaming files. The default ‘qmv’ opens up your preferred text editor with a list of the source and destination name of the directory of files you want to move/rename. The ‘-f do’ tells the command we only want to see/edit the [d]estination [o]nly. If you need to rename/move a bunch of files, it’s much quicker to do it in vim (at least for me).
It sounds similar to one of my favorite commands! vidir 🙂
cd
every single day.You haven’t discovered
exa
? Noob/s
Seems like an appropriate place to share https://github.com/agarrharr/awesome-cli-apps
I’m a fan of ripgrep and lsd in particular.
control+R
in bash, it lets you quickly search for previously executed commands.
its very useful and makes things much quicker, i recommend you give it a try.
sl
Not a command but bang expansions. For example
!?
is the args of last command useful for stuff likemkdir foo ; cd !?
https://www.redhat.com/sysadmin/bash-bang-commands learn these. you suck at using your computer if you don’t know them.
Is there something similar in fish shell?
CTR + u will delete the whole command. I use that a lot so I don’t have to backspace. It’s saved me a ton of time
How about ctrl+c to cancel and clear the command you are typing? It’s much easier because you only need 1 hand, and does not impact your shell’s history.
Related: Alt +
.
, to cycle through arguments used in previous commands
deleted by creator
sudo !!
to rerun last command as sudo.history
can be paired with!5
to run the fifth command listed in history.Fifth as in fifth most recent command or fifth oldest?
I believe it’s the fifth oldest - I think
!-5
will get you the fifth impost recent, but I was shown that and haven’t put it into practice.The most common usecase I do is something like
history | grep docker
to find docker commands I’ve ran, then use!
followed by the number associated with the command I want to run in history.