One of my favorite command line tips: you can add ‘comments’ full of keywords to shell commands, which makes searching your command history easier.
> obscure-cmd --with-weird-flags -Qdt # searchable comment keywords
Presumably you’re using something like fzf for history search, but this is still useful without it.
This is especially useful for cli tools with obscure names/flags, or when you can’t remember where a particular log file is.
Some examples from my history:
tail awesomewm logs:
tail -f ~/.cache/awesome/logs -n 2000 # tail follow log awesomewm
fix linux clock drift:
sudo ntpd -qg && sudo hwclock --systohc # fix linux clock time drift
copy ngrok public url to clipboard:
curl -s http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url" | tr -d '"' | tr -d '\n' | xclip -selection clipboard -i # fetch ngrok url uri, copy to clipboard
sign ssh and gpg, then refresh the emacs keychain env:
keychain --agents gpg,ssh --eval id_rsa <some-gpg-id> && emacsclient -e '(keychain-refresh-environment)' # sign ssh,gpg password, refresh emacs env
Another gpg one:
git config commit.gpgsign false # disable gpg signing for this repo
Pacman/pamac commands, like listing orphaned packages:
pacman -Qdt # list orphans
pamac list -o # list orphans
xprop - super useful for debugging window management, for some reason i can never remember what it’s called:
xprop # mouse click window x11 linux describe info client helper whateveritscalled
Some helpers from my clawe project:
bb --config ~/russmatney/clawe/bb.edn -x clawe.sxhkd.bindings/reset-bindings # reset sxhkd bindings
bb --config ~/russmatney/clawe/bb.edn -x clawe.restart/reload # reload clawe
Aliases come to mind as well - in some cases that might be a better fit. I like this because it’s so low-lift.
Good idea.
Another tool in the same vein is tldr:
$ tldr tar tar Archiving utility. Often combined with a compression method, such as gzip or bzip2. More information: https://www.gnu.org/software/tar. - [c]reate an archive and write it to a [f]ile: tar cf path/to/target.tar path/to/file1 path/to/file2 ... - [c]reate a g[z]ipped archive and write it to a [f]ile: tar czf path/to/target.tar.gz path/to/file1 path/to/file2 ... - [c]reate a g[z]ipped archive from a directory using relative paths: tar czf path/to/target.tar.gz --directory=path/to/directory . - E[x]tract a (compressed) archive [f]ile into the current directory [v]erbosely: tar xvf path/to/source.tar[.gz|.bz2|.xz] - E[x]tract a (compressed) archive [f]ile into the target directory: tar xf path/to/source.tar[.gz|.bz2|.xz] --directory=path/to/directory - [c]reate a compressed archive and write it to a [f]ile, using [a]rchive suffix to determine the compression program: tar caf path/to/target.tar.xz path/to/file1 path/to/file2 ... - Lis[t] the contents of a tar [f]ile [v]erbosely: tar tvf path/to/source.tar - E[x]tract files matching a pattern from an archive [f]ile: tar xf path/to/source.tar --wildcards "*.html"
tealdear is my recommendation
Nice. Classic rust reimplementation.
Yesssss tldr is awesome!