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
andapropos
- 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:
Part | Value | Meaning |
---|---|---|
Major version | 5.14.0 | Kernel version 5, minor version 14, patch 0 |
Build number | 620 | Distribution-specific build number |
Distribution | el9 | "Enterprise Linux 9" (RHEL/CentOS 9) |
Architecture | x86_64 | 64-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:
- Linux - Kernel name
- vbox - Hostname (network name of this computer)
- 5.14.0-620.el9.x86_64 - Kernel release (version)
- #1 SMP PREEMPT_DYNAMIC - Kernel build info
#1
= First buildSMP
= Symmetric Multi-Processing (multi-core support)PREEMPT_DYNAMIC
= Preemptive kernel (better responsiveness)
- Fri Sep 26 01:13:23 UTC 2025 - When the kernel was compiled
- x86_64 x86_64 x86_64 - Machine architecture (processor type)
- 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:
Field | Value | Purpose |
---|---|---|
NAME | CentOS Stream | Human-readable OS name |
VERSION | 9 | Version number |
ID | centos | Short identifier for scripts |
ID_LIKE | rhel fedora | Compatible with RHEL and Fedora |
PRETTY_NAME | CentOS Stream 9 | Full display name |
HOME_URL | https://centos.org/ | Project homepage |
BUG_REPORT_URL | https://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:
Field | Value | Meaning |
---|---|---|
SELinux status | enabled | SELinux is active on this system |
Current mode | enforcing | SELinux actively blocks unauthorized access |
Loaded policy | targeted | Protects specific system services |
MLS status | enabled | Multi-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 privilegessystemctl
- Control systemd system and service managerstatus
- Show runtime status of a servicesshd
- 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 bootdisabled
= doesn't start at boot
- Active: Current running state
active (running)
= service is runninginactive (dead)
= service is stoppedfailed
= 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, interfacesa
- Short foraddress
- 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
= ethernetp0s3
= 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:
Sequence | Meaning | Example Output |
---|---|---|
\u | Username | centos9 |
\h | Hostname | vbox |
\W | Current directory (basename) | random |
\w | Full working directory path | ~/Documents/project |
\t | Current time (24-hour HH:MM:SS) | 16:23:28 |
\d | Date (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 pagesls
- 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:
- Header:
LS(1)
LS
= command name(1)
= manual section number (1 = user commands)
- NAME: Brief description of the command
- SYNOPSIS: How to use the command (syntax)
- 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 .
Navigating Manual Pages
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:
Section | Contents | Example |
---|---|---|
1 | User commands | man 1 ls |
2 | System calls | man 2 open |
3 | Library functions | man 3 printf |
4 | Special files | man 4 null |
5 | File formats and conventions | man 5 passwd |
6 | Games | man 6 fortune |
7 | Miscellaneous | man 7 signal |
8 | System administration | man 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
-
Check kernel version before installing software
- Use
uname -r
to verify compatibility - Some software requires specific kernel versions
- Use
-
Document your system details
- Save
/etc/os-release
info for troubleshooting - Note your kernel version when reporting bugs
- Save
-
Monitor service status regularly
- Use
systemctl status service_name
to check critical services - Look for "failed" status indicators
- Use
-
Understand your network configuration
- Use
ip a
to verify connectivity - Note your IP addresses for remote access
- Use
â Using Documentation
-
Start with --help for quick reference
- Faster than man pages for simple questions
- Good for checking available options
-
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
-
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
- Use
-
Keep documentation handy
- Explore
/usr/share/doc
for package-specific guides - Look for README files and examples
- Check for configuration file templates
- Explore
-
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
Navigation in Documentation
# 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: