<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dan Higgins</title>
    <description>The latest articles on Forem by Dan Higgins (@higgs182092).</description>
    <link>https://forem.com/higgs182092</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3017736%2F08c31e32-9f5e-4a08-ad34-c6f13be3af2c.png</url>
      <title>Forem: Dan Higgins</title>
      <link>https://forem.com/higgs182092</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/higgs182092"/>
    <language>en</language>
    <item>
      <title>Day 1 - Linux for DevOps: The Mindset Shift</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Sun, 23 Nov 2025 20:56:21 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-1-linux-for-devops-the-mindset-shift-5ll</link>
      <guid>https://forem.com/higgs182092/day-1-linux-for-devops-the-mindset-shift-5ll</guid>
      <description>&lt;p&gt;Welcome to Day 1 of 30 Days of Linux for DevOps!&lt;br&gt;
If you’re here, you already know something important:&lt;/p&gt;

&lt;p&gt;DevOps isn’t about tools… it’s about knowing what’s happening under the hood.&lt;br&gt;
And the engine under almost every cloud service, container, CI/CD runner, and Kubernetes node is Linux.&lt;/p&gt;

&lt;p&gt;Today isn’t about memorizing commands.&lt;br&gt;
It’s about building the DevOps mindset that connects Linux → Cloud → Automation → Systems thinking.&lt;/p&gt;

&lt;p&gt;So let’s kick things off.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What makes Linux for DevOps different from Linux for beginners?&lt;/li&gt;
&lt;li&gt;Today’s Goal: Learn how DevOps engineers observe a system&lt;/li&gt;
&lt;li&gt;See where you are (DevOps style)&lt;/li&gt;
&lt;li&gt;Navigate like you're working in production&lt;/li&gt;
&lt;li&gt;See what your system is doing right now&lt;/li&gt;
&lt;li&gt;View logs like an SRE&lt;/li&gt;
&lt;li&gt;Today’s DevOps mini challenge&lt;/li&gt;
&lt;li&gt;Day 1 Wrap Up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-makes-linux-for-devops-different-from-linux-for-beginners?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes Linux for DevOps different from Linux for beginners?
&lt;/h2&gt;

&lt;p&gt;Beginners learn commands so they don’t feel lost.&lt;br&gt;
DevOps engineers learn commands because they need to debug, automate, optimize, and control systems at scale.&lt;/p&gt;

&lt;p&gt;Here’s the difference:&lt;/p&gt;

&lt;p&gt;Beginner:&lt;/p&gt;

&lt;p&gt;“ls shows files.”&lt;/p&gt;

&lt;p&gt;DevOps Engineer:&lt;/p&gt;

&lt;p&gt;“ls -lh tells me file sizes, permissions, ownership, and helps me spot weird stuff in log directories.”&lt;/p&gt;

&lt;p&gt;Same command.&lt;br&gt;
Different purpose.&lt;br&gt;
Different mindset.&lt;/p&gt;

&lt;p&gt;&lt;a id="todays's-goal:-learn-how-devops-engineers-observe-a-system"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s Goal: Learn how DevOps engineers observe a system
&lt;/h2&gt;

&lt;p&gt;Before you automate anything, deploy anything, or build anything…&lt;br&gt;
you must know how to look at a system and understand what’s going on.&lt;/p&gt;

&lt;p&gt;So today we cover the DevOps essentials:&lt;/p&gt;

&lt;p&gt;✔ What's running&lt;br&gt;
✔ What's using resources&lt;br&gt;
✔ How to find logs&lt;br&gt;
✔ How to navigate like a pro&lt;/p&gt;

&lt;p&gt;Let’s jump in.&lt;/p&gt;

&lt;p&gt;&lt;a id="see-where-you-are-(devops-style)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  See where you are (DevOps style)
&lt;/h2&gt;

&lt;p&gt;Forget plain pwd.&lt;br&gt;
We add context:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8rdg08oueje8d3q38qh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8rdg08oueje8d3q38qh.png" alt=" " width="296" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why this matters:&lt;br&gt;
Every server, container, or Kubernetes node could be different.&lt;br&gt;
A DevOps engineer always checks:&lt;/p&gt;

&lt;p&gt;Who am I? (User, root, restricted?)&lt;/p&gt;

&lt;p&gt;Where am I? (Directory? Partition? Container?)&lt;/p&gt;

&lt;p&gt;What machine am I on? (Production? Staging? EC2?)&lt;/p&gt;

&lt;p&gt;This prevents mistakes like… deploying to the wrong environment.&lt;br&gt;
(I'm just glad it's in the sandbox!)&lt;/p&gt;

&lt;p&gt;&lt;a id="navigate--like-you're-working-in-production"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigate like you're working in production
&lt;/h2&gt;

&lt;p&gt;Skip the basics — let’s use flags DevOps engineers actually use:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfwu5t6iqddzwmor9p2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfwu5t6iqddzwmor9p2s.png" alt=" " width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why?&lt;br&gt;
-a shows hidden files (very important for configs).&lt;br&gt;
-h shows sizes you can read (1K, 10M, 1G).&lt;br&gt;
-l shows ownership + permissions.&lt;/p&gt;

&lt;p&gt;This is how you spot things like:&lt;/p&gt;

&lt;p&gt;log files exploding in size&lt;/p&gt;

&lt;p&gt;weird hidden scripts&lt;/p&gt;

&lt;p&gt;wrong ownership on app directories&lt;/p&gt;

&lt;p&gt;&lt;a id="see-what-your-system-is-doing-right-now"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  See what your system is doing right now
&lt;/h2&gt;

&lt;p&gt;This is where DevOps thinking really begins.&lt;/p&gt;

&lt;p&gt;✔ Check running processes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7iojepjk3zxbbl0gyrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7iojepjk3zxbbl0gyrr.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔ Live system view (your new best friend)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaq6o4fp7xgdgetxvceb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feaq6o4fp7xgdgetxvceb.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why this matters:&lt;br&gt;
When a service is slow, a pod is failing, or a CI runner is stuck —&lt;br&gt;
your first job is to observe system behavior.&lt;/p&gt;

&lt;p&gt;CPU spikes?&lt;br&gt;
Memory leak?&lt;br&gt;
Zombie processes?&lt;br&gt;
You’ll see it here.&lt;/p&gt;

&lt;p&gt;&lt;a id="view-logs-like-an-sre"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  View logs like an SRE
&lt;/h2&gt;

&lt;p&gt;Logs are where DevOps engineers spend half their life.&lt;br&gt;
Let’s get comfortable with them from Day 1.&lt;/p&gt;

&lt;p&gt;Try this in /var/log:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dv62mk3bxcslkawx2lr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dv62mk3bxcslkawx2lr.png" alt=" " width="605" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then open a log:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94q9ydf0fz6jr14emc4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94q9ydf0fz6jr14emc4q.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Real-time log streaming:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvj28kir206us5xd0gu6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvj28kir206us5xd0gu6.png" alt=" " width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how you troubleshoot:&lt;/p&gt;

&lt;p&gt;failing services&lt;/p&gt;

&lt;p&gt;permission issues&lt;/p&gt;

&lt;p&gt;network errors&lt;/p&gt;

&lt;p&gt;kernel events&lt;/p&gt;

&lt;p&gt;container crashes&lt;/p&gt;

&lt;p&gt;If you can read logs, you can fix anything.&lt;/p&gt;

&lt;p&gt;&lt;a id="today's-devops-mini-challenge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s DevOps mini challenge
&lt;/h2&gt;

&lt;p&gt;Create a simple “system snapshot” script and save it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo26pbwv1px0z7vqvynt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo26pbwv1px0z7vqvynt7.png" alt=" " width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6svz4cwks69ojezjf54i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6svz4cwks69ojezjf54i.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make it executable and run it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l1pzn040uora1zgnpwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l1pzn040uora1zgnpwo.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats — you just created your first DevOps-style diagnostic tool!&lt;/p&gt;

&lt;p&gt;&lt;a id="day-1-wrap-up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 1 wrap up
&lt;/h2&gt;

&lt;p&gt;Today you didn’t just learn some commands.&lt;br&gt;
You learned how DevOps engineers observe, analyze, and understand a system before doing anything else.&lt;/p&gt;

&lt;p&gt;This mindset will guide you through the next 29 days — and into real DevOps work.&lt;/p&gt;

&lt;p&gt;See you tomorrow for Day 2: “Navigating Logs Like an SRE.”&lt;/p&gt;

&lt;p&gt;Let’s keep building something real&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>careerdevelopment</category>
      <category>learning</category>
    </item>
    <item>
      <title>Week 1: Talking to the Cloud Like a Pro — Setting Up the AWS CLI on Windows</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Fri, 20 Jun 2025 19:55:02 +0000</pubDate>
      <link>https://forem.com/higgs182092/week-1-talking-to-the-cloud-like-a-pro-setting-up-the-aws-cli-on-windows-3355</link>
      <guid>https://forem.com/higgs182092/week-1-talking-to-the-cloud-like-a-pro-setting-up-the-aws-cli-on-windows-3355</guid>
      <description>&lt;p&gt;Hey cloud adventurers!&lt;/p&gt;

&lt;p&gt;Welcome to Week 1 of my new weekly series:&lt;br&gt;
“From Terminal to Cloud: My Linux + AWS Project Journey”&lt;br&gt;
Each week, I’ll share a hands-on AWS project (powered by Linux + the AWS Free Tier) to help cement my knowledge and build toward passing the AWS Solutions Architect Associate exam — and maybe help you do the same!&lt;/p&gt;

&lt;p&gt;But before we launch EC2s, wrangle S3 buckets, or ride CloudFront like a cowboy — we need to gear up with our most powerful tool:&lt;/p&gt;

&lt;p&gt;The AWS Command Line Interface (CLI)&lt;br&gt;
AKA the magic wand that lets you talk to AWS like a developer-ninja-architect hybrid.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why the AWS CLI?&lt;/li&gt;
&lt;li&gt;Step-by-Step: Installing the AWS CLI on Windows&lt;/li&gt;
&lt;li&gt;Step 4: Configure the CLI&lt;/li&gt;
&lt;li&gt;Test Your Setup&lt;/li&gt;
&lt;li&gt;Want This on Linux Too?&lt;/li&gt;
&lt;li&gt;What’s Next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="why-the-aws-cli"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the AWS CLI?
&lt;/h2&gt;

&lt;p&gt;If the AWS Console is the shiny showroom, the CLI is the garage with all the tools.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deploy stuff in seconds&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate backups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Control every AWS service from the command line&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look like a total legend in screenshots&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="step--by--step:-installing-the-aws-cli-on-windows"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step: Installing the AWS CLI on Windows
&lt;/h2&gt;

&lt;p&gt;Step 1: Download the installer&lt;/p&gt;

&lt;p&gt;Go to the official AWS CLI v2 download page and grab the Windows installer. &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" rel="noopener noreferrer"&gt;Link here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv3y4w4gq1x8a8cn2umq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv3y4w4gq1x8a8cn2umq.png" alt="Image description" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Run the installer&lt;/p&gt;

&lt;p&gt;Double-click the .msi file and click through the wizard like a seasoned wizard&lt;/p&gt;

&lt;p&gt;Step 3: Verify the install&lt;br&gt;
Pop open Command Prompt (cmd) or PowerShell and type aws --version&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqricl38vgadda71lxyo5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqricl38vgadda71lxyo5.png" alt="Image description" width="664" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="step-4:-configure-the-cli"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Configure the CLI
&lt;/h2&gt;

