Surviving Week 1: Mastering Linux, Git, and My First Bash CLI App

Table of contents
- What Actually Went Down This Week
- Why I Had to Start Here (And Why It Sucked at First)
- Linux — The Good, The Bad, The WTF Moments
- Git — Fighting With Version Control
- Project — My Ugly but Working Bash CLI To-Do List
- Resources I Actually Used (with links)
- GitHub Repos Where I Dumped My Madness
- What’s Next — The Stuff I Know I Need to Stop Avoiding
- Follow Along
Cloud & DevOps Journey — Blog 1
What Actually Went Down This Week
I jumped headfirst into Linux and Git, trying not to break my AWS EC2 Ubuntu server or lose my mind.
By the end of the week, I barely had:
A live Ubuntu server running on AWS without frying my free tier
Some idea of how to use Linux’s built-in docs without rage-quitting (
man
,tldr
,--help
)Managed to safely poke around the filesystem with
sudo
without deleting everythingInstalled and removed software (and yes, broke a few dependencies along the way)
Set up Git, connected to GitHub — after some painful SSH key failures
Built a simple Bash CLI To-Do list that actually works (mostly)
Why I Had to Start Here (And Why It Sucked at First)
Linux is the backbone of almost everything DevOps. If I can’t move around the terminal confidently, I’m just a clueless kid pretending. Git is the version control glue—mess it up, and your code’s history is a disaster waiting to happen.
This week, I realized I was a complete noob at both. But no way around it, had to get my hands dirty.
Linux — The Good, The Bad, The WTF Moments
01 — Setting Up EC2
Spent way too long figuring out AWS billing alerts — don’t wanna get charged accidentally.
Launched a t2.micro Ubuntu server on AWS Elastic Cloud Compute (EC2) and immediately struggled with SSH keys.
Learned the hard way:
chmod 400 my-key.pem
is not optional. Otherwise, connection just fails silently.Basic commands like
whoami
,uname -a
, anduptime
actually helped me feel less lost.
02 — RTFM, MAN, TLDR, HELP — The Docs I Almost Ignored
man ls
andtldr chmod
saved me tons of Googling.But honestly, sometimes these docs feel like they’re written by aliens. Had to try commands myself a hundred times to understand them.
Still confused about some options — but that’s fine. Learning takes time.
03 — File System & Superuser — Walking the Minefield
Navigated
/
,/home
,/etc
,/var
like a tourist lost in a big city.Used
cat
,less
, andtail -f
to peek inside files — felt like a hacker watching logs.sudo
made me nervous. Almost deleted an important file because I didn’t fully understand the command. Almost panicked, but caught myself.Checked
/var/log/auth.log
just to know what’s happening behind the scenes.
04 — Package Management — Installing, Breaking, Fixing
Ran
sudo apt update
andinstall nginx
— it worked, but then I broke something by removing a package I didn’t fully understand.Had to fix broken dependencies — Linux isn’t always friendly.
Tried midnight commander (
mc
) — surprisingly handy for visual navigation, but still felt clunky.
Git — Fighting With Version Control
Installing & Configuring Git
sudo apt install git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Connecting to GitHub — The SSH Hell Generating SSH keys was simple, but adding them to GitHub and actually connecting took multiple tries.
I kept getting “Permission denied (publickey)” errors and spent quite some time debugging permissions and SSH agent issues.
Eventually figured it out and it works, for now at least.
Commands I Used
git init
git clone <repo-url>
git status
git add <file>
git commit -m "message"
git push origin main
git pull origin main
git revert
git reset
git cherry-pick
git rebase
Deliberately broke stuff in my own repo to create merge and rebase conflicts, then fixed them and got everything back up and running.
Project — My Ugly but Working Bash CLI To-Do List
This week’s project was a basic Bash CLI-based To-Do List
What It Does
Add, list, mark done, and delete tasks
Saves everything in plain text files (
tasklist.txt
,taskdone.txt
) — super basic but functional
How To Run It
chmod +x todo-list.sh
./todo-list.sh
Menu Options:
- 1
Add Task
- 2
List Pending
- 3
Mark Done
- 4
List Done
- 5
Delete Task
- 6
Exit
What I Learned the Hard Way
Bash control flow sucks until it doesn’t — loops and
case
statements’ syntax took me a while to wrap my head around.File I/O with
grep
,sed
, andnl
felt like black magic. Broke my script multiple times trying to parse lines correctly.Tried Vim editing for the first time, it was painful but necessary.
Git commits and pushes: don’t skip committing often or you’ll regret it.
Input validation and retry loops made the script less crash-prone — but it still crashes sometimes. Whatever, I’ll fix it later.
Resources I Actually Used (with links)
Linux Journey — concise, free lessons for beginners. Helpful for fundamentals and quick refreshers.
https://linuxjourney.com/TrainWithShubham — Linux For DevOps (YouTube video) — practical, Hindi-first walkthroughs I followed.
https://www.youtube.com/trainwithshubhamLinux Upskill Challenge — month-long hands-on challenge focused on server admin & CLI skills. Great for structured practice.
https://linuxupskillchallenge.org/Git (official docs) — the canonical reference for commands, config, and the user manual. Always keep this bookmarked.
https://git-scm.com/docAtlassian Git Tutorials — practical tutorials on branching, merging, workflows and common gotchas. Good for workflows beyond basics.
https://www.atlassian.com/git/tutorialsChai aur Code — Complete Git & GitHub (YouTube video) — a clear Hindi walkthrough I rewatched when I needed a walkthrough to follow along.
https://www.youtube.com/watch?v=q8EevlEpQ2A
GitHub Repos Where I Dumped My Madness
Main journey log: Cloud + DevOps Journey
Linux CLI practice: Linux CLI Exercises
Git basics & experiments: Git Experiments
Week-1 Bash project code: CLI To-Do List
What’s Next — The Stuff I Know I Need to Stop Avoiding
File permissions & ownership (
chmod
,chown
) — scares the hell out of meProcess management (
ps
,kill
,htop
) — want to stop killing random processes accidentallyAdvanced Git workflows — because right now, I’m basically a Git caveman
Shell scripting beyond the basics — want to write stuff that doesn’t break after 2 minutes
Follow Along
LinkedIn: Shaurya Dhingra
GitHub — Cloud & DevOps Journey repo: shauryad01/cloud-devops-journey
Subscribe to my newsletter
Read articles from Shaurya Dhingra directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Shaurya Dhingra
Shaurya Dhingra
DevOps & Cloud learner, currently in the deep end with Linux, Git, and AWS. BTech CSE student breaking things on purpose (and learning how to fix them). Exploring real infrastructure, automation, and the tools that keep modern systems running.