Introduction To Unix/Linux: Daniel Lucio
Introduction To Unix/Linux: Daniel Lucio
Unix/Linux
Daniel Lucio
Overview
Origins
Why learn it?
Features
Where to use it?
What is it?
What commands are
available?
The Unix philosophy
The Unix shell
Architecture
The Unix Filesystem Tree
What is a terminal?
GNU == Linux?
Terminal Emulators
More Information
Introduction to Unix
Origins
Unix (officially trademarked as UNIX) is a
multitasking, multi-user computer operating
system originally developed in 1969 by a group of
AT&T employees at Bell Labs.
The Open Group, an industry standards
consortium, owns the UNIX trademark.
The term Unix is often used informally to denote
any operating system that closely resembles the
trademarked system, (Ex: Linux, BSD).
Introduction to Unix
What is it?
Unix is an operating system that was designed to be
portable, multi-tasking and multi-user in a time-sharing
configuration.
}
users terminal UNIX Computer
utilities
(commands)
kernel
Development
Environment
Documentation
}
}
Software Hardware
Introduction to Unix
Users view
Server
}
users Client
Operating
System
compute
nodes
users terminal
login nodes
Introduction to Unix
What is a Terminal?
In the past, a computer terminal was an electronic or
electromechanical hardware device that was used for
entering data into, and display data from a computer or a
computing system.
Dumb terminal
Introduction to Unix
MacOS Emulator
Terminal Emulators
Introduction to Unix
Linux computer
Introduction to Unix
Windows Client
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
kraken.nics.utk.edu
Introduction to Unix
Is there a GUI for Unix?
As of June 2013,
95.2% of the
Top500
computers use a
Linux-like O.S.
Source: http://www.top500.org/statistics/list/
Introduction to Unix
Why, learn it?
Have you noticed that in
the movies when the
super-hacker wants to
break into a super-ultra
secure computer the only
way to really get it done is
by typing on a keyboard??
Try http://hackertyper.com/
Introduction to Unix
Why, learn it?
A command line interface can be can be a powerful
expressive way of communicating with a computer.
Introduction to Unix
Why, learn it?
Android is a Linux-based operating system
designed primarily for touchscreen mobile
devices such as smartphones and tablet
computers.
The iOS kernel is based on Darwin OS. Darwin
forms the core set of components upon which
OS X and iOS are based. It is compatible with
the Single UNIX Specification version 3 (SUSv3)
and POSIX UNIX applications and utilities.
Introduction to Unix
Where to use it?
Login to a Unix system like kraken or any other NICS/
UT/XSEDE resource.
http://www.puppylinux.com/
http://www.knopper.net/knoppix/index-en.html
http://www.ubuntu.com/
Introduction to Unix
Where to use it?
Introduction to Unix
Where to use it?
Install Cygwin: a collection of tools which provide a
Linux look and feel environment for Windows.
http://cygwin.com/index.html
https://newton.utk.edu/bin/view/Main/Workshop0InstallingCygwin
http://bellard.org/jslinux/
http://simpleshell.com/
Introduction to Unix
Where to use it?
Introduction to Unix
What type of commands
are available?
Communication
Shells
Comparison
Shell programming
File Management
Storage
Printing
System status
Programming
Text processing
Searching
Introduction to Unix
Communication
ftp!! ! Insecure interactive file transfer program
login!! Sign on to Unix
mailx!! Read and send email
scp!! ! Secure file transfer
! ! Secure interactive file transfer
sftp!
! Sign on to remote Unix using secure shell
slogin!
ssh!! ! Connect to another system, securely
! Connect to another system, INSECURELY
telnet!
Introduction to Unix
Comparisons
cmp!! ! Compare two files, byte by byte
! ! Compare items in two sorted files
comm!
! ! Compare two files, line by line
diff!
diff3!! Compare three files
! Compare directories
dircmp!
sdiff!! Compare two files, side by side
Introduction to Unix
File Management
cd! ! ! Change directory
chgrp! ! Change file group
chmod! ! Change access modes on files
chown! ! Change file owner
cksum! ! Print a file checksum
cp! ! ! Copy files
csplit!! Break files at specific locations
file!! ! Determine a files type
head!! ! Show the first few lines of a file
less!! ! Advanced file viewer
ln! ! ! Create symbolic links
locate!! Locate a given file using a database
Introduction to Unix
File Management (cont)
ls! ! ! List files or contents of directories
md5sum!
! Print a file checksum using MD5 algorithm
mkdir!! Create a directory
more!
! ! Display contents of files by screen
mv! ! ! Move or rename files
pwd!! ! Print working (current) directory
rm! ! ! Remove files
rmdir!! Remove (empty) directories
split!! Split files evenly
tail!
! ! Show the last few lines of a file
wc! ! ! Count lines, words and characters
Introduction to Unix
Printing Commands
lpr!! ! Send to the printer
BSD
Introduction to Unix
Programming
cc! ! ! C compiler
ctags!! C function references (for vi)
ld! ! ! Linker
lex!! ! Lexical analyzer generator
make!
! ! Execute commands in a specific order
od! ! ! Dump input in various formats
splint!
! C program analyzer
strace!
! Trace signals and system calls
strip!! Remove data from an object file
truss!! Trace signals and system calls
yacc!
! ! Parser generator. Can be used with lex.
Introduction to Unix
Searching
egrep!! Extended version of grep
fgrep!! Search files for literal words
! ! Search filenames or directories
find!
! ! Search contents of files for a pattern
grep!
strings!Display text strings found in binary files
Introduction to Unix
Shells
(Command line interpreters)
C family Bourne Family
bash!
! ! GNU s Bourne Again Shell
ksh!! ! The Korn shell
pdksh!! Public domain Korn shell
sh! ! ! Original Bourne shell
zsh!! ! The Z-shell
!
csh!! ! The original BSD C shell
! ! Tenex shell (csh on steroids)
tcsh!
Introduction to Unix
Shell Programming
basename!
! Return filename of a pathname.
dirname!! Return directory portion of a pathname
echo!
! ! ! Write arguments to the standard output
expr!
! ! ! Evaluate expression
id! ! ! ! Return user identity
line!
! ! ! Read a line of input
printf!
! ! Formatted output
sleep!! ! Suspend execution for an interval of time
test!
! ! ! Test a condition
Introduction to Unix
Storage
bunzip2!Expand compressed files .bz2
bzip2!! Compression program
! ! Copy archives in or out
cpio!
! Expand compressed files .gz and .Z
gunzip!
gzcat!! Uncompress files on the fly
! ! File compression program
gzip!
tar!! ! File/tree directory archiver
! ! Uncompress files on the fly
zcat!
Introduction to Unix
System Status
at! ! ! Execute commands later
crontab!Execute commands (periodically) at certain time
! ! Display or set date
date!
df! ! ! Show free disk space and mounted disks
du! ! ! Show disk usage
env!! ! Show environment variables
! Display information about users
finger!
! ! Terminate a running program
kill!
ps! ! ! Show processes
! ! Set or display terminal settings
stty!
who!! ! Show who is logged on
Introduction to Unix
Text Processing
awk! ! ! Pattern-directed scanning and processing language
cat! ! ! Concatenate files or display them
cut! ! ! Select columns for display
ex! ! ! Line editor (underlying vi)
fmt! ! ! Simple text formatter
iconv! ! Character set conversion
join!! ! Merge different columns into a database
paste! ! Merge columns or switch order
sed! ! ! Non-interactive text editor
sort!! ! Sort or merge files
tr! ! ! Translate characters
uniq!! ! Find repeated or unique lines in a file
vi! ! ! Visual text editor
xargs! ! Process many arguments in manageable portions
Introduction to Unix
Text Editing on Unix
There are screen text editors like vi, vim,
ex, emacs, pico, nano,..
There are graphical text editors like gVim,
gEdit, Eclipse, emacs,..
You can process text files via utilities or
custom programs with tools like: sed, awk,
gawk, troff, nroff, ...
Introduction to Unix
Bash commands (Linux)
alias! crontab! false! if! mknod! ram! strace!
unshar!
apropos! csplit! fdformat! ifconfig! more! rcp! su!
until!
apt-get! cut! fdisk! ifdown! mount! read! sudo!
uptime!
aptitude! date! fg! ifup! mtools! readarray! sum!
useradd!
aspell! dc! fgrep! import! mtr! readonly! suspend!
userdel!
awk! dd! file! install! mv! reboot! symlink!
usermod!
basename! ddrescue! find! jobs! mmv! rename! sync!
users!
bash! declare! fmt! join! netstat! renice! tail!
uuencode!
bc! df! fold! kill! nice! remsync! tar!
uudecode!
bg! diff! for! killall! nl! return! tee!
v!
break! diff3! format! less! nohup! rev! test!
vdir!
builtin! dig! free! let! notify-send! rm! time!
vi!
bzip2! dir! fsck! ln! nslookup! rmdir! times!
vmstat!
cal! dircolors! ftp! local! open! rsync! touch!
wait!
case! dirname! function! locate! op! screen! top!
watch!
cat! dirs! fuser! logname! passwd! scp! traceroute!
wc!
cd! dmesg! gawk! logout! paste! sdiff! trap!
whereis!
cfdisk! du! getopts! look! pathchk! sed! tr!
which!
chgrp! echo! grep! lpc! ping! select! true!
while!
chmod! egrep! groupadd! lpr! pkill! seq! tsort!
who!
chown! eject! groupdel! lprint! popd! set! tty!
whoami!
chroot! enable! groupmod! lprintd! pr! sftp! type!
wget!
chkconfig! env! groups! lprintq! printcap! shift! ulimit!
write!
cksum! ethtool! gzip! lprm! printenv! shopt! umask!
xargs!
clear! eval! hash! ls! printf! shutdown! umount!
xdg-open!
cmp! exec! head! lsof! ps! sleep! unalias!
yes!
comm! exit! help! make! pushd! slocate! uname!
.!
command! expect! history! man! pwd! sort! unexpand!
!!!
continue! expand! hostname! mkdir! quota! source! uniq!
###!
cp! export! iconv! mkfifo! quotacheck! split! units!
cron! exprx`! id! mkisofs! quotactl! ssh! unset!
Introduction to Unix
The Unix Shell
The shell is the user interface to Unix.
There is always a default one, but you can
choose from different ones with different
features.
The shell is simply a program that allows
the system to understand your commands.
That is why is called a Command Line
Interpreter.
Introduction to Unix
The Unix Shell Features
Cursor movement with keyboard
arrow keys.
!
Command history
!
Automatic completion
Introduction to Unix
Command line session
Command
Results
from
command
Prompt
Terminal Window
Introduction to Unix
Command line session
user004@sshell
~
$
user004@sshell
~
$
fdsfdsf
bash:
fdsfdsf:
command
not
found
user004@sshell
~
$
date
Thu
Oct
24
14:38:15
UTC
2013
user004@sshell
~
$
cal
October
2013
Su
Mo
Tu
We
Th
Fr
Sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
user004@sshell
~
$
whoami
user004
user004@sshell
~
$
exit
Introduction to Unix
Purpose of the
Command-line interface?
Is a program that takes keyboard commands
and passes them to the operating system to
carry out.
Customization of your Unix session: You can
setup variables, run initialization files, run
startup commands, etc.
Programming: Shells allow you to create small
programs called shells scripts that help
automate tasks.
Introduction to Unix
Filesystem tree
All the files are organized into what is called a hierarchical
directory structure, i.e. organized in a tree-like pattern of
directories. The first directory is called the root directory.
Root Directory
Parent-Directory
Directory
Home directory
Current Working
Directory Sub-directory
Introduction to Unix
Absolute and Relative
Pathnames
carol/play
/users/john/work
Introduction to Unix
Pathname Shortcuts Symbols
.
current
directory
! !
..
parent
directory
! !
~
Home
directory
! !
/ Root directory
Introduction to Unix
File Management
cd! ! ! Change directory
chgrp! ! Change file group
chmod! ! Change access modes on files
chown! ! Change file owner
cksum! ! Print a file checksum
cp! ! ! Copy files
csplit!! Break files at specific locations
file!! ! Determine a files type
head!! ! Show the first few lines of a file
less!! ! Advanced file viewer
ln! ! ! Create symbolic links
locate!! Locate a given file using a database
Introduction to Unix
File Management (cont)
ls! ! ! List files or contents of directories
md5sum!
! Print a file checksum using MD5 algorithm
mkdir!! Create a directory
more!
! ! Display contents of files by screen
mv! ! ! Move or rename files
pwd!! ! Print working (current) directory
rm! ! ! Remove files
rmdir!! Remove (empty) directories
split!! Split files evenly
tail!
! ! Show the last few lines of a file
wc! ! ! Count lines, words and characters
Introduction to Unix
Unix vs Linux vs GNU
UNIX
Is a Unix-like
Is an operating operating system Is a project
system assembled under started by
developed and the model of Richard Stallman,
owned by AT&T free and open with the goal of
source software. creating a a
vs vs complete unix-
The core
compatible
component is
system: compilers,
the kernel libraries,
developed by utilities, ...
Linus Torvalds.
Introduction to Unix
More information
http://www.gnu.org/
http://www.linux.org/
Unix man pages!
http://www.ubuntu.com/
http://linuxcommand.org
Introduction to Unix
Getting examples for
this course
$
wget
http://www.nics.tennessee.edu/~lucio/crashCourse.tgz
--2013-03-15
08:14:28--
http://www.nics.tennessee.edu/~lucio/crashCourse.tgz
...
$
ls
-l
crashCourse.tgz
-rw-r--r--
1
lucio
staff
1587590
Mar
15
08:06
crashCourse.tgz
$
gunzip
crashCourse.tgz
$
ls
-l
crashCourse.tar
-rw-r--r--
1
lucio
staff
4956160
Mar
15
08:06
crashCourse.tar
$
tar
-xvf
crashCourse.tar
x
crash/MPI/pi_mpi.c
x
crash/MPI/pi_mpi
...
Introduction to Unix
$ head list.txt !
alias Create an alias !
apropos Search Help manual pages (man -k)!
apt-get Search for and install software packages (Debian/Ubuntu)!
aptitude Search for and install software packages (Debian/Ubuntu)!
aspell Spell Checker!
awk Find and Replace text, database sort/validate/index!
b!
basename Strip directory and suffix from filenames!
bash GNU Bourne-Again SHell !
bc Arbitrary precision calculator language!
!
$ cut -d ' ' -f3 list.txt | sed '/^.$/d'| head!
alias!
apropos!
apt-get!
aptitude!
aspell!
awk!
basename!
bash!
bc!
bg
Introduction to Unix
Command syntax
Examples: