This document is a presentation on introducing Linux shell scripting. It begins by stating that the talk is aimed at those who can open a terminal and type commands. It then outlines what will be covered, including basic shell commands, combining commands, creating simple scripts, and using cron for automation. The document provides examples of commands for files, disks, processes, and networks. It also demonstrates how to combine commands using pipes and redirection. Finally, it shows how to create simple scripts and discusses using cron for automation.
1. Shell Scripting
An Introduction to
Linux Shell Scripting
Vern Ceder
Canterbury School, Fort Wayne
Intro to Shell Scripting
Vern Ceder
Canterbury School
2. 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 Ceder
Canterbury School
3. 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 Ceder
Canterbury School
4. What's Coming
# Why use the shell?
# Basic shell commands
# Combining shell commands
# Creating simple scripts
# Automation with cron
Intro to Shell Scripting
Vern Ceder
Canterbury School
6. $ 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 Ceder
Canterbury School
7. 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 Ceder
Canterbury School
9. Take ls, for example
# ls list files
# ls l list more info
# ls a list ALL
# ls t list by date
# ls R list Recursive
# ls latR or combine
Intro to Shell Scripting
Vern Ceder
Canterbury School
10. More file commands
# cp a b copy files
# mv a b move (rename)
# rm a delete
# rm rf a remove EVERYTHING
(danger, danger)
Intro to Shell Scripting
Vern Ceder
Canterbury School
11. Access commands
# chown user:group a change file owner
# chmod ugo+rwx a change permissions
Intro to Shell Scripting
Vern Ceder
Canterbury School
12. disk commands
# df get free space
# du /folder get amount used
# mount show/change disks
mounted
Intro to Shell Scripting
Vern Ceder
Canterbury School
13. process commands
# ps ax show processes
# kill processid kill a process
# fg foreground
# bg background
Intro to Shell Scripting
Vern Ceder
Canterbury School
14. network commands
# ifconfig show interfaces
# ping ping a host
# tracepath follow a packet
Intro to Shell Scripting
Vern Ceder
Canterbury School
15. So you can...
# Manage files
# Monitor disks
# Control user access
# Manage/debug network connections
Intro to Shell Scripting
Vern Ceder
Canterbury School
16. DANGER!
You can also...
Completely destroy your system
Don't experiment/practice as
root!
Intro to Shell Scripting
Vern Ceder
Canterbury School
17. 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 Ceder
Canterbury School
18. 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 Ceder
Canterbury School
19. The “unix idea”
# Small, specific utilities
# Text input/output
# “pipes” to connect one utility
to another
Intro to Shell Scripting
Vern Ceder
Canterbury School
20. Commands to pull
it all together
# cat dump file
# grep find a pattern
# cut cut out a field
# sort sort
# uniq remove dupes
# head, tail get part of file
# more, less page through file
Intro to Shell Scripting
Vern Ceder
Canterbury School
21. 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 Ceder
Canterbury School
22. For example...
Find out who is hogging the home
disk...
# du
# sort
# tail
# du cks * | sort rn | head
Intro to Shell Scripting
Vern Ceder
Canterbury School
23. Another example...
Who's tried to log into your box?
# cat
# grep
# cut
# sort
# uniq
Intro to Shell Scripting
Vern Ceder
Canterbury School
25. Scripts
# To avoid retyping (and sometimes
refiguring out)
# To handle more complex chores
Intro to Shell Scripting
Vern Ceder
Canterbury School
26. Creating a simple script
# Text file (text editor)
# The “shebang” line
# Shell commands
# Make it executable
Intro to Shell Scripting
Vern Ceder
Canterbury School
27. “space hog” as script
#!/bin/bash
du cks $1 | sort rn | head
Intro to Shell Scripting
Vern Ceder
Canterbury School
28. “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 Ceder
Canterbury School
29. What I didn't cover
(a very partial list)
# find # editors
# tar # Sed & awk
# environment # cron & crontab
vars # loops
# echo # if
# sleep # test ( [ ] )
Intro to Shell Scripting
Vern Ceder
Canterbury School
30. 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 Ceder
Canterbury School
32. 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 Ceder
Canterbury School