- The Unix philosophy, specially the "Make each program do one thing well" [1]
- File and directory navigation/manipulation (ls, cd, mkdir, rm, rmdir, touch, cp, mv)
- ln/unlink/readlink
- find/locate
- chmod
- chown
- man/info
- su/sudo
- set/export (environment variables in general, specially PATH)
- which
- df
- history
- vi (enough to open/edit/save a file)
- cat
- head/tail
- more/less
- grep
- awk/sed/cut
- (regular expression in general)
- wc
- diff
- tr
-
-
- <<
- |
- xargs
- tee
- ping
- netstat
- ssh/scp
- ngrep
- netcat
- curl
- wget
- telnet (mostly for port testing?)
- rsync
- lsof (-i)
- ps
- uptime
- top/htop
- nohup
- kill/pkill/killall
- &
- (Ctrl + Z)
- fg/bg/jobs
- crontab
- lsof
- tar (including manipulating gzip/bzip)
- zip
[1] The Art of Unix Programming (http://www.catb.org/esr/writings/taoup/html/ch01s06.html)
- Manual pages ('man' command)
- SS64 command references: http://ss64.com/bash/
- Useful command snippets: http://commandlinefu.com
- Useful aliases: http://alias.sh
- Command Line Crash Course: http://cli.learncodethehardway.org/book/
I'm assuming people will have to learn the concepts required for using each command. But you're right, some commands do require more background, like permissions, streams and processes.
Also agreed that nowadays people mostly use tar/zip. I'll change that and also add htop/sudo/su.
Thanks!