
I once needed aquick system overview—CPU load, memory usage, disk space—but opening multiple commands felt inefficient. Instead of runningtop,df -h, andfree -mseparately, I decided toautomate everything in a single Bash script.The result? Acustom system fetch toolthat provides essential system details at a glance. In this guide, youll learn how to build your ownstep by step, improving your Bash scripting skills along the way.Step 1: The Basics (What We’re Fetching)Before we jump into coding, let’s outline what information we need:✅CPU Model Load(/proc/cpuinfo,top)✅Memory Usage(free -m)✅Disk Space(df -h)✅System Uptime(uptime)✅Network Information(ip a,hostname -I)Step 2: Writing the Script (Fundamentals First)1️⃣Shebang SetupStart by specifying Bash as the interpreter and clearing the screen:#!/bin/bash clear2️⃣Fetching CPU InfoExtract theCPU model nameusinggrepon/proc/cpuinfo:cpu_model$(grep model name /proc/cpuinfo | head -1 | cut -d : -f2)Get theCPU loadusingtop(oruptimefor a lightweight alternative):cpu_load$(top -bn1 | grep load average | awk {print $10})3️⃣Checking Memory UsageUsefree -mto display RAM usage in MB:mem_usage$(free -m | awk NR2{printf Used: %sMB / Total: %sMB, $3, $2})4️⃣Fetching Disk SpaceList available disk space usingdf -h:disk_usage$(df -h | awk $NF/{printf Used: %d%%, $5})5️⃣Displaying Network InfoFetch thecurrent IP address:ip_address$(hostname -I | awk {print $1})Step 3: Formatting Output for ReadabilityInstead of printing raw text, format the output neatly usingcolors and spacing:echo -e \033[32mSystem Information:\033[0m echo ------------------------------- echo -e CPU Model: $cpu_model echo -e CPU Load: $cpu_load echo -e Memory: $mem_usage echo -e Disk Space: $disk_usage echo -e IP Address: $ip_addressWhy it’s useful:Colorsimprove readabilityConsistent spacingmakes it visually appealingStep 4: Running the ScriptSave the scriptassysfetch.shMake it executable:chmod x sysfetch.shRun it:./sysfetch.shExpected Output (Example):System Information: ------------------------------- CPU Model: Intel(R) Core(TM) i7-9750H CPU 2.60GHz CPU Load: 0.78 Memory: Used: 3800MB / Total: 16000MB Disk Space: Used: 42% IP Address: 192.168.1.10Step 5: Enhancing the Script✅Add Live UpdatesInstead of a one-time report, refresh every few seconds:while true; do clear ./sysfetch.sh sleep 5 done✅Save Output to a Log FileRedirect output for future analysis:./sysfetch.sh | tee system_report.txt✅Make It InteractiveAllow users to choose what info to display:echo Select an option: [1] CPU [2] Memory [3] Disk [4] All read choice case $choice in 1) echo CPU Model: $cpu_model ;; 2) echo Memory: $mem_usage ;; 3) echo Disk Space: $disk_usage ;; 4) ./sysfetch.sh ;; *) echo Invalid option ;; esacFinal ThoughtsCreating acustom system fetch toolis a great way to:✅Improve your Bash scripting skills✅Understand Linux system commands✅Make system monitoring more efficientIf youre abeginner, this project gives youreal-world Bash experience. If youreadvanced, you can customize it further with more data points.