Content used in this presentation from various sources, including Wikipedia and xkcd. Sources available in the commit messages. Feel free to fork this presentation and use it for your own needs. I'd be happy to hear if you find it useful.
Re-written in a new, dedicated programming language named C, 1972
Became the first portable operating system
Due to legal limitations, source code was available for anyone who asked for it, and quickly became favorite in academic institutes as well as commercial vendors.
"Printer Drivers Crisis"
started in 1983 by Richard Stallman, with the goal of creating a "complete Unix-compatible software system" composed entirely of free software.
Stallman wanted computer users to be "free", as most were in the 1960s and 1970s – free to study the source code of the software they use, free to share the software with other people, free to modify the behavior of the software, and free to publish their modified versions of the software.
The GNU philosophy was later published as the GNU Manifesto in March 1985.
Linux kernel + GNU software =
Linux is not a whole operating system, but only a kernel.
The operating system consists of a kernel, and a large set of applications.
Collecting applications is a mess, and people started building software collections called Distributions.
GNU/Linux is everywhere
Servers and supercomputers — more than 90% of today's 500 fastest supercomputers run Linux
Mobile phones — Android, Bada, Tizen, Firefox OS, Mobilin, MeeGo
Smart TVs, Printers, PDAs, Home entertainment systems, ATMs, etc.
Linux has few different display managers — X [Windows], XOrg, WayLand etc.
Linux has multiple graphical environments — GNOME, KDE, Unity, XFCE, Cinnamon etc.
Linux has large collection of software running natively, such as web browsers, productivity suits, etc.
If something is missing, there is good chance it has alternatives, sometimes even better than the original software.
Linux has software compatibility layer for running most of Windows software (WINE).
It is possible to run emulated operating system using Xen, Qemu, DosBox, VirtualBox, VMWare, etc.
Linux software repositories
In Linux you should never install software directly from the web.
Instead, there are download servers called Repositories.
Later on, some operating systems started to serve software in Application Stores, but these are yet incomplete comparing to the rich software collections available on mainstream Linux.
Linux user permissions
Linux is a multi-user operating system.
Groups consists users. Each user can be listed in several groups.
Only the first user, named root has the administration rights.
Linux user policy
Users can become root by logging-in as root (not recommended!),
become root using the su root command,
Modern Linux can run commands as root using the sudo command, which requires the user to be in the sudoers group.
Linux file permissions
In normal Linux filesystems, there are three kinds of permissions to each file or directory; Read, Write, Execute
Each permission can be given to exact one user (the file owner), one group, and everyone else.
rw- r-- --- user group filename
… means that the user has read/write permissions, the group can read the file, and the file is inaccessible to others.
Linux filesystem structure
In Linux, everything lives in a logical filesystem…
/ — The Filesystem root
/boot — System's boot loader
/dev — The location of every hardware device
/proc — Every process represents a file
/home/<user> — User directories
Linux filesystem structure
/etc — Applications configurations
/lib — Shared libraries
/bin — System binaries
/usr — Non-critical files
/var — Variable files; Files that change periodically
/tmp – Temporary storage; empty on boot time
/mnt – Custom mount points; Also /media
Most operating systems have Command Line Interface in addition to the Graphical UI.
Linux isn't different. In fact, almost everything in Linux can be done from the command line.
Local and remote
It is possible to open command line from the Terminal application, or from any of the attached Virtual Terminals.
Remote access possible using SSH, which stands for Secure SHell, and can transfer files, execute commands, and drop the remote user into local shell.
PuTTY is a great SSH client for Windows, WinSCP is great client for SCP/SFTP/FTP for Windows.
ls – Show content of current directory (similar to DOS dir command)
cd – Change directory (similar to DOS cd command)
pwd – Show current directory (again, similar to DOS cd command)
mkdir – Create directory (similar to DOS mkdir/md commands)
cat – Print file content (Similar to DOS type command)
rmdir – Remove directory (similar to DOS rmdir/rd commands)
rm – Remove file(s) (similar to DOS del command)
chmod – Change file permissions (similar to Windows cacl command)
chown – Change file owner
chgrp – Change file group
ps – Show list of processes (similar to Windows tasklist command)
kill – Terminate a running process
man – Provide documentation for a given command (Very handy! ☺)
touch – Create an empty file/Set file modification time to now
sort – Sort a given text file
grep – Find given patterns in text stream
sed – Manipulate text streams
Linux contain three different streams:
STDIN – Standard Input
STDOUT – Standard Output
STDERR – A stream dedicated to print error messages
ls > filename – Redirect command output to file
cat foo >> filename – Append command output to file
cat < filename – Read input from file
ls &> filename – Redirect both STDOUT and STDERR to a file
The pipe operator | use the output of one command as the input to the second command.
It allow us run few commands in a batch so each command will process the output of the previous command.
Single Line scripting
$ date # Show current time/date
Wed Mar 20 23:18:55 IST 2013
$ date | grep -o ..:..:.. # Extract the time pattern
$ ls | grep [א-ת] > list.txt # Find files contains Hebrew letters and write these to a file
You already know [almost] everything!
Save commands to a file using your favorite text editor or cat > filename
Give execute permission to your script by chmod +x filename