DEV Community

Cover image for My Linux Learning Journey: From Clueless to Confident
Jaiwardhan joshi
Jaiwardhan joshi

Posted on

My Linux Learning Journey: From Clueless to Confident

๐Ÿง From Windows to Linux: My 20-Day Terminal Transformation


๐Ÿ“… Week 1: Terminal Fundamentals (AKA "Why did I do this to myself?")


๐Ÿ”ฅ Day 0: The Great Linux Installation Adventure (AKA "The Nuclear Option")

After months of contemplating, I finally decided to take the plunge. Not a safe dual-boot setup like a sensible person โ€” nope, I went full nuclear and completely wiped Windows to install Fedora.

Narrator voice: This was either the bravest or stupidest decision of his life.

My friends thought I'd lost my mind. "Why not just dual boot?" they asked. "What if you need Windows for something?" But I knew myself too well โ€” if I had Windows as a safety net, I'd never actually learn Linux. I'd just boot back to Windows the moment things got difficult.

So there I was, staring at the Fedora installer with the "Format entire disk" option selected. My finger hovered over the confirm button for what felt like an eternity. This wasn't just changing operating systems โ€” this was burning bridges. No going back. No safety net.

The moment I clicked "Confirm," I felt a mix of terror and exhilaration. It was like jumping out of a plane without knowing if your parachute would work. The progress bar slowly filled up, erasing years of Windows familiarity and replacing it withโ€ฆ the unknown.

Why Fedora instead of Ubuntu?
Honestly, I wanted to make it even more challenging for myself. Ubuntu felt too "beginner-friendly" โ€” I wanted to jump into the deep end. Plus, Fedora's bleeding-edge packages and Red Hat connection seemed appealing for someone who wanted to understand enterprise Linux.

The installation went surprisingly smooth, but that first boot into Fedora? Pure anxiety. No familiar Windows desktop, no safety blanket. Just GNOME staring back at me, basically saying "Welcome to your new life, hope you know what you're doing!"

Best decision I ever made. The lack of escape route forced me to actually learn instead of giving up when things got tough.


๐Ÿ’ป Day 1: First Contact with the Terminal

Opened the terminal and justโ€ฆ stared. That blinking cursor felt like it was mocking me. I knew I needed to learn this, but where do you even start?

