I started up my coding journey a little more than two weeks ago:
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, which I've chosen as my first real coding resource, and at the recommendation of the author:
...I spent the last couple of weeks familiarizing myself with Terminal via the book's Appendix A: Command Line Crash Course.
And, guess what?
I can now say that I'm officially "a barely capable shell user."
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.
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) there's a small typo by way of a missed output:
... 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.
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 –
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
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.
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:
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!
And while this didn't really have any use to me, it was amusing.
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à!
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.
I think that this post would be very helpful because it gives what commands other devs use the most:
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?
As I said, I've been leaning pretty heavily on
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.
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!🐍🐍