a barely capable shell user
Tags: beginners, terminal, commandline
Published: 2019-01-21 04:07:51

---
title: a barely capable shell user
published: true
description: My experience learning command line prior to doing any coding.
tags: beginner, terminal, commandline
cover_image: https://cl.ly/d0719166bae4/download/Image%202019-01-20%20at%2011.05.36%20PM.png
series: a beginner's journey into python
---
I started up my coding journey a little more than two weeks ago:

{% link https://dev.to/michaeltharrington/baby-steps-44fd %}

But, admittedly those baby steps into Python have yet to materialize into much. I suppose I'm more crawling than walking yet. 

But hey, crawling at least implies I'm doing _something_, and I am! 

I began reading [Learn Python the Hard Way](https://learnpythonthehardway.org/python3/intro.html), which I've chosen as my first real coding resource, and at the recommendation of the author:

![warning](https://cl.ly/a639b32a65fc/download/Image%2525202019-01-17%252520at%25252010.22.59%252520PM.png)

...I spent the last couple of weeks familiarizing myself with Terminal via the book's [Appendix A: Command Line Crash Course](https://learnpythonthehardway.org/python3/appendixa.html). 

And, guess what?
 
🥁🥁🥁...

I can now say that I'm officially "a barely capable shell user." 

🎉🎉🎉

## how I got here  

Avoiding the urge to plow ahead, I listened to the author and wrote out a stack of note cards with commands & their corresponding definitions. While I didn't understand every definition at the time, I quizzed myself on them until I could name them forward and backward. 

![picture of notecards](https://cl.ly/9bbd65e9fea6/download/Image%202019-01-18%20at%202.16.52%20PM.png)
<figcaption>terminal terminology... xargs is flipped wrong-side up there! 😛<figcaption>

After I had my note cards down, I followed each lesson as closely as I could, typing in each individual command, double checking my inputs & outputs, and trying to figure out the quirks of the system. I paid close attention to those lessons and did my best to grasp what each command was doing before moving on to new material. 

I'm actually willing to bet that in [Exercise 6: List Directory (ls)](https://learnpythonthehardway.org/python3/appendix-a-cli/ex6.html) there's a small typo by way of a missed output:

![grape?](https://cl.ly/271d8ba11a7e/download/Image%202019-01-17%20at%2010.51.38%20PM.png)

... I believe the word "grape" should be listed there.🍇

Haha, I don't mean to be one of _those_ folks.😛 But still, something I'm learning is that the devil is in the details.😈 

Mistyping a command means it doesn't work... or worse, it does something you don't want it to. Not knowing a command means you gotta look it up, and that slows you down. Taking the time to learn things "the hard way" (i.e. using focus and memorization) really _does_ pay off.

Having said that, I don't mean to make the terminal sound so cryptic. In fact, that's another thing... now that I've typed a few commands in, the terminal really doesn't seem so scary or difficult anymore. 

## what I think the terminal is all about

The terminal offers a text-based way of controlling things on your computer which you might typically control through the UI. 

For instance, I can create folders `mkdir`, change between them `cd`, see what's inside them `ls`, view files inside them `less`, and so forth. There have been a few relatively more _advanced_ things I've done – `pushd` & `popd` – but I've not created any real logic yet, just found ways to dance in and out of folders without lifting my hands from the keyboard. Admittedly, I'm not very graceful yet – I've typed `pwd` & `ls` more than you can imagine – but hey, I'm learning.

Perhaps in time the terminal will become more to me, but this is all I'm seeing it as for the moment.

## a few fun things I've done in the terminal

One of the first fun logic finds I stumbled upon was when I copied a folder called "test" into itself using the command `copy -r test test`. Here's what happened:

![infinite test folders](https://cl.ly/a8cf1eb6ce61/Image%2525202019-01-20%252520at%25252010.14.08%252520PM.png)

So basically, the folder copied inside itself infinitely. Best thing about that was this is kinda of what I'd hoped what would happen. 😎 I had to go check it out!

![infinite test 2](https://cl.ly/a034b7a524de/download/Image%202019-01-20%20at%2010.21.47%20PM.png)

And while this didn't really have any use to me, it _was_ amusing.

![infinite mirrors](https://media.giphy.com/media/iNwXHhkqlfOla/giphy.gif)

Another thing I enjoyed toying with was `less`. As soon as I realized I could preview a text file in the terminal, I was off to get me some ASCII art. And voilà!

![yoda](https://cl.ly/961aca02fbc0/Image%2525202019-01-20%252520at%25252010.29.52%252520PM.png)

Yep, definitely nerding out a bit...

One other cool thing I did at the suggestion of a fellow DEV-er was to calculate which commands I used the most.

{% devcomment 84c9 %}

Good suggestion, Valentin! This was definitely a great post for checking out what commands real devs use the most. Plus, the command needed to calculate my own most used commands is right there in the post.

So, what commands have I been bashing in the most?

![my most used commands](https://cl.ly/6ac1d9960c79/download/Image%202019-01-20%20at%2010.44.03%20PM.png)

As I said, I've been leaning pretty heavily on `ls` & `pwd` right now. Maybe in the future I'll be a little less paranoid about where I am in the terminal, but right now I'll keep those two close by, haha.

Something else this last command revealed to me is that you can type formulas into the terminal... interesting.

## slow and steady

I've been moving at a relatively slow pace here, but I do think I made the right decision to hang back and learn a little bit of bash first. After all, I hear slow and steady pays off.🐢🐢 

Now that I've got a bit of terminal terminology under my belt, I feel confident that it's time to move on to some actual coding. Python, here we come!🐍🐍