Linux System Information and Documentation: Complete Beginner's Guide to uname, man, and Help Systems

Master essential Linux commands for discovering system information, accessing documentation, and getting help. Learn uname, man pages, info, --help, whatis, apropos, and PS1 customization with detailed examples.

22 min read

Every Linux user needs to know two fundamental skills: finding out about their system and knowing where to get help. In this comprehensive guide, you'll learn how to discover your system's information and master Linux's built-in documentation system.

💡

đŸŽ¯ What You'll Learn: In this hands-on tutorial, you'll discover:

  • Checking Linux kernel and system information with uname
  • Viewing OS release details
  • Checking SELinux status and service information
  • Viewing network configuration with ip a
  • Customizing your bash prompt (PS1)
  • Mastering the man command for manual pages
  • Using info for detailed documentation
  • Getting quick help with --help
  • Finding commands with whatis and apropos
  • Exploring /usr/share/doc for package documentation

đŸ–Ĩī¸ Part 1: System Information Commands

Understanding your Linux system starts with knowing what you're running. Let's explore the essential commands for gathering system information.

Prerequisites

Before we dive in, you should have:

  • Access to a Linux terminal
  • Basic command line familiarity
  • User account (root not required for most commands)

🐧 The uname Command: Discovering Your System

The uname command displays system information about your Linux installation.

Basic uname Usage

uname

What this command does:

  • uname - Print system information
  • Without options, it prints the kernel name

Output:

Linux

Understanding the output:

  • Simply shows "Linux" - confirms you're running a Linux-based operating system
  • This is the kernel name (the core of the operating system)

Checking Kernel Version

uname -r

What this command does:

  • uname - System information command
  • -r - Print the kernel release version

Output:

5.14.0-620.el9.x86_64

Breaking down the output:

PartValueMeaning
Major version5.14.0Kernel version 5, minor version 14, patch 0
Build number620Distribution-specific build number
Distributionel9"Enterprise Linux 9" (RHEL/CentOS 9)
Architecturex86_6464-bit Intel/AMD processor

Complete System Information

uname -a

What this command does:

  • uname - System information command
  • -a - Print ALL system information

Output:

Linux vbox 5.14.0-620.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 26 01:13:23 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Breaking down the complete output:

  1. Linux - Kernel name
  2. vbox - Hostname (network name of this computer)
  3. 5.14.0-620.el9.x86_64 - Kernel release (version)
  4. #1 SMP PREEMPT_DYNAMIC - Kernel build info
    • #1 = First build
    • SMP = Symmetric Multi-Processing (multi-core support)
    • PREEMPT_DYNAMIC = Preemptive kernel (better responsiveness)
  5. Fri Sep 26 01:13:23 UTC 2025 - When the kernel was compiled
  6. x86_64 x86_64 x86_64 - Machine architecture (processor type)
  7. GNU/Linux - Operating system name
💡

💡 When to Use uname: Use uname -r to check kernel compatibility for software installation. Use uname -a when reporting system information for troubleshooting.

📋 Operating System Release Information

The /etc/os-release file contains detailed information about your Linux distribution.

Viewing OS Release Details

cat /etc/os-release

What this command does:

  • Reads and displays the contents of /etc/os-release
  • This file contains distribution-specific information
  • Standardized across most modern Linux distributions

Output:

NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"

Understanding each field:

FieldValuePurpose
NAMECentOS StreamHuman-readable OS name
VERSION9Version number
IDcentosShort identifier for scripts
ID_LIKErhel fedoraCompatible with RHEL and Fedora
PRETTY_NAMECentOS Stream 9Full display name
HOME_URLhttps://centos.org/Project homepage
BUG_REPORT_URLhttps://issues.redhat.com/Where to report bugs
✅

✅ Use Case: Scripts often parse /etc/os-release to detect which distribution they're running on and adjust behavior accordingly.

🔐 SELinux Status

SELinux (Security-Enhanced Linux) is a security framework that provides access control security policies.

Checking SELinux Status

sestatus

