- 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/
Make, or the build tool most developers use for your language of choice, so you better understand managing dependencies among the files in your code base, and the various possibilities of your build tool chain.
Rpm, jar, or the packaging tool most devs... , so you understand what you can deliver to your customer, and what her installation looks like.
In general, reduce reliance on your IDE, so you're more portable.