&lt;p&gt;You’ll need your AWS credentials. If you don’t have them yet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log into your AWS Console&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to IAM &amp;gt; Users&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new user (if needed) with Programmatic access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attach the policy AmazonS3FullAccess or AdministratorAccess (if you're just testing in the Free Tier)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the access keys safely&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then in your terminal, run aws configure&lt;/p&gt;

&lt;p&gt;It’ll ask for:&lt;/p&gt;

&lt;p&gt;AWS Access Key ID [None]: &lt;br&gt;
AWS Secret Access Key [None]: &lt;br&gt;
Default region name [None]: eu-west-1 (closest to me in Northern Ireland, and totally Free Tier supported!)&lt;br&gt;
Default output format [None]: json&lt;/p&gt;

&lt;p&gt;Once completed it will look like this when you next run the command&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxkbifp4ak31y5q4jrho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxkbifp4ak31y5q4jrho.png" alt="Image description" width="653" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="test-your-setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Your Setup
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9neqackzapc2o6czkyb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9neqackzapc2o6czkyb2.png" alt="Image description" width="716" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you see your account info, you're ready to roll! I've redacted mine - just in case!&lt;/p&gt;

&lt;p&gt;&lt;a id="want-this-on-linux-too?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Want This on Linux Too?
&lt;/h2&gt;

&lt;p&gt;I did this setup on Windows, but if you’d like a Linux walkthrough (especially from my Red Hat environment), just let me know in the comments or messages and I’ll happily whip one up!&lt;/p&gt;

&lt;p&gt;&lt;a id="what's-next?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Next week in Project 1, we’ll:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the CLI to create an S3 bucket&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload files to it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And even host a static website on it — with CloudFront swagger&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned, and if you’re following along, tag me and let’s build this AWS + Linux skill stack together!&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #Linux #AWSCLI #CloudComputing #DevOps #100DaysOfCloud #FromTerminalToCloud
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>aws</category>
      <category>cli</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day 5 of #30DaysRHCSAChallenge — The Sticky Bit Strikes Back</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Mon, 02 Jun 2025 19:32:29 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-5-of-30daysrhcsachallenge-the-sticky-bit-strikes-back-31md</link>
      <guid>https://forem.com/higgs182092/day-5-of-30daysrhcsachallenge-the-sticky-bit-strikes-back-31md</guid>
      <description>&lt;p&gt;Welcome to Day 5, where we enter the secret lair of Linux file permissions and uncover magical artifacts like SUID, SGID, and the legendary Sticky Bit.&lt;/p&gt;

&lt;p&gt;By the end of today, I half expected my Linux box to start chanting spells.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Today’s Lab of Doom&lt;/li&gt;
&lt;li&gt;Challenge Breakdown&lt;/li&gt;
&lt;li&gt;Spellbook of the Day&lt;/li&gt;
&lt;li&gt;What I Learned (aka Lessons from the School of Bashcraft)&lt;/li&gt;
&lt;li&gt;RHCSA Objectives Crushed Today&lt;/li&gt;
&lt;li&gt;TL;DR&lt;/li&gt;
&lt;li&gt;Coming Tomorrow — Day 6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="today's-lab-of-doom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s Lab of Doom
&lt;/h2&gt;

&lt;p&gt;I created shared directories. I tested who could delete what. I accidentally gave a file SUID powers and it felt like I’d handed a toddler the root password.&lt;/p&gt;

&lt;p&gt;&lt;a id="challenge-breakdown"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge Breakdown
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a shared folder for a group

&lt;ul&gt;
&lt;li&gt;Add the SGID bit so group inheritance works&lt;/li&gt;
&lt;li&gt;Set the Sticky Bit so users stop deleting each other’s stuff&lt;/li&gt;
&lt;li&gt;Play with SUID on files (but not for evil)&lt;/li&gt;
&lt;li&gt;Review file permissions like a digital detective&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a id="spellbook-of-the-day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Spellbook of the Day
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ycyzjxgjhb1s5btt18a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ycyzjxgjhb1s5btt18a.png" alt="Image description" width="675" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;mkdir /sysops_team - We're making a shared workspace — like a digital whiteboard everyone can write on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;chown :devops_team /sysops_team - Assigns the group ownership to devops_team, so all group members have access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;chmod 2775 /shared_team - This ensures any file created inside /sysops_team will automatically belong to devops_team, keeping things tidy and collaborative.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;chmod +t /sysops_team - Prevents team sabotage! Only the person who created a file (or root) can delete it, even though everyone can write in the directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;chmod u+s /usr/bin/passwd - This lets regular users change their passwords because passwd runs with root’s power, even though they’re not root. Use with caution!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ls -l /shared_team - The inspection tool! This reveals whether your SGID and Sticky Bit are set correctly, and lets you marvel at your sysadmin wizardry (or lack of in this case!)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a id="what-i-learned-(aka-lessons-from-the-school-of-bashcraft)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned (aka Lessons from the School of Bashcraft)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SGID = “Group loyalty forever!” Files created in that folder will inherit the group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sticky Bit = “You can’t delete my files, Karen.” Only the file owner (or root) can delete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SUID = “Run me as the file’s owner.” Mostly used on programs like passwd. Don't mess this up unless you're aiming for hacker-of-the-month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Watching ls -l change after each permission tweak is like checking the weather during a storm.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="rhcsa-objectives-crushed-today"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  RHCSA Objectives Crushed Today
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manage special permissions like SUID, SGID, and Sticky Bit&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand secure collaboration through group permissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Level up in terminal-based trust issues&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="tl;dr"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Today I learned that Linux file systems have more trust issues than my last team project in university. But at least chmod doesn’t ghost you.&lt;/p&gt;

&lt;p&gt;&lt;a id="coming-tomorrow---day-6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Coming Tomorrow — Day 6
&lt;/h2&gt;

&lt;p&gt;Mountains, Devices &amp;amp; Eternal Confusion&lt;br&gt;
(AKA: "Why does my USB drive disappear when I sneeze?")&lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>challenge</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day 4 of #30DaysRHCSAChallenge – Who Knew File Permissions Had More Drama Than a Reality Show?</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Sun, 01 Jun 2025 19:56:00 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-4-of-30daysrhcsachallenge-who-knew-file-permissions-had-more-drama-than-a-reality-show-197i</link>
      <guid>https://forem.com/higgs182092/day-4-of-30daysrhcsachallenge-who-knew-file-permissions-had-more-drama-than-a-reality-show-197i</guid>
      <description>&lt;p&gt;Today I faced the Linux filesystem like a cautious archaeologist discovering an ancient tomb… only the tomb had permissions issues, missing files, and a bash tantrum. &lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mission&lt;/li&gt;
&lt;li&gt;The Journey&lt;/li&gt;
&lt;li&gt;What even happened&lt;/li&gt;
&lt;li&gt;Lesson of the Day&lt;/li&gt;
&lt;li&gt;RHCSA Objectives Smashed&lt;/li&gt;
&lt;li&gt;Today I Learned&lt;/li&gt;
&lt;li&gt;Tomorrow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="mission"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mission
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Master file and directory permissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practice chmod, chown, umask&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not break the internet while doing it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="the-journey"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Journey
&lt;/h2&gt;

&lt;p&gt;Created a directory&lt;/p&gt;

&lt;p&gt;Gave our heroic dev some ownership&lt;/p&gt;

&lt;p&gt;Then came the dramatic moment: writing HTML into a file.&lt;/p&gt;

&lt;p&gt;I confidently typed and Bash exploded with bash: !: event not found!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dcdo4r7ltnzapwt5nmi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dcdo4r7ltnzapwt5nmi.png" alt="Image description" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="what-even-happened"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What even happened
&lt;/h2&gt;

&lt;p&gt;Turns out Bash thought ! meant "find a command from history" instead of just letting me express my hot take on cats.&lt;/p&gt;

&lt;p&gt;Also… I forgot to include the actual file name, so Bash tried to write into a directory. Double fail.&lt;/p&gt;

&lt;p&gt;&lt;a id="lesson-of-the-day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson of the Day
&lt;/h2&gt;

&lt;p&gt;Use single quotes when your string contains a '!'. File written. Permissions set. Cat lovers pleased. &lt;/p&gt;

&lt;p&gt;&lt;a id="rhcsa-objectives-smashed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  RHCSA Objectives Smashed
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Set file and directory ownership and permissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created and manipulated files in nested directories&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugged Bash behavior like a command-line therapist&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learned to never trust a ! inside double quotes&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a id="today-i-learned"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;chmod and chown are your best friends—and occasional drama queens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bash has feelings, especially about exclamation marks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always specify the full file path, or Bash gets confused and dramatic&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="tomorrow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tomorrow
&lt;/h2&gt;

&lt;p&gt;We dive into umask, default permissions, and why new files sometimes act like they’re born with an attitude.&lt;/p&gt;

&lt;p&gt;Follow the full series here: #30DaysRHCSAChallenge on &lt;a href="https://dev.to/dashboard"&gt;Dev.to&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yes, I'll probably make a sticker that says "Don't double quote your !"&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Day 3 of #30DaysRHCSAChallenge – Group Therapy (For Users, Not Me... Mostly)</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Sat, 31 May 2025 19:17:04 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-3-of-30daysrhcsachallenge-group-therapy-for-users-not-me-mostly-3je4</link>
      <guid>https://forem.com/higgs182092/day-3-of-30daysrhcsachallenge-group-therapy-for-users-not-me-mostly-3je4</guid>
      <description>&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Real World Problem&lt;/li&gt;
&lt;li&gt;Today’s Mission&lt;/li&gt;
&lt;li&gt;Commands I Used (and promptly typo'd the first three times)&lt;/li&gt;
&lt;li&gt;RHCSA Objectives Covered&lt;/li&gt;
&lt;li&gt;What I Learned Today&lt;/li&gt;
&lt;li&gt;Real Life Analogy Time&lt;/li&gt;
&lt;li&gt;Tomorrow’s Challenge Teaser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="the-real-world-problem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real World Problem
&lt;/h2&gt;

&lt;p&gt;"Why is this user part of six different groups? Are they building servers or starting a band?"&lt;/p&gt;

&lt;p&gt;If you've ever stared at the output of groups and thought,&lt;/p&gt;

&lt;p&gt;"Wait, what even is a 'secondary group'?"&lt;br&gt;
then today's your kind of chaos.&lt;/p&gt;

&lt;p&gt;&lt;a id="today's-mission"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s Mission
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Understand primary vs secondary groups (like best friends vs group chats you're stuck in)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create groups manually&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add users to one or more groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View group membership&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove users from groups without deleting the group or starting a system-wide rebellion&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="commands-i-used-(and-promptly-typo'd-the-first-three-times)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands I Used (and promptly typo'd the first three times)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2wk0gjkzpovo6m21hrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2wk0gjkzpovo6m21hrb.png" alt="Image description" width="605" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bonus spell: see all groups on the system:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qbhj7lej4wajvgzbl3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qbhj7lej4wajvgzbl3g.png" alt="Image description" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="rhcsa-objectives-covered"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  RHCSA Objectives Covered
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create and manage groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage user group memberships&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand primary and secondary group differences&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use commands like usermod, groupadd, groupdel, and gpasswd&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-i-learned-today"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned Today
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The primary group is like your day job. The secondary groups are your side hustles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;usermod -aG is your friend — forget the -a and you accidentally wipe all other group memberships &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;getent group feels like snooping on everyone’s backstage passes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="real-life-analogy-time"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Life Analogy Time
&lt;/h2&gt;

&lt;p&gt;If users are people in a company, then groups are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;devops_team – who gets access to deploy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;finance – who sees the money stuff&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;lunch_club – okay this one’s unofficial but still important&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assign wisely. Because one wrong group and suddenly “Susan from HR” has root access to /var/www.&lt;/p&gt;

&lt;p&gt;&lt;a id="tomorrow's-challenge-teaser"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tomorrow’s Challenge Teaser
&lt;/h2&gt;

&lt;p&gt;“Wait… I thought that file belonged to me?”&lt;/p&gt;

&lt;p&gt;Day 4 is all about ownership, permissions, and why chown is a blessing and a curse.&lt;/p&gt;

&lt;p&gt;What’s your weirdest group name on your Linux box?&lt;br&gt;
Mine’s kettlegang. Long story. &lt;/p&gt;

&lt;h1&gt;
  
  
  RHCSA #LinuxAdminLife #UserGroupDrama #30DaysChallenge #BeginnerToBoss #SysadminChronicles #RHEL9 #CommandLineConfidence #DevTo #KeepLearning #RealWorldRHCSA
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>cloudwhistler</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 2 of #30DaysRHCSAChallenge – Who Gave the Intern sudo?!</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Fri, 30 May 2025 15:19:12 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-2-of-30daysrhcsachallenge-who-gave-the-intern-sudo-1dog</link>
      <guid>https://forem.com/higgs182092/day-2-of-30daysrhcsachallenge-who-gave-the-intern-sudo-1dog</guid>
      <description>&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Real World Problem&lt;/li&gt;
&lt;li&gt;Today’s Mission&lt;/li&gt;
&lt;li&gt;Commands I Used&lt;/li&gt;
&lt;li&gt;RHCSA Objectives Covered&lt;/li&gt;
&lt;li&gt;What I Learned (the hard way)&lt;/li&gt;
&lt;li&gt;Tomorrow’s Challenge Teaser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="the-real-world-problem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real World Problem
&lt;/h2&gt;

&lt;p&gt;You’ve got a shiny new junior dev on the team. They need sudo access to restart a service... and next thing you know, your web server is down and /etc/ is crying.&lt;/p&gt;

&lt;p&gt;Today’s challenge: Give the right people the right power—without accidentally handing them the keys to the kingdom.&lt;/p&gt;

&lt;p&gt;&lt;a id="today's-mission"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s Mission
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add a user to the wheel group (aka: the VIP club for sudo users)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check who else has sudo rights&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure sudo access safely via /etc/sudoers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bonus: Set up a custom sudo rule for a specific command (if you're feeling spicy!)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="commands-i-used"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands I Used
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkv1x2se8v0iot8ra4xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkv1x2se8v0iot8ra4xh.png" alt="Image description" width="616" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checked the sacred scrolls of sudo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqznswvdsn0oa2ft6rgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqznswvdsn0oa2ft6rgr.png" alt="Image description" width="560" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth8au8y12wq4xwmq7v1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth8au8y12wq4xwmq7v1o.png" alt="Image description" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Seriously, use visudo, not your usual editor—it’s got safety checks so you don’t accidentally break your entire system trying to be helpful.)&lt;/p&gt;

&lt;p&gt;&lt;a id="rhcsa-objectives-covered"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  RHCSA Objectives Covered
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manage local user security&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure sudo access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand /etc/sudoers and the wheel group&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-i-learned-(the-hard-way)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned (the hard way)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Adding someone to the wheel group is like giving them the “admin lightsaber.” Use responsibly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;visudo saves lives (and jobs).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sudo abuse is real—and totally traceable. Your logs will snitch.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="tomorrow's-challenge-teaser"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tomorrow’s Challenge Teaser
&lt;/h2&gt;

&lt;p&gt;Tomorrow we take a peek into the hidden world of groups. Primary, secondary, and why “newdev” is in six of them. &lt;/p&gt;

&lt;p&gt;Want to follow along?&lt;br&gt;
Post your commands, share your fails, and tag your fellow sudo warriors.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #RHCSA #30DaysChallenge #SudoSaga #DevTo #SysadminLife #BeginnerToBoss #RHEL9 #CommandLineChronicles
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>cloudwhistler</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 1 of #30DaysRHCSAChallenge – Why Can’t This User Log In?</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Thu, 29 May 2025 19:30:50 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-1-of-30daysrhcsachallenge-why-cant-this-user-log-in-2ce3</link>
      <guid>https://forem.com/higgs182092/day-1-of-30daysrhcsachallenge-why-cant-this-user-log-in-2ce3</guid>
      <description>&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Real World Problem&lt;/li&gt;
&lt;li&gt;Today’s Mission&lt;/li&gt;
&lt;li&gt;Commands I Used&lt;/li&gt;
&lt;li&gt;RHCSA Objectives Covered&lt;/li&gt;
&lt;li&gt;What I Learned (or Screwed Up)&lt;/li&gt;
&lt;li&gt;Tomorrow’s Challenge Teaser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="the-real-world-problem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real World Problem
&lt;/h2&gt;

&lt;p&gt;You just created a new user… but they can't log in. They’re already on Slack asking why “Linux hates them personally.” You check your work—and oops. You forgot to give them a shell or a home. Rookie move, but hey, we've all been there.&lt;/p&gt;

&lt;p&gt;&lt;a id="today's-mission"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today’s Mission
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a user with a home directory&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set their password&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure they’re assigned a default shell&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm they can log in and run basic commands&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="commands-i-used"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands I Used
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foc5jpm7d8zu1lzoojs2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foc5jpm7d8zu1lzoojs2k.png" alt="Image description" width="693" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I double-checked:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fia9a4zp9kzdi2rbngmhs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fia9a4zp9kzdi2rbngmhs.png" alt="Image description" width="554" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="rhcsa-objectives-covered"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  RHCSA Objectives Covered
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create and manage local users and groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set passwords and default shell&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand the /etc/passwd and /etc/shadow files&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-i-learned-(or-screwed-up)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned (or Screwed Up)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not using -m creates a user without a home—unless you're creating a ghost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No shell = no login = frustrated coworkers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/etc/passwd is like a user phonebook. If your name isn’t in there correctly, you’re not getting through the door.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="tomorrow's-challenge-teaser"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tomorrow’s Challenge Teaser
&lt;/h2&gt;

&lt;p&gt;Tomorrow we tackle the dangerous art of giving users sudo powers… and how to not accidentally let an intern nuke your server.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #RHCSA #30DaysChallenge #SysadminLife #DevToSeries #BeginnerToBoss
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>cloudwhistler</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 30 of #30DayLinuxChallenge — From “Wait, What’s a Terminal?” to “Let’s Partition This Thing!”</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Fri, 23 May 2025 20:30:50 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-30-of-30daylinuxchallenge-from-wait-whats-a-terminal-to-lets-partition-this-thing-31fl</link>
      <guid>https://forem.com/higgs182092/day-30-of-30daylinuxchallenge-from-wait-whats-a-terminal-to-lets-partition-this-thing-31fl</guid>
      <description>&lt;p&gt;Subtitle: How I went from Linux newbie to loopback-creating, file-permission-setting, disk-wrangling warrior in just 30 days.&lt;/p&gt;

&lt;p&gt;30 days ago, I sat down in front of a terminal window and thought,&lt;/p&gt;

&lt;p&gt;“How hard can Linux be?”&lt;/p&gt;

&lt;p&gt;Cue dramatic zoom-in on my face as I accidentally chmod'd the wrong directory, couldn’t find /dev/sdb no matter how many times I begged it to appear, and got error messages that looked like they were written by an angry toaster.&lt;/p&gt;

&lt;p&gt;But guess what?&lt;/p&gt;

&lt;p&gt;I showed up the next day.&lt;br&gt;
And the next.&lt;br&gt;
And the next after that.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What I’ve Learned&lt;/li&gt;
&lt;li&gt;What I’ve Overcome&lt;/li&gt;
&lt;li&gt;Why Challenges Like This Matter&lt;/li&gt;
&lt;li&gt;What’s Next? RHCSA, Meet RHCE&lt;/li&gt;
&lt;li&gt;To Future Me (and maybe Future You)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-i've-learned"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’ve Learned
&lt;/h2&gt;

&lt;p&gt;These 30 day's weren’t just about commands — they were about transformation. I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to create users and make sure they can’t see my secret tea logs&lt;/li&gt;
&lt;li&gt;How to mount things that don’t technically exist (hello, loopback devices!)&lt;/li&gt;
&lt;li&gt;How to partition, format, and set up logical volumes like a junior sysadmin&lt;/li&gt;
&lt;li&gt;How to break things, Google like a detective, and fix them with newfound pride&lt;/li&gt;
&lt;li&gt;That VirtualBox will test your patience, but perseverance pays off&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And perhaps most importantly…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That being a beginner isn’t a weakness — it’s the most powerful place to start.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="what-i've-overcome"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’ve Overcome
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fear of the terminal: Now, I don’t just type in commands — I understand them.&lt;/li&gt;
&lt;li&gt;Frustration with errors: I’ve learned to read, troubleshoot, and even enjoy the chase.&lt;/li&gt;
&lt;li&gt;Imposter syndrome: That little voice that said “You can’t do tech”? Yeah, it’s quieter now.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every sudo, every permission flag, every mysterious error message has helped me rewrite that voice with one that says:&lt;/p&gt;

&lt;p&gt;“You’re getting this. You belong here.”&lt;/p&gt;

&lt;p&gt;&lt;a id="why-challenges-like-this-matter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Challenges Like This Matter
&lt;/h2&gt;

&lt;p&gt;Doing a #30DayChallenge isn’t just about streaks or posts. It’s about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistency over perfection.&lt;/li&gt;
&lt;li&gt;Learning publicly and proudly.&lt;/li&gt;
&lt;li&gt;Turning confusion into curiosity, and curiosity into confidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s about building habits, community, and resilience — all essential for anyone stepping into tech.&lt;/p&gt;

&lt;p&gt;If you’re reading this and wondering whether you can do it — you can.&lt;br&gt;
Your first ls is just as important as your first lvm command.&lt;/p&gt;

&lt;p&gt;&lt;a id="what's-next?-rhcsa,-meet-rhce"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next? RHCSA, Meet RHCE
&lt;/h2&gt;

&lt;p&gt;Now that I’ve got the RHCSA mindset, tools, and battle scars, it’s time to level up.&lt;/p&gt;

&lt;p&gt;Next stop: RHCE.&lt;/p&gt;

&lt;p&gt;More automation. More scripting. More “Whoa, I didn’t know Linux could do that.”&lt;/p&gt;

&lt;p&gt;And just like this challenge, I’ll be logging my journey, wins, struggles, and probably another round of confused looks at missing disks.&lt;/p&gt;

&lt;p&gt;&lt;a id="to-future-me-(and-maybe-future-you)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  To Future Me (and maybe Future You)
&lt;/h2&gt;

&lt;p&gt;Remember Day 1? You didn’t know the difference between chmod and chocolate.&lt;/p&gt;

&lt;p&gt;Now you’re the person who teaches others what that means.&lt;/p&gt;

&lt;p&gt;Keep showing up.&lt;br&gt;
Keep typing.&lt;br&gt;
Keep learning.&lt;/p&gt;

&lt;p&gt;And when it gets hard, just say:&lt;/p&gt;

&lt;p&gt;“Challenge accepted.”&lt;/p&gt;

&lt;p&gt;Thanks to everyone who’s been following my journey. Stick around — the next adventure is already booting up.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #30DayChallenge #RHCSA #BeginnerToPro #LearningInPublic #TechJourney #RHCEPrep
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>cloudwhistler</category>
      <category>opensource</category>
    </item>
    <item>
      <title>RHCSA Prep for Absolute Beginners: The “Diskless but Determined” Edition</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Fri, 23 May 2025 20:20:51 +0000</pubDate>
      <link>https://forem.com/higgs182092/rhcsa-prep-for-absolute-beginners-the-diskless-but-determined-edition-390k</link>
      <guid>https://forem.com/higgs182092/rhcsa-prep-for-absolute-beginners-the-diskless-but-determined-edition-390k</guid>
      <description>&lt;p&gt;Subtitle: When your second disk refuses to show up, but your Linux spirit refuses to back down.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Welcome to the RHCSA Arena!&lt;/li&gt;
&lt;li&gt;First, Let’s Deal With This Missing Disk Situation&lt;/li&gt;
&lt;li&gt;Part 1: Practice File Permissions Like a Boss&lt;/li&gt;
&lt;li&gt;Part 2: Master User &amp;amp; Group Management&lt;/li&gt;
&lt;li&gt;Part 3: Practice Mounting Like a Pro (No New Disk Required!)&lt;/li&gt;
&lt;li&gt;Part 4: Manage Services Like a Sysadmin Ninja&lt;/li&gt;
&lt;li&gt;Part 5: Bonus Scripting Practice&lt;/li&gt;
&lt;li&gt;Final Words of Wisdom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="welcome-to-the-rhcsa-arena!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Welcome to the RHCSA Arena!
&lt;/h2&gt;

&lt;p&gt;You’ve fired up your RHEL 9 VM, flexed your typing fingers, and bravely typed lsblk… only to be ghosted by /dev/sdb. But guess what? You’re still in the game. And this guide is for you — the Linux warrior who keeps going, one command at a time.&lt;/p&gt;

&lt;p&gt;&lt;a id="first-let's-deal-with-the-missing-disk-situation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  First, Let’s Deal With This Missing Disk Situation
&lt;/h2&gt;

&lt;p&gt;If you tried lsblk and /dev/sdb is still in hiding, it's okay. You can still practice tons of RHCSA skills using the space and partitions you already have. Let’s pivot to the real-world RHCSA tactics you can conquer right now:&lt;/p&gt;

&lt;p&gt;&lt;a id="part-1:-practice-file-permissions-like-a-boss"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: Practice File Permissions Like a Boss
&lt;/h2&gt;

&lt;p&gt;Make your own top-secret coffee log:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd1xwxv3ps592hf4nf8c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd1xwxv3ps592hf4nf8c6.png" alt="Image description" width="664" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the command line equivalent of putting your diary under lock and key.&lt;/p&gt;

&lt;p&gt;&lt;a id="part-2:-master-user-&amp;amp;-group-management"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: Master User &amp;amp; Group Management
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyonlth44c7dp47b8zysv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyonlth44c7dp47b8zysv.png" alt="Image description" width="612" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because every RHCSA candidate should know how to create a user who respects a properly brewed cup of the sweet bean juice.&lt;/p&gt;

&lt;p&gt;&lt;a id="part-3:-practice-mounting-like-a-pro-(no-new-disk-required!)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: Practice Mounting Like a Pro (No New Disk Required!)
&lt;/h2&gt;

&lt;p&gt;Create a loopback device — it's like a pretend disk:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xoy5dcl7cjyj6e0wrbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xoy5dcl7cjyj6e0wrbc.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll admit, this was a hard one to grasp but perseverance and hard work paid off! I debated whether to keep my mistakes in and re-do it to make it look clear, but sometimes, we need to own our mistakes and embrace them, that's how we learn, and grow.&lt;/p&gt;

&lt;p&gt;Boom. Fake disk. Real experience. Zero stress.&lt;/p&gt;

&lt;p&gt;&lt;a id="part-4:-manage-services-like-a-sysadmin-ninja"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 4: Manage Services Like a Sysadmin Ninja
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp8bj9dmt0iw02bdwhrd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp8bj9dmt0iw02bdwhrd.png" alt="Image description" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn to control services. Become the puppet master of your system.&lt;/p&gt;

&lt;p&gt;&lt;a id="part-5:-bonus-scripting-practice"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 5: Bonus Scripting Practice
&lt;/h2&gt;

&lt;p&gt;Create a basic shell script because scripts are sexy and RHCSA loves them:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijbptxs1hl3bed4ptx1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijbptxs1hl3bed4ptx1y.png" alt="Image description" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save it as brew.sh, make it executable. &lt;/p&gt;

&lt;p&gt;Boom. You just automated a task. Hire yourself.&lt;/p&gt;

&lt;p&gt;&lt;a id="final-words-of-wisdom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words of Wisdom
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Don’t let hardware hiccups stop your hustle.&lt;/li&gt;
&lt;li&gt;The RHCSA is as much about mindset as it is about commands.&lt;/li&gt;
&lt;li&gt;You’re learning. You’re practicing. And that’s more powerful than a second disk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Need help fixing VirtualBox or creating more real-world practice scenarios with what you have? I’ve got you. Just say the word.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>cloudwhistler</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 10: CTRL+ALT+WOW — Our Command-Line Glow-Up Recap!</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Fri, 23 May 2025 19:24:53 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-10-ctrlaltwow-our-command-line-glow-up-recap-405a</link>
      <guid>https://forem.com/higgs182092/day-10-ctrlaltwow-our-command-line-glow-up-recap-405a</guid>
      <description>&lt;p&gt;Welcome to Day 10 of our 10-part beginner-friendly journey into RHEL 9 — aka Linux for Real People Who Like Laughing and Learning.&lt;/p&gt;

&lt;p&gt;If you've stuck with me from Day 1, then congratulations: you now officially know more Linux than the average cat (and I'm not just talking about cat filename.txt).&lt;/p&gt;

&lt;p&gt;Today isn’t about new commands — it’s about honoring the wild ride we’ve had. Think of this as the terminal-themed version of a high school yearbook. Let’s roll back through the bashful beginnings, the pipe-dreams, and the chmod-fueled chaos...&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Day 1: pwd Where’s My Shell At?&lt;/li&gt;
&lt;li&gt;Day 2: mkdir Mayhem&lt;/li&gt;
&lt;li&gt;Day 3: The Assassins of the Shell&lt;/li&gt;
&lt;li&gt;Day 4: Permission, Please&lt;/li&gt;
&lt;li&gt;Day 5: Backup Before You Break It&lt;/li&gt;
&lt;li&gt;Day 6: Finders Keepers&lt;/li&gt;
&lt;li&gt;Day 7: Top Secrets &amp;amp; Sneaky Processes&lt;/li&gt;
&lt;li&gt;Day 8: Let’s Get Greppy&lt;/li&gt;
&lt;li&gt;Day 9: Pipes, Please!&lt;/li&gt;
&lt;li&gt;So, What Now?&lt;/li&gt;
&lt;li&gt;Your Next Steps:&lt;/li&gt;
&lt;li&gt;Final Words (Before I exit)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="day-1:-pwd-where's-my-shell-at?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 1: pwd Where’s My Shell At?
&lt;/h2&gt;

&lt;p&gt;We kicked off lost in a terminal window — unsure of who we were, where we were, or what planet /home/user existed on. But pwd and ls gave us a sense of location, and suddenly we weren’t terminal tourists anymore.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-2:-mkdir-mayhem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 2: mkdir Mayhem
&lt;/h2&gt;

&lt;p&gt;We got bold. We made directories. Nested folders. Rebelled against mkdir fail messages. We became creators — and occasionally destroyers (looking at you, rmdir).&lt;/p&gt;

&lt;p&gt;&lt;a id="day-3:-the-assassins-of-the-shell"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 3: The Assassins of the Shell
&lt;/h2&gt;

&lt;p&gt;Enter touch, cat, and rm. We met the quiet librarian who shows us file contents… and the file hitman who doesn’t ask any questions. We touched greatness — and sometimes deleted it by accident.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-4:-permission,-please"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 4: Permission, Please
&lt;/h2&gt;

&lt;p&gt;It was time to get serious. We met the cryptic rw-r--r-- code and learned how to claim ownership with chown and wield power (safely-ish) with chmod. We made secret diaries, and hopefully, no one sudoed into them.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-5:-backup-before-you-break-it"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 5: Backup Before You Break It
&lt;/h2&gt;

&lt;p&gt;We faced real-world panic: “Did I just overwrite my project folder with a typo?” Cue cp, mv, and the almighty man to explain everything in tiny font. We survived. Just barely.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-6:-finders-keepers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 6: Finders Keepers
&lt;/h2&gt;

&lt;p&gt;Files were lost. Tempers were tested. But find, head, tail, and wc made us detectives of the filesystem. We counted lines, sniffed out files, and peeked inside logs like responsible hackers.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-7:-top-secrets-&amp;amp;-sneaky-processes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 7: Top Secrets &amp;amp; Sneaky Processes
&lt;/h2&gt;

&lt;p&gt;We peeked behind the curtain. top, ps, and uptime helped us spy on our system like digital spies. And free -h told us how much memory our chaos was using.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-8:-let's-get-greppy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 8: Let’s Get Greppy
&lt;/h2&gt;

&lt;p&gt;If grep were a person, it’d be that friend who finds exactly what you're ranting about in the group chat. We became pattern-hunters, search wizards, and logs no longer scared us.&lt;/p&gt;

&lt;p&gt;&lt;a id="day-9:-pipes,-please!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 9: Pipes, Please!
&lt;/h2&gt;

&lt;p&gt;You mastered the ancient art of chaining commands together like a Linux wizard. |, &amp;gt;, &amp;gt;&amp;gt;, and &amp;lt; turned us from button-mashers into elegant stream-benders. Power. Flow. Control.&lt;/p&gt;

&lt;p&gt;&lt;a id="so,-what-now?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So, What Now?
&lt;/h2&gt;

&lt;p&gt;If this journey proved anything, it’s this:&lt;/p&gt;

&lt;p&gt;You don’t need to be “technical” to learn Linux. You just need curiosity, caffeine, and a little chaos.&lt;/p&gt;

&lt;p&gt;You now know how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate your way out of /etc/panic&lt;/li&gt;
&lt;li&gt;Create and delete files like a cool kid&lt;/li&gt;
&lt;li&gt;Read logs, manipulate text, monitor systems&lt;/li&gt;
&lt;li&gt;Chain together commands with confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ve built real command-line muscle — one typo at a time.&lt;/p&gt;

&lt;p&gt;&lt;a id="your-next-steps:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Next Steps:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Try out a personal Linux project. Make a Bash script. Break something (then fix it!).&lt;/li&gt;
&lt;li&gt;Start exploring tools like cron, ssh, scp, or the package manager dnf.&lt;/li&gt;
&lt;li&gt;Study for RHCSA if you’re certification-curious.&lt;/li&gt;
&lt;li&gt;Share your journey — because the terminal isn’t as lonely as it looks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="final-words-(before-i-exit)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words (Before I exit)
&lt;/h2&gt;

&lt;p&gt;To everyone who followed along — thank you. Your comments, encouragement, and “oh no I deleted everything” messages made this adventure feel like a community campfire… with slightly more chmod.&lt;/p&gt;

&lt;p&gt;Until next time:&lt;/p&gt;

&lt;p&gt;echo "Goodbye, world!" &amp;gt; final.txt&lt;/p&gt;

&lt;p&gt;Catch you on the command line.&lt;/p&gt;

&lt;p&gt;— CloudWhistler&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>cloudwhistler</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 9: The Mysterious World of Pipes and Redirection in RHEL 9</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Tue, 20 May 2025 20:06:24 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-9-the-mysterious-world-of-pipes-and-redirection-in-rhel-9-2fea</link>
      <guid>https://forem.com/higgs182092/day-9-the-mysterious-world-of-pipes-and-redirection-in-rhel-9-2fea</guid>
      <description>&lt;p&gt;Welcome to the land of pipes (|) and redirection (&amp;gt; and &amp;gt;&amp;gt;) — where Linux becomes a modular masterpiece. Think of it like Lego for grown-ups (but nerdier and more powerful).&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What are pipes and redirection?&lt;/li&gt;
&lt;li&gt;Redirection Basics:&lt;/li&gt;
&lt;li&gt;Pipe Magic:&lt;/li&gt;
&lt;li&gt;Mini Mission:&lt;/li&gt;
&lt;li&gt;Why this rocks&lt;/li&gt;
&lt;li&gt;What's Next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="what-are-pipes-and-redirection?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are pipes and redirection?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Redirection sends output somewhere else (like a file).&lt;/li&gt;
&lt;li&gt;Pipes connect commands so one’s output becomes the next one’s input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="redirection-basics:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Redirection Basics:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&amp;gt; — send output to a file (overwrites it)&lt;/li&gt;
&lt;li&gt;&amp;gt;&amp;gt; — append output to a file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzcmyid5qhf39xfgjiur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzcmyid5qhf39xfgjiur.png" alt="Image description" width="623" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now greetings.txt contains "Hello world" and now greetings.txt has BOTH messages.&lt;/p&gt;

&lt;p&gt;&lt;a id="pipe-magic:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pipe Magic:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89kxvl1jsifvdwjdugig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89kxvl1jsifvdwjdugig.png" alt="Image description" width="638" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This lists all files and sends that list to grep, which filters and only shows .txt files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkgo40ns59t60wn9dv0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkgo40ns59t60wn9dv0g.png" alt="Image description" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;View system boot messages, but in a scrollable way. No terminal meltdown!&lt;/p&gt;

&lt;p&gt;&lt;a id="mini-mission:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mini Mission:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use echo to write a sentence to a file.&lt;/li&gt;
&lt;li&gt;Append a second line with &amp;gt;&amp;gt;&lt;/li&gt;
&lt;li&gt;Use a pipe to search your .bash_history for the word "sudo"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="why-this-rocks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this rocks
&lt;/h2&gt;

&lt;p&gt;This is how Linux pros build supercharged workflows. It's like chaining spells in a video game: each command is strong on its own, but together, they’re unstoppable.&lt;/p&gt;

&lt;p&gt;&lt;a id="what's-next"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Quick Reflection:&lt;br&gt;
You’ve now wrangled files, navigated directories, tamed permissions, and even filtered text like a digital detective. These new tools (grep, pipes, redirection) are your backstage passes to real-world Linux wizardry — and they're way easier than they sound.&lt;/p&gt;

&lt;p&gt;Practice them a few times in real scenarios — not just in theory — and they’ll stick for life.&lt;/p&gt;

&lt;p&gt;See you tomorrow for Day 10, where we wrap it all up in a command-line bow!&lt;/p&gt;

&lt;h1&gt;
  
  
  LinuxLearning #RHEL9 #CloudWhistler #BeginnerFriendly #RHCSA #LearningLinux
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>cloudwhistler</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 8: Let’s Get Greppy – Finding Text Like a Pro in RHEL 9</title>
      <dc:creator>Dan Higgins</dc:creator>
      <pubDate>Tue, 20 May 2025 19:39:05 +0000</pubDate>
      <link>https://forem.com/higgs182092/day-8-lets-get-greppy-finding-text-like-a-pro-in-rhel-9-1a2k</link>
      <guid>https://forem.com/higgs182092/day-8-lets-get-greppy-finding-text-like-a-pro-in-rhel-9-1a2k</guid>
      <description>&lt;p&gt;Alright, command-line comrades, it’s time we talk about someone very special…&lt;/p&gt;

&lt;p&gt;Grep — the text detective that never sleeps.&lt;/p&gt;

&lt;p&gt;If you’ve ever stared at a log file wondering if the answer to your issue is hiding somewhere in 3,000 lines of gobbledygook, grep is your new best friend.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;So what exactly is grep?&lt;/li&gt;
&lt;li&gt;Basic Syntax:&lt;/li&gt;
&lt;li&gt;Handy Flags for Beginners:&lt;/li&gt;
&lt;li&gt;Real World Use:&lt;/li&gt;
&lt;li&gt;Mini Mission:&lt;/li&gt;
&lt;li&gt;Why It Matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="so-what-exactly-is-grep?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So what exactly is grep?
&lt;/h2&gt;

&lt;p&gt;Grep stands for Global Regular Expression Print, but don't let the fancy name scare you. It basically means: “Hey Linux, find this text for me, now, please and thank you.”&lt;/p&gt;

&lt;p&gt;&lt;a id="basic-syntax:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Syntax:
&lt;/h2&gt;

&lt;p&gt;grep "pattern" filename&lt;/p&gt;

&lt;p&gt;Let’s say you have a file called shopping.txt and it looks like this:&lt;/p&gt;

&lt;p&gt;apples&lt;br&gt;
bananas&lt;br&gt;
pineapples&lt;br&gt;
chocolate bananas&lt;/p&gt;

&lt;p&gt;Run this, and boom — it’ll spit out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F369y8ir14gj6pe80lp7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F369y8ir14gj6pe80lp7l.png" alt="Image description" width="720" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="handy-flags-for-beginners:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Handy Flags for Beginners:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;-i (ignore case)&lt;/li&gt;
&lt;li&gt;-n (show line number)&lt;/li&gt;
&lt;li&gt;-r (search recursively through directories)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2t65hxduiqhpfn4fdmy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2t65hxduiqhpfn4fdmy.png" alt="Image description" width="727" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now it finds both “Banana” and “banana”, and shows which line they’re on. Pretty slick.&lt;/p&gt;

&lt;p&gt;&lt;a id="real-world-use:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real World Use:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Searching logs for errors:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67x4hgz7n40w0czms6s1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67x4hgz7n40w0czms6s1.png" alt="Image description" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finding a user in /etc/passwd:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwns4ouhqgt257frn793x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwns4ouhqgt257frn793x.png" alt="Image description" width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="mini-mission:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mini Mission:
&lt;/h2&gt;

&lt;p&gt;Create a file with different fruit names. Use grep to find your favorites. Bonus points for using -i and -n.&lt;/p&gt;

&lt;p&gt;&lt;a id="why-it-matters"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;In a real-world tech job, whether you’re a sysadmin or cloud wizard, you’ll often need to extract one crucial line from a sea of chaos. &lt;/p&gt;

&lt;p&gt;Mastering grep saves time, energy, and possibly your sanity.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>cloudwhistler</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