What this command does:

  • sestatus - Display SELinux status
  • Shows whether SELinux is enabled and its current mode
  • Provides configuration details

Output:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

Understanding SELinux output:

FieldValueMeaning
SELinux statusenabledSELinux is active on this system
Current modeenforcingSELinux actively blocks unauthorized access
Loaded policytargetedProtects specific system services
MLS statusenabledMulti-Level Security support is active

SELinux Modes Explained:

  • Enforcing: SELinux policy is enforced. Denies access and logs actions.
  • Permissive: SELinux logs policy violations but doesn't enforce them (testing mode).
  • Disabled: SELinux is completely turned off.

🔧 Checking Service Status with systemctl

Systemd is the system and service manager for modern Linux distributions.

Viewing SSH Service Status

sudo systemctl status sshd

What this command does:

  • sudo - Run command with superuser privileges
  • systemctl - Control systemd system and service manager
  • status - Show runtime status of a service
  • sshd - The OpenSSH server daemon

Output:

● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-10-06 15:43:12 PKT; 39min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1861 (sshd)
      Tasks: 1 (limit: 48732)
     Memory: 2.0M (peak: 2.3M)
        CPU: 31ms
     CGroup: /system.slice/sshd.service
             └─1861 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Oct 06 15:43:12 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Oct 06 15:43:12 localhost.localdomain sshd[1861]: Server listening on 0.0.0.0 port 22.
Oct 06 15:43:12 localhost.localdomain sshd[1861]: Server listening on :: port 22.
Oct 06 15:43:12 localhost.localdomain systemd[1]: Started OpenSSH server daemon.

Understanding systemctl status output:

Header section:

  • ● sshd.service - Service name (● indicates status: green = running, red = failed)
  • Loaded: Service definition file location and startup configuration
    • enabled = starts automatically at boot
    • disabled = doesn't start at boot
  • Active: Current running state
    • active (running) = service is running
    • inactive (dead) = service is stopped
    • failed = service crashed

Resource usage:

  • Main PID: Process ID of the main service process (1861)
  • Tasks: Number of threads/tasks (1)
  • Memory: Current and peak memory usage
  • CPU: Cumulative CPU time used

Logs section: Shows recent log entries for this service:

  • Started the SSH server
  • Listening on 0.0.0.0 (all IPv4 addresses) port 22
  • Listening on :: (all IPv6 addresses) port 22

🌐 Network Configuration with ip Command

The ip command displays and configures network interfaces.

Viewing Network Addresses

ip a

What this command does:

  • ip - Show/manipulate routing, network devices, interfaces
  • a - Short for address - show protocol addresses

Output (Partial):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3c:80:d2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.154/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3
       valid_lft 83999sec preferred_lft 83999sec
    inet6 fe80::9b6f:96bb:eae6:4030/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Understanding network interface output:

Interface 1: lo (Loopback)

  • lo: Loopback interface (internal network for the computer to talk to itself)
  • LOOPBACK,UP,LOWER_UP: Flags indicating the interface type and status
  • mtu 65536: Maximum Transmission Unit (largest packet size)
  • inet 127.0.0.1/8: IPv4 loopback address (localhost)
  • inet6 ::1/128: IPv6 loopback address

Interface 2: enp0s3 (Network Card)

  • enp0s3: Physical network interface name
    • en = ethernet
    • p0s3 = PCI bus location
  • link/ether 08:00:27:3c:80:d2: MAC address (hardware address)
  • inet 192.168.100.154/24: IPv4 address assigned to this interface
    • /24 = subnet mask (255.255.255.0)
  • brd 192.168.100.255: Broadcast address for this network
  • state UP: Interface is active and connected
💡

💡 Common Use Cases: Use ip a to find your IP address, check network connectivity, or troubleshoot network issues. The output shows all network interfaces and their addresses.

🎨 Customizing Your Bash Prompt (PS1)

The PS1 variable controls how your bash prompt looks.

Viewing Current Prompt

echo $PS1

What this command does:

  • echo - Display text
  • $PS1 - Environment variable containing the prompt format

