As you're focused on the command line, I won't mention things I generally use in shell scripts like compound commands (if, for, while) or shell parameters. I will also skip things I don't often use.<p>First, there is moving around in bash - the arrow keys, or backspace/delete to remove a character, or ^A to go to line start, or ^R to search command history, or tab to complete a command. ^L clears the screen, although from habit I still type clear.<p>I use shell/bash builtins cd, and pwd often enough. Sometimes export, umask, exit, ulimit -a, echo.<p>I use shell variables like PS1, HOME, and PATH. I set them in $HOME/.bashrc, which sometimes references files like $HOME/.bash_aliases. I often set a larger than default history file size. I use ~ tilde expansion as an abbreviation for $HOME. For long commands I type regularly, I put an alias in the run control (or run control delegated) file.<p>I use job control commands like bg, fg, jobs and kill. You should know how bash job control complements and diverges from the system process commands. & starts a process as a background process, and preceding it from nohup tells it to ignore hangup signals.<p>You should know how single quotes work, and escape characters for them if they are needed.<p>Then there are pipes (| - "pipelines"), and redirecting of stdin, stdout, and stderr. I use this a lot. Also redirecting or appending output to a file (>, >>). I don't use tee often but sometimes do.<p>Then there are commands used with the shell a lot. Such as parallel, or xargs.<p>Also nice which modifies process scheduling.<p>Script, or typescript, keeps a log of your shell session.<p>Screen allows for multiple shell sessions. Useful on remote hosts especially (tmux is an alternative).<p>Then there are the standard file and directory commands I often use like pwd, cd, ls, mv, cp, df, chmod, du, file, find, locate, mkdir, touch, rm, which, and wc.<p>I manipulate these with commands like awk, sed, tr, grep, egrep, cat, head, tail, diff, and less.<p>I edit with vim or emacs -nw.<p>Command like htop, ps, w, uptime and kill let me deal with system processes.<p>Then there are just handy commands like bc or cal if I need to do some simple addition or see which day of the week the first of the month is.<p>Man shows you manual pages for various commands. "man command" will show the manual page. For a command like kill, the default will show the command kill - "man kill" which specifically is "man 1 kill". But "man 2 kill" would show the kill system call. You can see what these different manual sections are with "man man" - 1 is executable programs, 2 is system calls etc.<p>All of it is a process. I mentioned awk. It is one of the commands handy to use with the shell. I have seen entire programs written in awk. Some parts of awk I can use from memory, some I use occasionally and have to look up the flags to refresh my memory, some parts I have never used at all. As time goes on you pick up more and more as you need it.