Download - Intro to Linux Shell Scripting
Intro to Shell Scripting
Vern CederCanterbury School
Shell Scripting
An Introduction to Linux Shell Scripting
Vern CederCanterbury School, Fort Wayne
Intro to Shell Scripting
Vern CederCanterbury School
This talk ISN'T for
# Experienced shell scripters
# People who own Tshirts saying “Go away or I will replace you with a very small shell script”
# Anyone with a favorite shell hack they MUST share... ;)
Intro to Shell Scripting
Vern CederCanterbury School
This talk is for you if...
# You can open a terminal
# You can type
# You're interested in how to combine those two things to make your life easier
Intro to Shell Scripting
Vern CederCanterbury School
What's Coming
# Why use the shell?
# Basic shell commands
# Combining shell commands
# Creating simple scripts
# Automation with cron
Intro to Shell Scripting
Vern CederCanterbury School
Do you...
Intro to Shell Scripting
Vern CederCanterbury School
$ Need to manage computers not on your desk?
$ Need to perform complex operations, on lots of files?
$ Need to repeat the same operations on a lot of machines?
$ Wish that some of this routine stuff could just happen?
Intro to Shell Scripting
Vern CederCanterbury School
What's a “shell”?
# A program that uses (text) commands to talk to the OS
# DOS (e.g.)
# sh, bash, csh, ksh, zsh, etc...
# This talk will assume bash
Intro to Shell Scripting
Vern CederCanterbury School
Basic Shell Commands
# Files – ls, cp, mv, rm, mkdir
# Access – chmod, chown
# Disks – df, mount
# Processes – ps, kill, fg, bg
# Network – ifconfig, ping, tracepath
Intro to Shell Scripting
Vern CederCanterbury School
Take ls, for example
# ls
# ls l
# ls a
# ls t
# ls R
# ls latR
list files
list more info
list ALL
list by date
list Recursive
or combine
Intro to Shell Scripting
Vern CederCanterbury School
More file commands
# cp a b
# mv a b
# rm a
# rm rf a
copy files
move (rename)
delete
remove EVERYTHING (danger, danger)
Intro to Shell Scripting
Vern CederCanterbury School
Access commands
# chown user:group a
# chmod ugo+rwx a
change file owner
change permissions
Intro to Shell Scripting
Vern CederCanterbury School
disk commands
# df
# du /folder
# mount
get free space
get amount used
show/change disks mounted
Intro to Shell Scripting
Vern CederCanterbury School
process commands
# ps ax
# kill processid
# fg
# bg
show processes
kill a process
foreground
background
Intro to Shell Scripting
Vern CederCanterbury School
network commands
# ifconfig
# ping
# tracepath
show interfaces
ping a host
follow a packet
Intro to Shell Scripting
Vern CederCanterbury School
So you can...
# Manage files
# Monitor disks
# Control user access
# Manage/debug network connections
Intro to Shell Scripting
Vern CederCanterbury School
DANGER!
You can also...
Completely destroy your system
Don't experiment/practice as root!
Intro to Shell Scripting
Vern CederCanterbury School
But how do you know what does what?
# Man – the best way to find out what a command does
# Apropos – the way to find the right command
# tldp.org – man pages and howto's
# Google ;)
Intro to Shell Scripting
Vern CederCanterbury School
So?
How is this better than using a file manager?
# Powerful – you can do ANYTHING
# Remote – you can do it from ANYWHERE
# “Combinable” (that's next)
Intro to Shell Scripting
Vern CederCanterbury School
The “unix idea”
# Small, specific utilities
# Text input/output
# “pipes” to connect one utility to another
Intro to Shell Scripting
Vern CederCanterbury School
Commands to pull it all together
# cat
# grep
# cut
# sort
# uniq
# head, tail
# more, less
dump file
find a pattern
cut out a field
sort
remove dupes
get part of file
page through file
Intro to Shell Scripting
Vern CederCanterbury School
Introducing the “pipe”
# | connects the output of one command to the input of another
# > (and >>) puts the output into a file
# < puts a file to input
Intro to Shell Scripting
Vern CederCanterbury School
For example...
Find out who is hogging the home disk...
# du
# sort
# tail
# du cks * | sort rn | head
Intro to Shell Scripting
Vern CederCanterbury School
Another example...Who's tried to log into your box?
# cat
# grep
# cut
# sort
# uniq
Intro to Shell Scripting
Vern CederCanterbury School
cat /var/log/auth.log | grep "Failed password" | grep v "invalid" | cut d " " f 9,11 | sort | uniq
Intro to Shell Scripting
Vern CederCanterbury School
Scripts
# To avoid retyping (and sometimes refiguring out)
# To handle more complex chores
Intro to Shell Scripting
Vern CederCanterbury School
Creating a simple script
# Text file (text editor)
# The “shebang” line
# Shell commands
# Make it executable
Intro to Shell Scripting
Vern CederCanterbury School
“space hog” as script
#!/bin/bash
du cks $1 | sort rn | head
Intro to Shell Scripting
Vern CederCanterbury School
“login finder” as script
Login finder as a script
cat $1 | grep "Failed password" \ | grep v "invalid" | \
cut d " " f 9,11 |grep $2 | \
sort | uniq
Intro to Shell Scripting
Vern CederCanterbury School
What I didn't cover(a very partial list)
# find
# tar
# environment vars
# echo
# sleep
# editors
# Sed & awk
# cron & crontab
# loops
# if
# test ( [ ] )
Intro to Shell Scripting
Vern CederCanterbury School
But what about automation?
What if you need to repeat the same script every month? Every week? Every day? Every hour? Every minute?
Intro to Shell Scripting
Vern CederCanterbury School
Automating with cron
# cron lets you run scripts at any time, as any user
Intro to Shell Scripting
Vern CederCanterbury School
Print Resources
# Classic Shell Scripting, Robbins & Beebe, O'Reilly
# Think Linux, Jon Lasser, QUE
# UNIX Hints and Hacks, Kirk Waingrow, QUE
# Linux in a Nutshell, Ellen Siever, et al. O'Reilly
# Many books on Linux/UNIX automation and administration
Intro to Shell Scripting
Vern CederCanterbury School
Web Resources
# See http://tech.canterburyschool.org/tech/shell
# Google “linux shell scripting” or the like
Intro to Shell Scripting
Vern CederCanterbury School
Video Resources
# http://video.google.com
Search for “linux shell scripting tutorial”