Output:

[\u@\h \W \t]$

Understanding PS1 escape sequences:

SequenceMeaningExample Output
\uUsernamecentos9
\hHostnamevbox
\WCurrent directory (basename)random
\wFull working directory path~/Documents/project
\tCurrent time (24-hour HH:MM:SS)16:23:28
\dDate (Weekday Month Date)Mon Oct 06
$# for root, $ for regular user$ or #

Modifying PS1

You can customize your prompt by editing the PS1 variable. After changing the prompt order:

# Change time to appear first
export PS1="[\t \u@\h \W]$ "

New prompt:

[16:25:03 centos9@vbox random]$

Making changes permanent: Edit ~/.bashrc file and add your PS1 customization, then reload:

source ~/.bashrc

📚 Part 2: Linux Documentation and Help Systems

Linux has excellent built-in documentation. Let's explore how to access and use it effectively.

📖 The man Command: Manual Pages

The man command displays the manual (documentation) for commands.

Reading a Manual Page

man ls | head

What this command does:

  • man - Display manual pages
  • ls - The command we want documentation for
  • | head - Show only first 10 lines (for demonstration)

Output:

LS(1)                                User Commands                                LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Understanding man page structure:

  1. Header: LS(1)
    • LS = command name
    • (1) = manual section number (1 = user commands)
  2. NAME: Brief description of the command
  3. SYNOPSIS: How to use the command (syntax)
  4. DESCRIPTION: Detailed explanation

Viewing More Content

man ls | head -n15

What -n15 does:

  • Shows first 15 lines instead of 10
  • Useful to see more of the description

Additional output:

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

When you run man ls (without piping to head), you enter an interactive viewer:

Navigation keys:

  • Space - Scroll down one page
  • b - Scroll up one page (back)
  • / - Search (e.g., type /color then Enter to find "color")
  • n - Next search result
  • q - Quit the manual page

Manual Sections

Man pages are organized into sections:

SectionContentsExample
1User commandsman 1 ls
2System callsman 2 open
3Library functionsman 3 printf
4Special filesman 4 null
5File formats and conventionsman 5 passwd
6Gamesman 6 fortune
7Miscellaneousman 7 signal
8System administrationman 8 systemctl

Example - File Format Documentation:

man 5 passwd

This shows documentation for the /etc/passwd file format (section 5), not the passwd command.

âš ī¸

âš ī¸ Troubleshooting: If man isn't installed, run sudo dnf install man-db on RHEL/CentOS systems or sudo apt install man-db on Debian/Ubuntu.

â„šī¸ The info Command

The info command provides more detailed documentation than man pages, with hyperlinked sections.

Using info

The rough file mentions:

info coreutils

What this does:

  • Displays info pages for GNU core utilities
  • Provides comprehensive, hyperlinked documentation
  • More detailed than man pages

Navigation in info:

  • Enter - Follow links
  • n - Next page
  • p - Previous page
  • u - Up one level in hierarchy
  • q - Quit
💡

💡 Info vs Man: Use man for quick reference. Use info for comprehensive tutorials and detailed explanations.

❓ Quick Help with --help

Most commands support the --help option for quick reference.

Using --help

ls --help

Sample output (first few lines):

Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
  -h, --human-readable       with -l and -s, print sizes like 1K 234M 2G etc.

Why use --help:

  • Quick reference - No need to open full man page
  • Prints to terminal - Can pipe to grep to search options
  • Always available - Doesn't require man pages to be installed

Another example:

pwd --help

Output:

pwd: pwd [-LP]
    Print the name of the current working directory.

    Options:
      -L	print the value of $PWD if it names the current working
    		directory
      -P	print the physical directory, without any symbolic links

    By default, `pwd' behaves as if `-L' were specified.

📁 Package Documentation Directory

Installed packages often include additional documentation in /usr/share/doc.

Exploring Documentation

ls /usr/share/doc

This shows all installed packages that have documentation. Example entry from output:

bash  podman  git  docker-ce-cli  ...

