SHELL-1.1 Shell Script Introduction and Basics


Make sure to subscribe to my channel for more videos on UNIX, Perl and SQL.
facebook: facebook.com/fuzicast
twitter: @fuzicast
youtube: youtube.com/fuzicast

A shell script is basically a script that runs a bunch of unix commands along with conditional statements, loops statements. When programming shell script, space matters.
#!/bin/bash

# SETTING A VARIABLE
greeting=”Hello World”

# SETTING A GLOBAL/ENVIRONMENT VARIABLE
export blogname=”fuzicast”

# ASSIGN OUTPUT OF SUBSHELL TO VARIABLE
filenames=$(ls -ltr) # note that subshell inherits all environment variables from parent shell
no_of_files=`ls -ltr | wc -l`

# HOW TO CREATE MULTIPLE LINE COMMENT
<<COMMENT
The previous line begins a comment block, this is also known as HERE DOCUMENT
Here's another comment
The following line ends the comment block
COMMENT

# PERFORM ARITHMETIC CALCULATION
var1=45
var2=30
echo $[ $var1 + $var2 ]
(( sum=$var1 + $var2 ))
echo $sum

# IF STATEMENT
if [ $[ $var1 + $var2 ] -gt 70 ];then
echo "sum is greater than 70"
elif [ $[ $var1 + $var2 ] -lt 70 ];then
echo "sum is less than 70"
else
echo "unknown"
fi

# WHILE STATEMENT
var1=30
while [ $var1 -gt 0 ];do
echo "while \$var1 is greater than 0, keep running … "
var1=$[ $var1 – 1 ]
done

# UNTIL STATEMENT
var1=0
until [ $var1 -gt 30 ];do
echo "until \$var1 is greater than 30, keep running …"
var1=$[ $var1 + 1 ]
done

# FOR STATEMENT
for arg in $@;do
echo $arg
done

# CASE STATEMENT
var1=1
case $var1 in
1) echo "hello world"
echo "fuzicast video tutorials";;
2) echo "wrong option";;
3) echo "guess again";;
*) echo "Default option";;
esac

Advertisements

UNIX-1.12 SSH Command


Make sure to subscribe to my channel for more videos on UNIX, Perl and SQL.
facebook: facebook.com/fuzicast
twitter: @fuzicast
youtube: youtube.com/fuzicast

ssh username@host – remote login to a remote host
ssh -i ssh-key username@hostname – using another key to ssh remote host
ssh-keygen -t rsa/dsa – generate ssh keys using either rsa or dsa encryption
sudo useradd -m username – create user with home directory created automatically
passwd username – change password for that user
sudo usermod username -s /bin/bash – set type of shell for user
~/.ssh/config – create this config file and add Host, User, Hostname and IdentityFile settings
Host alias_name
Hostname localhost
IdentityFile ~/.ssh/obama.key
User username
ssh-copy-id username@hostname – copy ssh public automatically to remote host
ssh username@hostname ‘remote-command’ – execute remote commands
ssh -F another_config_file username@hostname – specify different config file
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no username@hostname – do not check for known hosts and add host key automatically to known_hosts file. since we set known_host file to /dev/null, new host key will be added to garbage file.

UNIX-1.11 zip, basename, mktemp, script and rcs commands


Make sure to subscribe to my channel for more videos on UNIX, Perl and SQL.
facebook: facebook.com/fuzicast
twitter: @fuzicast
youtube: youtube.com/yuejdesigner85

zip -r filename.zip file1 file2 file3 – zip and compress files, recursively
unzip filename.zip – unzip a zip file
rmdir dirname – remove empty directory
basename fullpath – returns the file or directory name
dirname fullpath – returns the directory
mktemp – creates a temporary file and outputs temp filename
factor number – list the factors of a number
script -a script.out – starts recording your output screen, ctrl+D to stop recording
kill %% – kills previous command
sudo apt-get install rcs – to install linux revision control system (RCS)
mkdir RCS – create a directory called RCS to store all versions of file
ci script.sh – checks in a file, file is not readable until checked out
ci -u script.sh – checks in a file, file is visible for others to read
co -l script.sh – checks out a file, holds the lock.
co -lr1.1 script.sh – checks out a version of file, holds the lock
rcsdiff script.sh – compares current file with latest checked in version
rcsdiff -r1.1 -r1.2 script.sh – compares version 1.1 and 1.2
which command – tells you where such command resides in
locate keyword – searches for files or paths that contains keyword (that are accessible to you)

UNIX-1.10 Customize Command Prompt


Make sure to subscribe to my channel for more videos on UNIX, Perl and SQL.
facebook: facebook.com/fuzicast
twitter: @fuzicast
youtube: youtube.com/yuejdesigner85

set -o vi – puts your command prompt into VI mode, allows you to execute VI commands
/command – search for command history, n for next match found, N for previous match found
PS1 – variable that holds text of your prompt
PS1=”\H” – displays host name
PS1=”\s” – name of shell
PS1=”\u” – current username
PS1=”\w” – current working directory
PS1=”\@” – current time
PS1=”[\\u@\\H \\W \\@]\\$” – try this
PS1=”\e[x;ym$PS1\e[m” – \e[ starts the color mode, x;ym specifys color, \e[m ends color mode. x;y can be 0;30 to 0;37
case $(id -u) in
0) PS1=”${PS1}# “;;
*) PS1=”${PS1}$ “;;
esac
alias name=”command -options” – creating alias/shortcut commands
alias vi=’vim’
alias ls=’ls -F’
alias ll=’ls -l’
alias la=’ls -la’
alias cp=’cp -ip’
alias mv=’mv -i’