Unix and Linux Fundamentals — A 5-Day Course

contact usEnquire about this course


This course is a practical introduction to Unix and Linux, taught through their most popular incarnation: GNU/Linux.

The course covers the core objectives for Level 1 Linux Professional Institute (LPI) certification (LPI 101 and LPI 102 exams), with a special emphasis on the most practical and useful aspects of the LPI curriculum.

This course focuses on the underlying principles of Unix and Linux in a system-independent way, ensuring that delegates learn the core concepts, which apply throughout Unix and are present in all versions of Linux, no matter who the vendor may be (e.g. UnitedLinux, Red Hat, SuSE, Debian Linux, Mandrake, Sun Solaris and Linux, BSD Unix, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Tru64 Unix, etc.)

At the end of the course delegates will be well-positioned to become serious users, software developers and administrators of any Linux system and will fully understand the application of Linux in serious commercial and other environments.

Suitable for



As with all of our Unix/Linux courses, this course makes extensive use of practical exercises and draws heavily on our trainers’ own experience of implementing Unix and Linux based e-commerce solutions. The particular version of Unix used will vary depending on the location. For convenience we will often use Unix on PC hardware but alternative arrangements can easily be made; the course is version-independent.

This is an instructor-led Unix course. It is primarily designed as a publicly scheduled course for individuals. It can, however, be delivered as in-house / onsite Unix training for corporate groups.

Please contact us at training@gbdirect.co.uk to arrange delivery of this Unix course for your company or to register an interest in an individual place on a public presentation of this or other Unix courses. N.B. Please state clearly, which one of these two options applies to you.

Publicly scheduled dates, locations, and prices

A schedule of dates for this subject is not currently available. Please call 0333 210 0140 or use our contact form to enquire about places and availability.



  • What Linux is, Unix philosophy
  • Linux distributions
  • Logging in, typing commands, logging out
  • Files, directories and paths
  • Creating files with a text editor
  • Viewing files (cat, less)
  • Managing files (cp, mv, rm)
  • Magic dot files and hidden files
  • Absolute & relative paths
  • Filename generation: wild cards
  • Managing directories (mkdir, rmdir)
  • Documentation for commands (man)
  • Useful shell features (command-line editing, file name completion, history)

The Unix and Linux command line

  • Unix shells (bash)
  • Command line syntax (options, arguments)
  • Shell variables and environment variables
  • Command substitution
  • Using pipes to connect programs
  • Useful text filters (wc, sort, uniq, expand, head, tail, nl, tac)
  • Spitting files across disks (split)
  • Finding files
  • Using redirection to connect programs to files
  • Redirect into files with append (>>)


  • The unfortunate diversity of Linux documentation
  • Using man(1)
  • How man pages are divided among ‘sections’
  • Searching for man pages (whatis, apropos, man -k)
  • Printing man pages (man -t)
  • Documentation for shell builtins (help)
  • Using GNU info documentation (info)
  • Documentation under /usr/share/doc

Text editing with Vi

  • Unix is all about text
  • Vi: the standard Unix editor
  • The concept of ‘modes’ in a modal editor
  • Vi clones, extensions to vi
  • Other powerful Unix text editors
  • Practical work learning Vi and Vim

Configuration Files

  • Conjuration Files
  • Shell Conjuration Files
  • Changing Environment Variables
  • Changing the Shell Prompt
  • Other Useful Variables
  • Shell Aliases
  • Binding Keys with Readline

Processes and jobs

  • What processes are
  • The properties of a process
  • Parent processes and child processes
  • Job control (fg, bg, jobs)
  • Suspending processes (Ctrl+Z)
  • Running programs in the background (&)
  • Long-lived processes (nohup)
  • Monitoring processes (ps, pstree, top)
  • Killing processes and sending signals a process (kill, killall, xkill)
  • Process niceness/priority (nice, renice)

Searching Text Files Using Regular Expressions

  • Using Regular Expressions
  • grep Command Line Options
  • Pattern Matching basics
  • Regular Expression Examples
  • Alternation and Grouping
  • Extended Regular Expression Syntax
  • sed
  • Line Selection with sed


  • Running commands at particular times (at, atq, atrm)
  • Scheduling commands to run repeatedly (cron)
  • Different ways of configuring cron (/etc/crontab, etc)
  • User crontabs (crontab command)
  • Output of cron & at jobs
  • At Command and Cron Job Permissions

File system concepts and use

  • The unified Unix file system
  • The Filesystem Hierarchy Standard
  • Shareable and Non-Shareable Data
  • Static and Dynamic Data
  • Special file types
  • /dev and /sys on Linux
  • Symbolic links (ln -s)
  • Inodes and directory entries
  • Hard and Symbolic/soft links
  • Preserving links while copying and archiving
  • finding programs with which and type

Archiving and Backups

  • Compressing Files with gzip
  • Other Compression Tools
  • Archiving Files with tar
  • Listing and extracting the Files in tar Archives
  • Backup Media
  • Types of Backup and Strategy
  • What Not to Backup
  • Device Files for Accessing Tapes
  • Controlling Tape Drives with mt
  • Other Backup Software

Managing User Accounts

  • Users and Groups
  • /etc/passwd & /etc/group
  • Shadow Passwords and Groups
  • Changing user passwords
  • Adding new users
  • Setting Up Home Directories for New Accounts
  • Removing users
  • Modifying users
  • Locking Accounts
  • Managing groups
  • /etc/nsswitch.conf

