When I code, I often come across problems that aren’t solvable by writing more code (my normal strategy). Instead, these problems tend to require fixing, changing, or updating something about how my computer works. Other times, I accidentally do something that messes with the state of my computer. I need to figure out what I did wrong and how to fix it.
In these cases, the command line is a powerful asset. Today, I’m going to share three situations where the command line can save you time and spare you frustration. Buckle up!
1: Speed Up Your Workflow
When I start coding on a new project, my life is simple: I need one command to run my site, and maybe another to open that site in my browser, to test it out. However, as I build grander, more interesting projects, I find myself needing to chain together several commands every time I want to run my site: maybe using grunt, or gulp, or Sass, or Node, or uglify, or a combination of all those together.
When I find myself repeatedly typing the same four lines in a row on the command line, I know I need a faster process. Some simple scripting and adjustments to the PATH can change my four-line build process into a single command—one that I can send to other developers on my team to also make their build processes more efficient, too.
Try it out in the command line:
- Identify the repeated lines of code and put them in a script file (say
buildsite.sh
). - Add that file somewhere on the PATH (usually,
/usr/bin
). - Make sure the file is executable with
chmod
(say,chmod a+x buildsite.sh
).
Now I can use the name of the file anywhere on my system to run those commands (so, anywhere I want to build my site, I just type buildsite.sh
).
2. Pinpoint Specific Processes
Every once in a while, when I’m running code, I do something that causes a server to silently continue to run in the background, or accidentally leave Postgres thinking it’s running when it’s not. In those cases, knowing how to debug which process is using which port on my machine becomes a major advantage.
In this situation, I know the right command line tools to help me out. I start with lsof -i:3000
to figure out which server is running and keeping me from starting another one. Once I find the correct process, I can kill
it without stopping other important processes.
Try it out in the command line (you’ll have to have some servers running for this one):
- Run
lsof -i:[portnumber]
. - Read the output and find the PID of the process listening on that port.
- Run
kill [PID]
on that process.
3. Decypher Installation Errors
No matter how excited I am to try a new piece of technology, I tend to get tripped up at some point during the installation process. I recently had an issue where npm
couldn’t install any packages globally; I would get “permission denied” errors, and when installing them with sudo
meant that I couldn’t run the packages as a normal user.
Luckily, I could read the error messages that npm gave me to figure out what had gone wrong: the directory where it wanted to install its packages had become read-only. In this case, it only took one quick command, chmod
, and I was back in business.
Try it out in the command line:
- Type
which
to figure out where on your computer npm was trying to install these programs ls -l
to see at what level that directory had become read-onlychmod g+w
andchgrp
to give yourself write access to that directory
Next Steps
These are just a few of the ways that knowing your command line can save you time and frustration.
If you want to learn even more about how you can harness the power of the command line for faster dev time, join us on campus for my upcoming Code 501 course! Learn more »