DEV Community

Discussion on: Often neglected skills new devs should learn?

Collapse
 
jcopella profile image
John Copella

Unless you're in a Windows-only shop, I'd suggest a fairly deep dive into the Unix shell(s), in both major forms -- sh & csh.

Understand when the various dotfiles are executed, and in what sequence.

Understand the environment and environment variables.

Learn how to write a shell script -- know what the shebang is and what it's for, know how to parse and process arguments, write an if/then/else block, write a for-loop, handle errors, check and set the exit status, etc.

Know the bread and butter commands, really, really well: ls, cp, rm, grep, etc. Read the man page for each and learn each and every option. Odds are you'll need them at some point, eventually.

Learn fundamentals of job and process management. Know how to move jobs from the foreground to the background, get the process ID of an executing program, send a signal to it, etc.

Know the difference between a shell built-in and an executable command (program). Know how the PATH is used, how to change it, and why.

Know how to inspect and set permissions on files.

Invest the time to learn regular expressions, and the tools built on them: sed, grep, and awk.

Know the shell's quoting rules: understand the difference between a single-quote and a double-quote and a back-quote.

Spend some time learning I/O redirection: know the difference between > and >>, etc. and know the difference between stdin, stdout, and stderr.

Figure out how the history works, how to recall previous commands and how to edit them.

I see a lot of new developers with just the barest, most superficial knowledge of these things and it's really a hindrance. The shell is a very powerful tool and can save you enormous amounts of time and energy. Time spent in learning it repays dividends many times over throughout your career.