Spent 10 minutes reading documentation about basic navigation. Then fired up Claude (yes, I'm admitting it โ€” I needed help) and bombarded it with questions:

โ€ข "What does pwd actually do?" 
โ€ข "Why is it called pwd?" 
โ€ข "Is this normal?"
Enter fullscreen mode Exit fullscreen mode

The Q&A session was embarrassing but necessary. I'd read something in the docs, try it, then immediately quiz Claude about edge cases:

โ€ข "What happens if I cd to a directory that doesn't exist?" 
โ€ข "Can I break something with pwd?"
Enter fullscreen mode Exit fullscreen mode

Finally understood that I literally couldn't get lost if I could always ask "where am I?" Genius.

The terminal felt like a foreign country where I didn't speak the language. Every command was a leap of faith. I kept Alt+Tab-ing back to Firefox to double-check that what I was doing was safe. "Can pwd break my system?" Spoiler: it can't, but anxiety doesn't care about logic.

๐ŸŽฏ Victory: By the end of the day, I could navigate to my home directory without panicking. Small victory, but it felt huge.


๐Ÿ—‚๏ธ Day 2: The Great Directory Exploration

Today was all about cd and ls. Sounds simple, right? Wrong.

I created like 20 test directories just to practice moving around. My home folder looked like a maze by the end of the day:

test1, test2, nested/deep/folders/why/did/i/do/this
Enter fullscreen mode Exit fullscreen mode

The cd - command blew my mind. I spent way too long just bouncing between two directories going "this is magic!" My roommate probably thought I'd lost it.

โŒ First Major Mistake:
Got overconfident and tried ls -R on my root directory. My terminal exploded with text. I panicked and closed the terminal thinking I'd broken something. Turns out it was just showing meโ€ฆ everything. Note to self: don't do that again.

Started experimenting with ls flags like I was unlocking achievements:

โ€ข ls -l for long format
โ€ข ls -a for hidden files  
โ€ข ls -la for both
โ€ข ls -lah for human-readable sizes (life-changing!)
Enter fullscreen mode Exit fullscreen mode

The concept of "hidden" files starting with dots was mind-blowing. My system had been hiding stuff from me this whole time! .bashrc, .vimrc, .config โ€” there was a whole secret world of configuration files I never knew existed.


๐Ÿ“ Day 3: Directory Creation Madness

Created my project structure today. Well, tried to. Failed spectacularly the first time because I didn't know about the -p flag.

Me: "mkdir coding/java/projects"
Terminal: "No such file or directory"
Me: "BUT I WANT TO CREATE IT"
Terminal: "No."
Enter fullscreen mode Exit fullscreen mode

Back to the docs. Found out about -p. Mind = blown. Spent the next hour creating unnecessarily nested directory structures just because I could.

Also discovered symbolic links. Created shortcuts to everything. My desktop was a mess of symbolic links to directories I'd probably never use again. But hey, I learned something!

๐Ÿค” Confusion Point:
The difference between hard links and symbolic links confused me for way too long. "What do you mean a file can exist in multiple places?" I kept creating test files and linking them everywhere, then deleting the original just to see what would happen to the links.


๐Ÿ“„ Day 4: File Manipulation Chaos

Discovered the touch command and went absolutely nuts. Created hundreds of test files. My directories looked like a digital tornado had hit them.

The file command was a game-changer. I kept creating random files and checking their types:

โ€ข "What's this one?" 
โ€ข "What about this one?" 
Enter fullscreen mode Exit fullscreen mode

I was like a kid with a new toy.

๐Ÿ’ฅ Epic Fail:
cat worked great until I tried it on a massive log file. My terminal became a waterfall of text. Learned about less the hard way. This is why we can't have nice things.

๐Ÿ” Key Discoveries:

โ€ข head and tail for viewing file beginnings/endings
โ€ข tail -f for following log files in real-time (mind-blowing!)
โ€ข stat command made me feel like a digital detective
Enter fullscreen mode Exit fullscreen mode

๐Ÿ“‹ Day 5: Copy-Paste Mayhem

Thought I understood cp until I tried to copy a directory. Failed. Googled. Found out about -r. Spent the rest of the day copying entire directory trees around just to watch it work.

โš ๏ธ First Real Mistake:
Overwrote an important file. Panic mode activated. Discovered the -i flag exists. Now I use it religiously. Trust but verify, people.

The mv command was deceptively simple until I realized it's used for both moving AND renaming files. "Why is rename called move?" I asked the void. The void didn't answer, but Stack Overflow did.

๐Ÿ’ก Pro Tips I Learned:

โ€ข Always use -v for verbose output
โ€ข Trailing slashes matter: cp file.txt directory/ vs cp file.txt directory
โ€ข The concept of "everything is a file" started to click
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”’ Day 6: Permission Anxiety

Those permission strings looked like hieroglyphics. rwxr-xr-x might as well have been ancient Egyptian.

Spent 2 hours with the documentation trying to decode them. Finally got it, but then discovered there are TWO ways to change permissions. Because of course there are.

โœจ The Eureka Moment:
The numeric system made sense once I understood it was just binary math:

โ€ข 4 for read
โ€ข 2 for write  
โ€ข 1 for execute
โ€ข Add them up: 7 = read+write+execute
Enter fullscreen mode Exit fullscreen mode

But then I discovered the symbolic method: chmod u+x file.txt. Way more intuitive than remembering that 755 means rwxr-xr-x.

The sudo command felt like having a superpower, but also terrifying. "With great power comes great responsibility" took on new meaning.


๐ŸŽญ Day 7: The umask Mystery

This one almost broke me. The documentation said umask "sets default permissions" but that's NOT what it does. It REMOVES permissions from defaults.

Had to ask Claude like 10 different questions:

โ€ข "But WHY does it subtract?" 
โ€ข "What are the defaults?" 
โ€ข "Who decided this was a good idea?"
Enter fullscreen mode Exit fullscreen mode

๐Ÿง  The Click:
Finally understood it's a mask, not a setter. If I want files to be 644 by default, I set umask to 022. Why? Because 666 - 022 = 644. My brain hurt.


๐Ÿ“… Week 2: The Pipe Dreams and Modal Nightmares


๐Ÿ”€ Day 8: Redirection Revelation (And Existential Crisis)

I/O redirection felt like learning a new language. > vs >> confused me for way too long. Accidentally overwrote a file I wanted to keep. Lesson learned the hard way.

And thenโ€ฆ pipelines. Oh god, pipelines.

The first time someone explained that ls | grep txt was "piping" output from one command to another, I had what can only be described as a philosophical breakdown. I'm sitting there at 2 AM, staring at my terminal, wondering:

"What is the meaning of life? Why am I sending the output of one program to become the input of another? Is this what Unix philosophy means? Are we all just data flowing through pipes?"

I spent three hours trying to understand:

cat file.txt | grep "error" | sort | uniq -c | sort -nr
Enter fullscreen mode Exit fullscreen mode

By the end I was questioning everything. Not just Linux - EVERYTHING.

My roommate found me at 3 AM muttering "everything is pipes" while staring at the ceiling. I tried to explain that:

ps aux | grep firefox | awk '{print $2}' | xargs kill
Enter fullscreen mode Exit fullscreen mode

was basically the circle of life, but he just backed away slowly.

๐ŸŒŠ The Existential Dread:
Every command was a pipe. Every output was someone else's input. We're all just processes in the great pipeline of existence.


๐Ÿšซ Day 9: Error Handling Headaches

File descriptors. Who thought numbered streams were a good idea?

โ€ข 2> for errors
โ€ข 1> for output
Enter fullscreen mode Exit fullscreen mode

The 2>&1 syntax looked like line noise. Took me forever to understand it's literally "redirect stderr to wherever stdout is going."

๐Ÿคฏ Philosophy Crisis Continued:
Why do we have separate channels for output and errors? Is this a metaphor for human communication? Are we all just sending our thoughts to stdout and our anxieties to stderr?

I tried to explain to my girlfriend that command 2>/dev/null was basically the digital equivalent of ignoring your problems, but she just asked if I was okay.

๐ŸŽฎ Game Changer:
Discovered tee and felt like I'd found a cheat code. Watch output AND save it? Revolutionary.


๐Ÿƒ Day 10: Wildcard Madness

Wildcards are dangerous. I learned this when rm *.txt deleted more files than I expected. Test directories are your friend, people.

๐Ÿ˜ฑ The Scare:
The * wildcard seemed straightforward until I tried rm * in the wrong directory. Thank god for test folders. Watching an entire directory disappear in milliseconds was both terrifying and educational.

๐ŸŽฏ Pattern Matching Magic:

โ€ข [aA]* to match files starting with 'a' or 'A'
โ€ข [0-9]* for files starting with numbers
โ€ข [!0-9]* for files NOT starting with numbers
Enter fullscreen mode Exit fullscreen mode

๐Ÿ‘ป Space Nightmare:
Discovered the dangers of spaces in filenames. "My File.txt" broke everything. learned about quoting: "My File.txt" or My\ File.txt.


๐Ÿ” Day 11: Command Investigation

type command opened my eyes. Turns out half the commands I thought were built-ins were actually aliases. Mind blown.

Created so many aliases I forgot what the original commands were:

alias ll='ls -la'
Enter fullscreen mode Exit fullscreen mode

was life-changing. Now I can't use a system without it.

๐Ÿ‘ฅ Best Friends:

โ€ข history + grep became my search tool
โ€ข which showed me where executables lived
โ€ข man became my documentation buddy
Enter fullscreen mode Exit fullscreen mode

The history command revealed embarrassing patterns. How many times had I typed "ls"? The computer was keeping track of my mistakes, and they wereโ€ฆ numerous.


โš”๏ธ Day 12: Vim โ€” The Final Boss

Everyone warned me about vim. I thought they were exaggerating. They weren't.

๐ŸŽฌ First Attempt:

vim test.txt
Enter fullscreen mode Exit fullscreen mode

The file opened. I started typing. Everything seemed normal. Then I tried to save. Ctrl+S? Nothing. Right-click? No menu. What fresh hell was this?

Twenty minutes later, I found myself googling "how to exit vim" like every other developer in history. The Stack Overflow answer showed :q! and I felt both shame and solidarity.

๐Ÿ  The Trap:
I was trapped in digital purgatory. The cursor just sat there, blinking mockingly. I felt like I was in a horror movie where the house won't let you leave.


๐ŸŽญ Day 13: The Modal Madness Begins

The concept of "modes" broke my brain. Why can't I just type and have it appear? Why do I need to press 'i' to insert text?

Forced myself to use hjkl for movement. Disabled arrow keys like a masochist. My productivity plummeted to levels I didn't know were possible.

๐Ÿ’ƒ The Dance:
My coding sessions became elaborate dances:

Escape, h, h, j, i, type, Escape, l, l, l, a, type more
Enter fullscreen mode Exit fullscreen mode

I felt like I was playing some weird terminal instrument, not editing text.


๐Ÿ’ก Day 14: The Lightbulb Moment

Something clicked overnight. Maybe it was Stockholm syndrome, but I started to see the patterns.

โœจ First Magic Moment:
The ciw command (change inner word) was my first "holy shit" moment. I could delete a word and immediately start typing the replacement.

๐Ÿ“ The Grammar:
My brain started to understand vim's grammar:

โ€ข c for change
โ€ข i for inside  
โ€ข w for word
โ€ข c + i + " = change inside quotes
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”ฎ Day 15: The Addiction Begins

I was supposed to move on to other Linux topics, but vim had its claws in me.

๐Ÿ†• New Discoveries:

โ€ข dd to delete lines
โ€ข yy to copy ("yank")
โ€ข p to paste
โ€ข Visual mode with v
Enter fullscreen mode Exit fullscreen mode

The visual mode blew my mind. Select with keyboard precision, then operate on the selection.


๐Ÿฐ Day 16: Vim Rabbit Hole

I wasn't supposed to still be learning vim, but I couldn't stop.

๐Ÿง™ Wizard Moments:

โ€ข Search and replace: :%s/old/new/g
โ€ข With confirmation: :%s/old/new/gc
โ€ข The registers system: "ay to yank into register 'a'
Enter fullscreen mode Exit fullscreen mode

I spent two hours doing search and replace operations, cackling like a maniac.


โš™๏ธ Day 17: Configuration Madness

Found out about .vimrc and went completely overboard.

๐Ÿ”ง My Setup:

set number
syntax on
set autoindent
inoremap jj <Esc>
Enter fullscreen mode Exit fullscreen mode

The jj to escape mapping was life-changing. No more reaching for the escape key.


๐ŸฅŠ Day 18: Vim vs The World

Started using vim for everything. My friends thought I'd joined a cult. "Just use VS Code," they said. But they didn't understand.

I tried to explain the elegance of:

โ€ข cit (change inside tags)
โ€ข gqip (reformat paragraph)
Enter fullscreen mode Exit fullscreen mode

They looked at me like I was speaking ancient Greek.


๐Ÿ˜… Day 19: The Humbling

Tried to show off my vim skills to a friend. Did fancy navigation, text manipulationโ€ฆ then couldn't figure out how to save and exit.

My brain blanked. Was it :wq? :x? ZZ? Vim had humbled me in front of witnesses.

๐Ÿ“š Lesson:
Vim confidence is fragile.


๐Ÿง˜ Day 20: Vim Zen (Almost)

Two weeks into vim, I was finally comfortable. hjkl had become second nature.

๐Ÿ† The Real Victory:
I edited a config file from start to finish without thinking about commands. My fingers just knew what to do.


๐ŸŽฏ The Real Takeaways

โœ… What I Learned:

โ€ข Navigate filesystem without panic  
โ€ข Use wildcards safely  
โ€ข Exit vim without Googling  
โ€ข Create useful aliases  
โ€ข Understand Linux documentation (sort of)  
Enter fullscreen mode Exit fullscreen mode

๐Ÿšง What I'm Still Learning:

โ€ข Advanced bash scripting
โ€ข System administration
โ€ข The deeper mysteries of Unix philosophy
Enter fullscreen mode Exit fullscreen mode

๐Ÿง  Key Insights:

1. Documentation is hard โ€” Written for people who already know
2. Ask questions โ€” Someone always knows the answer
3. Practice safely โ€” Test directories save lives
4. Vim is worth it โ€” But hate it first
5. Linux users aren't elitist โ€” The tools really are powerful
6. Existential crises are normal โ€” Unix philosophy is deep
Enter fullscreen mode Exit fullscreen mode

๐Ÿš€ Why This Matters

I'm not trying to teach you Linux โ€” there are better resources for that. This is just my honest experience going from GUI-dependent to terminal-comfortable in 20 days.

The hardest part wasn't learning commands โ€” it was changing my mindset. Windows taught me to fear the command line. Linux taught me to embrace it.

Was it worth nuking Windows?
Absolutely. Would I recommend it to everyone? Probably not. But for me, burning the bridges was the only way to cross the river.

The journey continues. I'm still learning, still questioning the nature of pipes and streams, still occasionally googling basic commands. But now I know enough to know how much I don't know โ€” and that's progress.


P.S. โ€” I still occasionally Google "how to exit vim" when I panic. We're all human. ๐Ÿคทโ€โ™‚๏ธ


Top comments (0)