Jay McGavren's Journal

2013-04-12

Linux - What to Learn First

Originally wrote this as a Facebook post to guide my brother, who’s been stuck in Windows-land for a long time and needs to learn some Linux for work…

I dunno why there still isn’t a single definitive reference I can point someone to… Too big a topic, I guess.

Step 1

Acquire a good reference. Ask around at the office - everyone will have a favorite book. Here’s a decent one I’ve used: Unix in a Nutshell - Fourth Edition. (Cheap older edition here.)

Step 2

Learn to ignore elitists who tell you you’re going to shoot your eye out. You don’t need to know everything - wait until you get stuck, and then Google the error messages you get. (In the bad old days you used to be able to erase your whole file system, but nowadays ordinary users aren’t given the kind of system permissions that would let them do that kind of harm.)

Step 3

Learn some commands. I spend the most time with these:

SSH: Get to prompts on remote systems. Learn this one inside and out, including passwordless login via public/private keys.

man: Bring up a manual page on any command. Reading manpages is itself an art, so find a good tutorial on fully understanding manpages.

bash: Learn this shell; it’s the most common. It will change the way you work with files forever. Learn how to pipe programs’ standard input and output. Learn how to redirect output to a file.

ls: List files and directories. Learn this inside and out.

find: recursively search the whole hard drive for files and folders.

xargs: run commands on the files brought up by ls and find.

chmod: Control who can read, write, and execute (run) files. This will cause you grief if you don’t know it.

scp: Secure CoPy. Transfer files. Combines with SSH to do it passwordless-ly.

rsync: Even more powerful copying tool. Again, combines with SSH.

less: Read text; something you’ll need to do a lot. man and other programs pipe output through less, so learning it is worthwhile. Especially learn its string search capabilities.

vi: If and only if you have to edit files while they’re sitting on a remote server, learn vi. It’s a pain, it’s counterintuitive, and you’re going to be expected to know it.

cron: Schedule commands to be run at a particular time of day/week/month/year. Look like you’re working hard when you’re not even at the office.

Step 4

Get a buddy. Until you have some experience, you’ll want someone to confer with on the best way to do things. If a local buddy isn’t available, get good at Googling and posting questions on forums like ServerFault.

…all that’s a bit much, I know. If you learn only two of those, learn SSH and bash. Any time spent learning these topics will pay dividends, even if all it does is save you time.

comments powered by Disqus