Reading Package Documentation

cat /usr/share/doc/bash/README | head

Output:

This directory contains the bash documentation.

FAQ		- a set of frequently-asked questions about Bash with answers
INTRO		- a short introduction to bash
article.ms	- an article I wrote about bash for The Linux Journal
bash.1		- the bash man page
builtins.1	- a man page that documents the builtins, extracted from bash.1
bashref.texi	- the `bash reference manual'
bashref.info	- the `bash reference manual' processed by `makeinfo'
readline.3	- the readline man page

What's in /usr/share/doc:

  • README files
  • Example configuration files
  • Changelog information
  • License files
  • Additional tutorials

🔍 Finding Commands: whatis and apropos

whatis: Quick Command Description

The whatis command provides one-line descriptions of commands.

whatis ls

Output:

ls (1)               - list directory contents

What the output means:

  • ls - Command name
  • (1) - Manual section 1 (user commands)
  • Description - Brief explanation

More examples:

whatis podman

Output:

podman (1)           - Simple management tool for pods, containers and images
whatis pwd

Output:

pwd (1)              - print name of current/working directory

apropos: Search for Commands

The apropos command searches manual page descriptions.

apropos "list directory"

Output:

dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

What this does:

  • Searches ALL manual page descriptions
  • Finds commands related to "list directory"
  • Returns all matches with their descriptions

More powerful example:

apropos container

Output (first few lines):

containerignore (5)  - files to ignore buildah or podman build context directory
buildah (1)          - A command line tool that facilitates building OCI container images.
buildah-add (1)      - Add the contents of a file, URL, or a directory to a container.
buildah-bud (1)      - Build an image using instructions from Containerfiles
docker (1)           - Docker image and container command line interface
podman (1)           - Simple management tool for pods, containers and images
podman-build (1)     - Build a container image using a Containerfile

Use cases for apropos:

  • Don't know the command name - Search by functionality
  • Discovering related commands - Find alternatives
  • Learning the system - Explore available tools
✅

✅ Pro Tip: Use apropos when you know what you want to do but don't know which command to use. For example, apropos "create user" finds user management commands.

đŸŽ¯ Best Practices

✅ System Information

  1. Check kernel version before installing software

    • Use uname -r to verify compatibility
    • Some software requires specific kernel versions
  2. Document your system details

    • Save /etc/os-release info for troubleshooting
    • Note your kernel version when reporting bugs
  3. Monitor service status regularly

    • Use systemctl status service_name to check critical services
    • Look for "failed" status indicators
  4. Understand your network configuration

    • Use ip a to verify connectivity
    • Note your IP addresses for remote access

✅ Using Documentation

  1. Start with --help for quick reference

    • Faster than man pages for simple questions
    • Good for checking available options
  2. Use man pages for detailed information

    • Read DESCRIPTION section to understand purpose
    • Check EXAMPLES section for usage patterns
    • Note the SEE ALSO section for related commands
  3. Search efficiently

    • Use apropos when you don't know the command name
    • Use whatis for quick confirmation of command purpose
    • Use / to search within man pages
  4. Keep documentation handy

    • Explore /usr/share/doc for package-specific guides
    • Look for README files and examples
    • Check for configuration file templates
  5. Master navigation

    • Learn man page navigation keys (Space, b, /, q)
    • Practice info command navigation
    • Use less for comfortable reading

📝 Command Cheat Sheet

System Information Commands

# Kernel and OS information
uname                    # Show kernel name
uname -r                 # Show kernel version
uname -a                 # Show all system information
cat /etc/os-release      # Show distribution information

# Security and services
sestatus                 # Check SELinux status
sudo systemctl status service_name    # Check service status
sudo systemctl start service_name     # Start a service
sudo systemctl stop service_name      # Stop a service
sudo systemctl enable service_name    # Enable at boot
sudo systemctl disable service_name   # Disable at boot

# Network information
ip a                     # Show all network interfaces and addresses
ip addr show eth0        # Show specific interface
ip link                  # Show link layer information
ip route                 # Show routing table

