# Linux-System-Info linux-system-info.sh ```bash #!/bin/bash # System Information Script # Outputs system specifications in beautified Markdown format echo "# 🖥️ System Specifications" echo "" # Date echo "**📅 Date:** $(date)" echo "" # OS Information echo "## 🐧 Operating System" if [ -f /etc/os-release ]; then . /etc/os-release echo "- **OS:** $PRETTY_NAME" else echo "- **OS:** Unknown" fi echo "- **Kernel:** \`$(uname -r)\`" echo "- **Hostname:** \`$(hostname)\`" echo "" # CPU Information echo "## 🧠 CPU" # Try to use lscpu first if command -v lscpu &> /dev/null; then MODEL=$(lscpu | grep "Model name" | cut -d: -f2 | xargs) CORES=$(lscpu | grep "^CPU(s):" | cut -d: -f2 | xargs) ARCH=$(lscpu | grep "Architecture" | cut -d: -f2 | xargs) echo "- **Model:** $MODEL" echo "- **Cores:** $CORES" echo "- **Architecture:** \`$ARCH\`" else # Fallback to /proc/cpuinfo MODEL=$(grep -m1 "model name" /proc/cpuinfo | cut -d: -f2 | xargs) CORES=$(grep -c processor /proc/cpuinfo) echo "- **Model:** $MODEL" echo "- **Cores:** $CORES" fi echo "" # Memory Information echo "## 💾 Memory" if command -v free &> /dev/null; then TOTAL_MEM=$(free -h | awk '/^Mem:/ {print $2}') echo "- **Total RAM:** $TOTAL_MEM" else # Fallback to /proc/meminfo TOTAL_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}') TOTAL_GB=$(echo "scale=2; $TOTAL_KB / 1024 / 1024" | bc 2>/dev/null || echo "$TOTAL_KB kB") echo "- **Total RAM:** ${TOTAL_GB} GB" fi echo "" # Motherboard Information (Requires root for dmidecode, trying sysfs) echo "## 🔢 Motherboard" if [ -r /sys/class/dmi/id/board_vendor ] && [ -r /sys/class/dmi/id/board_name ]; then VENDOR=$(cat /sys/class/dmi/id/board_vendor) NAME=$(cat /sys/class/dmi/id/board_name) VERSION=$(cat /sys/class/dmi/id/board_version 2>/dev/null || echo "") echo "- **Vendor:** $VENDOR" echo "- **Model:** $NAME" if [ -n "$VERSION" ]; then echo "- **Version:** $VERSION" fi else echo "*Access to motherboard DMI info restricted or unavailable.*" fi echo "" # GPU Information echo "## 🎮 Graphics" if command -v lspci &> /dev/null; then # Filter for VGA compatible controller or 3D controller lspci | grep -E "VGA|3D" | while read -r line; do # Extract the device name part (everything after the ID and type) DEVICE=$(echo "$line" | cut -d: -f3- | xargs) echo "- $DEVICE" done else echo "*lspci command not found, cannot list GPUs.*" fi echo "" # Disk Information echo "## 💽 Storage" if command -v lsblk &> /dev/null; then echo "| Name | Size | Type | Model |" echo "| :--- | :--- | :--- | :--- |" # List disks only, no partitions/loops/roms generally desirable for "specs" but lsblk -d does that lsblk -d -o NAME,SIZE,TYPE,MODEL -n | while read -r line; do # Format as table row NAME=$(echo "$line" | awk '{print $1}') SIZE=$(echo "$line" | awk '{print $2}') TYPE=$(echo "$line" | awk '{print $3}') MODEL=$(echo "$line" | cut -d' ' -f4-) echo "| \`$NAME\` | $SIZE | $TYPE | $MODEL |" done else echo "*lsblk command not found.*" fi echo "" echo "---" echo "*Generated by linux-system-info.sh*" ```