Filesystem security

  • Users and groups
  • The ‘root’ user, or superuser
  • Configuring sudo
  • Changing file ownership (chown)
  • Changing file group ownership (chgrp)
  • More complex ways of changing ownership (recursively, changing owner and group simultaneously)
  • Examining permissions with ls -l and stat
  • Permissions on files
  • Permissions on directories
  • Setuserid, setgroupid & sticky permissions
  • How permissions are applied
  • Changing permissions (chmod)
  • The special ‘sticky bit’ mode on directories
  • Setgid and setuid permissions, their effect on files and directories
  • Default permissions for new files (umask)
  • Access Control Lists (ACLs)

Creating Partitions and File systems

  • Disks, partitions, individual file systems and Filesystem types
  • Naming of disk and partition devices (/dev/hda, etc)
  • Creating and deleting partitions (fdisk)
  • Raid and Mirrors
  • Logical Volume Management
  • Resizing a partition
  • Mounting and unmounting file systems (mount, umount, /etc/fstab)
  • Mounting a file — loopback
  • Disk labels
  • Swap space
  • Checking available free space and space used by files (df, du)
  • Checking and correcting the integrity of file systems (fsck)
  • Journaling file systems, ext2, ext3 & ext4

Booting and runlevels

  • The boot process: from BIOS to kernel to userspace
  • Setting kernel parameters
  • Configuring a boot loader: LILO and Grub
  • Runlevels and init scripts
  • Configuring services to run at boot
  • Securing single-user mode (sulogin)
  • Determining and changing run level
  • Shutting down and rebooting the system
  • Starting and stopping individual services

Logging System Events

  • syslog daemon
  • /etc/syslog.conf
  • Examining Logs: tail & less and grep
  • Linux Kernel Messages
  • rsyslog — the new syslog
  • Log Rotation, sample /etc/logrotate.conf

Advanced shell usage

  • Quoting (single quotes, double quotes, backslashes)
  • Combining quoting mechanisms
  • Globbing patterns (*, ?, [])
  • Generating file names and other text with {} braces
  • The tee command

Installing software

  • Managing software installation (advantages of package management)
  • Debian package management:
    • Package naming and version numbering
    • Searching for packages (apt-cache)
    • Using Apt to get and install packages (apt-get)
    • Low-level package management (dpkg)
  • Red Hat package management:
    • Installing and upgrading RPM packages (rpm and yum)
    • Which packages are installed, which package a file came from
    • Examining RPM package files
    • Verifying integrity of the installation
    • yum configuration

Making and Installing Programs from Source

  • Obtaining Source Packages
  • Unpacking Archives
  • Running the configure Script
  • Using make to Build Software and install it
  • Choosing Where to Install Software

Managing Shared Libraries

  • Executables and Libraries
  • Library Files and Linking
  • Using the ldd Command
  • Finding Libraries
  • Using ldconfig
  • Static Linking

The Linux kernel

  • What the kernel is and does
  • Kernel modules (lsmod, modprobe, rmmod)
  • Module dependencies (depmod)
  • Examining modules (modinfo)
  • Configuring kernel modules (/etc/modprobe.conf)
  • Commands in <filename>modprobe.conf</filename>
  • Recompiling the kernel
  • Configuring, compiling and installing the kernel and modules (make menuconfig, make xconfig, etc)
  • Loading and unloading kernel modules (lsmod, modprobe, rmmod)
  • Creating the initial root disk

The X window system

  • What X is
  • The rôle of window managers and desktop environments
  • Startup and session scripts
  • Terminal emulators (xterm, etc)
  • Configuring X Under Debian and Red Hat

Shell scripting and configuration

  • The point of shell programming
  • The ‘she-bang line’ (#!/bin/sh)
  • Outputting text with (echo)
  • Reading input (read)
  • Writing simple shell functions
  • Sourcing files
  • Command substitution again
  • Conditional execution (||, &&, if, else)
  • Looping (for, while, seq)
  • Infinite loops (while true)
  • Testing for the existence and type of files (-f, -d, etc)
  • Sending email from scripts (mail)

Awk and Perl

  • Scripting languages: shells and dynamic
  • awk variables, user and predefined
  • awk patterns and actions
  • awk functions
  • perl variables and constants, user and predefined
  • Example perl scripts: who is logged in, database use, networking

TCP/IP networking configuration

  • Overview of modern TCP/IP networking, rôles of IP, TCP, UDP and ICMP
  • Domain names and IP addresses (host, dig)
  • Port numbers (/etc/services)
  • Network interfaces (ifconfig, ifup, ifdown)
  • Kernel routing tables (route)
  • Configuring interfaces under Debian and Red Hat
  • Finding and setting the hostname (hostname, /etc/hostname)
  • DHCP client hosts
  • Network diagnostics (ping, traceroute, netstat)

Linux network services

  • Overview of network services under Linux, operating daemons
  • Sending signals to daemons
  • The advantages and disadvantages of using inetd and xinetd, basic configuration of both
  • Secure Shell: ssh and sshd

Internet Daemons and Services

  • Configuring the resolver libraries
  • /etc/hosts & /etc/resolv.conf
  • Structure of domain names, registering names (whois)
  • Running a DNS server (BIND), setting up a caching-only name server, /etc/named.conf
  • Running an MTA (email server)
  • Email clients (MUAs)
  • Basic configuration of Exim
  • Routing mail with MX (mail exchanger) DNS records
  • Mail aliases
  • Fetching Mail with fetchmail
  • Webservers: apache configuration file
  • Configuring named virtual hosts
  • Dynamic web pages
  • Logging in Apache

Networked file systems

  • Configuring NFS (/etc/exports, /etc/fstab)
  • Viewing Exports (showmount, portmapper & rpcinfo)
  • Mounting remote file systems
  • Basic Samba configuration (smb.conf, SWAT)