Prompt Customization

# View current prompt
echo $PS1

# Set prompt temporarily (current session only)
export PS1="[\u@\h \W]$ "

# Common PS1 escape sequences
\u    # Username
\h    # Hostname
\H    # Full hostname
\w    # Full working directory
\W    # Current directory name only
\t    # Time HH:MM:SS
\d    # Date
\$    # # for root, $ for regular users
\n    # Newline

# Make permanent - add to ~/.bashrc
echo 'export PS1="[\t \u@\h \W]$ "' >> ~/.bashrc
source ~/.bashrc

Documentation Commands

# Manual pages
man command_name         # Open manual page
man 5 passwd             # Open section 5 (file formats)
man -k keyword           # Search manual pages (same as apropos)

# Quick help
command --help           # Quick option reference
command -h               # Short version (some commands)

# Info pages
info command_name        # Open info documentation
info coreutils           # GNU core utilities info

# Command search and description
whatis command_name      # One-line description
apropos keyword          # Search command descriptions
apropos "search phrase"  # Search with multiple words

# Package documentation
ls /usr/share/doc        # List all package docs
ls /usr/share/doc/bash   # View specific package docs
cat /usr/share/doc/package/README    # Read README file
# Man page navigation
Space         # Next page
b             # Previous page
/pattern      # Search forward
?pattern      # Search backward
n             # Next search result
N             # Previous search result
q             # Quit

# Info navigation
Enter         # Follow link
n             # Next node
p             # Previous node
u             # Up to parent node
l             # Last visited node
d             # Return to top
q             # Quit

# Less navigation (for --help output)
command --help | less
# Then use Space, b, /, q like man pages

Useful Combinations

# Find all commands related to networking
apropos network

# Get one-line description of multiple commands
whatis ls pwd cd mkdir

# Search for specific option in man page
man ls | grep -A 5 "human-readable"

# View help and save to file for reference
ls --help > ls_help.txt

# Search package documentation
ls /usr/share/doc | grep -i docker

# Check if a command has a man page
man -w command_name    # Shows path to man page

🚀 What's Next?

📚 Continue Learning

  • Package Management with DNF - Learn to install, update, and manage software packages
  • systemd Service Management - Master service control and system initialization
  • Network Configuration - Deep dive into Linux networking
  • SELinux Administration - Comprehensive security policy management

đŸ› ī¸ Practice Projects

  • Create a system information script using uname, hostname, and ip commands
  • Customize your PS1 prompt with colors and Git branch information
  • Build a service monitoring script with systemctl
  • Create a command reference sheet for your most-used commands

✅

🎉 Congratulations! You now know how to discover system information and navigate Linux's comprehensive documentation system. These skills are foundational for every Linux user and administrator!

đŸ’Ŧ Discussion

I'd love to hear about your experience:

  • What system information commands do you use most frequently?
  • Have you customized your bash prompt? Share your PS1 configuration!
  • Which documentation method do you prefer: man, info, or --help?
  • What other system administration topics would you like to learn about?

Connect with me:

  • 🐙 GitHub - More Linux tutorials and scripts
  • 📧 Contact - Questions about Linux administration
Owais

Written by Owais

I'm an AIOps Engineer with a passion for AI, Operating Systems, Cloud, and Security—sharing insights that matter in today's tech world.

I completed the UK's Eduqual Level 6 Diploma in AIOps from Al Nafi International College, a globally recognized program that's changing careers worldwide. This diploma is:

  • ✅ Available online in 17+ languages
  • ✅ Includes free student visa guidance for Master's programs in Computer Science fields across the UK, USA, Canada, and more
  • ✅ Comes with job placement support and a 90-day success plan once you land a role
  • ✅ Offers a 1-year internship experience letter while you study—all with no hidden costs

It's not just a diploma—it's a career accelerator.

👉 Start your journey today with a 7-day free trial

Related Articles

Continue exploring with these handpicked articles that complement what you just read

More Reading

One more article you might find interesting