Ask HN: What is the best way to get good at linux shell commands?

10 points by brenfrow ↗ HN
Specifically I'm a web developer that wants to setup databases, and servers, etc, but feels totally inept for someone who has been doing web development for so long.

10 comments

[ 3.4 ms ] story [ 38.5 ms ] thread
I'm not sure about books, but I can offer a bit of advice.

Try and get a friend who is good at Linux. Standing over the shoulder and watching someone using Bash, vim, etc helps a lot. I share some tidbit of system usage almost daily with my roommate and its done wonders for me.

I once tried doing this. My colleague was very good at vim and I though I will watch him use it. It just left me very demotivated. The speed with which he was doing things - I could not keep up. At least for me it is better to learn at my own pace and forcing my self to use it again and again until I am comfortable.
1) start using Git and Github for all your projects. This will force you to get good at command line basics

2) Make your own dotfiles with shortcuts. Here's mine:

http://github.com/dylanized/dotfiles

3) Get a VPS server and set it up. This will require you to learn a little bit of everything - FTP, web server install, libraries, more. I'm doing this now, it's a bitch!

Here's a great VPS deal I found recently, I'm setting mine up now:

http://slickdeals.net/f/5915440-StillGoing-ChicagoVPS-2048MB...

I was looking at Linode, and started setting it up, and thats what got this question started. But this is a much better deal... thanks!
What kinds of guides did you find helpful set up a VPS?
I am just googling things as I have to tackle them. So far it's been:

- install git and hub

- install node, npm, and nvm

- create a new user for sftp access

- give write permissions to that new user and set up my ssh keys

- set up static file server, virtual hosts, etc (haven't gotten to this yet)

For a Lamp stack, that last bullet would be "install apache, php and mysql"...

Cmmandline Fu[1] is a good place to start to see the possibilities; then, start forcing yourself to solve daily problems on the command line that you might either solve using a scripting language or solve by manual repetition.

Working on the command line is just like writing any other software. You have to think about what you are trying to do, and decide how you will accomplish it. As you think "what do I need to do next", Google is your friend for finding the obscure command to accomplish the task.

Repeat every working day until you aren't going to Google.

1. http://www.commandlinefu.com/commands/browse

Thanks for making me lose about an hour of work!