I thought it’d be a pain but installing programs through the terminal is actually so nice, I never would have expected it
- tab completion works in more places than you might expect
- ctrl-a/ctrl-e for start/end of line
- ctrl-u to clear the command you’ve typed so far but store it into a temporary pastebuffer
- ctrl-y to paste the ctrl-u’d command
- ctrl-w to delete by word (I prefer binding to alt-backspace though)
- ctrl-r to search your command history
- alt-b/alt-f to move cursor back/forwards by word
- !! is shorthand for the previous run command; handy for
sudo !!
- !$ is the last argument of the previous command; useful more often than you’d think
which foo
tells you where thefoo
program is locatedls -la
cd
without any args takes you to your home dircd -
takes you to your previous dir- ~ is a shorthand for your home dir
- alt-. also pastes the last argument of the previous command (useful if you need to modify it a bit)
- instead of any shortcuts starting with “alt” you can also press “esc” followed by the second key, e.g. pressing “esc”, releasing it and then “a” is the same as pressing “alt-a” (useful if you have only one hand available, or if alt is not availalble)
- if you put a space before a command, it will not be saved in history (useful sometimes, e.g. if you pass a password directly as an argument)
I believe, these are Emacs shortcuts. There’s also set -o vi
in bash, but I’ve never used it, so can’t vouch for it.
That’s good to know. It’s interesting that the other commenter thinks emacs shortcuts are illogical. I’ll make my best guesses at the logic
- ctrl-a/ctrl-e for start/end of line
a is the beginning of the alphabet; e for end (of line)
- ctrl-u to clear the command you’ve typed so far but store it into a temporary pastebuffer
- ctrl-y to paste the ctrl-u’d command
No idea here. Seems similar to nano with k-“cut” and u-”uncut”.
- ctrl-w to delete by word
w for word obviously.
- ctrl-r to search your command history
- alt-b/alt-f to move cursor back/forwards by word
r reverse, b back, f forward. Not sure why alt vs control though; presumably ctrl+b and ctrl+f do different things although I know emacs likes to use Alt (“Meta”) a lot.
Saved! Thank you so much.
I’ve used Linux full-time since late 2020 and I never knew about ctrl+y
and ctrl+u
.
I’d also like to contribute some knowledge.
aliases
You can put these into your ~/.bashrc
or ~/.zshrc
or whatever shell you use.
###
### ls aliases
###
# ls = colors
alias ls='ls --color=auto'
# ll = ls + human readable file sizes
alias ll='ls -lh --color=auto'
# lla = ll + show hidden files and folders
alias lla='ls -lah --color=auto'
###
### other aliases
###
# set color for different commands
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias ip='ip --color=auto'
# my favourite way of navigating to a far-off folder
# this scans my home folder and presents me with a list of
# fuzzy-searchable folders
# you need fzf and fd installed for this alias to work
alias cdd='cd "$(sudo fd -t d . ${HOME} | fzf)"'
recommendations
ncdu - a shell-based tool to analyze disk usage, think GNOME’s baobab or KDE’s filelight but in the terminal
zellij - tmux but easy and with nice colors
atuin - shell history but good, fuzzy-searchable. If you still have the basic shell history (when pressing ctrl+r
), I cannot recommend this enough.
ranger - a terminal file-browser (does everything I need and way more)
Also, Terminal User Interfaces are a nice middle ground between learning terminal commands and having a GUI.
Example:
btop - process manager TUI
ncmpcpp - TUI media player, used mpd on the backend
Here’s a big list: https://github.com/rothgar/awesome-tuis
+1 for Atuin. I constantly use it on my machine and SSH-ing on remote machines who don’t have it is an absolute pain.
I’m gonna have to save this thread and check some of those!
Yeah, linux-servers without the tools installed in your PC are a hassle. That’s why I learned to work with vim, as that’s in nearly every distro’s repo.
I recommended atuin as I was using it before, but currently I am using ohmyzsh with the fzf plugin for zsh. This has a very atuin-like interface and handling, but as a plugin for zsh itself.
If you’re looking for a full list of these kind of navigation shortcuts, they all come from readline
so read the man
page for that. Or just look up the basic navigation of emacs
which is what readline
is mimicking.
A neat thing is that a lot of command line programs use readline. So learning and configuring it will also be useful in for example the Python REPL and calc.
Here are some neat configuration options you can put in ~/.inputrc
set completion-ignore-case on
set show-all-if-ambiguous on
set completion-prefix-display-length 9
set blink-matching-paren on
set mark-symlinked-directories on
And if you are a sensible person who is used to vim
set editing-mode vi
set show-mode-in-prompt on
Saving this! Absolutely gold, thanks for writing it up. You’re what makes the Linux community cool. ❤️
tab completion works in more places than you might expect
I’ve found tab to be such a nice “please give me a hint” button.
- Bonus tip : Sometimes you won’t get auto complete because there’s too many possibilities and the computer can’t be certain which one you want. Hitting tab multiple times will show the possibilities, so you can type in enough characters to remove ambiguity, hit tab again, and boom auto complete!
…That was a terribly convoluted explanation I’m sorry. Just try hitting tab multiple times for fun if you’re stuck it’s kinda handy. Lol