Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
CIS 527
Command Line Interfaces & Simple Scripts
Linux Commands
Linux Commands 2
Linux File Permissions
PowerShell Commands
PowerShell Commands 2
PowerShell Commands 3
File Output
Special Directories
Building Shell Scripts
Open a new file using a text editor
$ nano script.sh
Add the following header at the top
#!/bin/bash
Building Shell Scripts
Input commands below (1 per line)
cd ~/bin
ls -al
Save the file (CTRL + X) and run
$ chmod u+x ./script.sh
$ ./script.sh
Shell Hello World
#!/bin/bash
echo "Hello World"
exit 0
Shell Hello World
echo "Hello World"
echo prints text
exit 0
exit stops the command
Simple Script
#!/bin/bash
#batman.sh
if (( $# < 1 || $# > 1 )); then
echo "Usage: batman.sh <name>"
exit 1
fi
if [ "$1" = "Batman" ]; then
echo "Hello Mr. Wayne"
elif [ "$1" = "Robin" ]; then
echo "Welcome back Mr. Grayson"
else
echo "Intruder alert!"
fi
exit 0
Shell Script Parameters
$1 - First Parameter
$2 - Second Parameter
...
${10} - Tenth Parameter
${11} - Eleventh Parameter
$# - Number of Parameters
$* - All Parameters (as String)
Conditionals
if (( $# < 1 || $# > 1 )); then
Double parens for arithmetic evaluation
if [ "$1" = "Batman" ]; then
Square brackets for logical test
(using Linux 'test' command)
Loop Script
#!/bin/bash
#listfiles.sh
files=`ls $* 2> /dev/null`
for afile in "$files"; do
echo "$afile"
done
exit 0
Loops
files=`ls $* 2> /dev/null`
Declares a new variable $files
Backticks (`) get output of command
for afile in "$files"; do
Perfom commands below once for each item in $files
Environment Variables
Stores information about the system that can be used in scripts
$ printenv
Prints the current environment variables
PATH Variable
Tells your system where to look for binary files and scripts
$ export PATH=$PATH:$HOME/bin
Add a folder to the path
(Add this line to ~/.bashrc to make it permanent)
Building PowerShell Scripts
Open the PowerShell ISE (search for it on the Start menu)
You can also use a text editor such as Notepad
To be able to run them, open an Administrative Powershell and enter "Set-ExecutionPolicy Unrestricted"
PowerShell Scripts
Write-Host "Hello World"
return
PowerShell Parameters
Param(
[string]$computerName,
[string]$userName
)
Simple Script
Param(
[string]$user
)
if ( -not ($user)){
Write-Host "Usage: batman.ps1 <name>"
return
}
if ($user.CompareTo("Batman") -eq 0){
Write-Host "Hello Mr. Wayne"
}else{
if ($user.CompareTo("Robin") -eq 0){
Write-Host "Welcome back Mr. Grayson"
}else{
Write-Host "Intruder alert!"
}
}
return
Loop Script
param(
[string]$path
)
$files = Get-ChildItem $path
foreach($file in $files){
Write-Host $file.name
}
Environment Variables
Control Panel > System and Security > System > Advanced System Settings > Environment Variables
Add a new variable called PATH to the user variables and give it the value "C:\Users\cis527\bin"
Review
Select Statement
#!/bin/bash
#simplemenu.sh
OPTIONS="Build Run Clean Quit"
select opt in $OPTIONS; do
if [ "$opt" = "Build" ]; then
echo "Building project..."
elif [ "$opt" = "Run" ]; then
echo "Running project..."
elif [ "$opt" = "Clean" ]; then
echo "Cleaning project..."
elif [ "$opt" = "Quit" ]; then
echo "Exiting..."
break
else
echo "Invalid Input"
fi
done
exit 0
Select Statement
User Input
#!/bin/bash
#simpleinput.sh
echo "Input your name and press [ENTER]"
read name
echo "Welcome $name!"
exit 0
User Input
Scheduling Tasks - Cron
Cron allows you to schedule tasks to run a specific times
Very useful for tasks that need done regularly
Cron HowTo
$ crontab -e
Edit the current cron schedule
$ crontab -l
View the current cron schedule
$ sudo crontab -e
Edit the root cron schedule
Crontab
Crontab Timing
m h dom mon dow
15 5 * * 0
5:15 AM every Sunday (0)*/10 8 - 16 * * 1-5
every 10 min 8AM - 5PM weekdays0 0 1 1 1
run at 12:00 AM every January 1 and every Monday@reboot
run once, after system startsPowerShell Menu
$title = "Select Options"
$message = "Choose an option to perform"
$build = New-Object `
System.Management.Automation.Host.ChoiceDescription `
"&Build", "Build the project"
$run = New-Object `
System.Management.Automation.Host.ChoiceDescription `
"&Run", "Run the project"
$clean = New-Object `
System.Management.Automation.Host.ChoiceDescription `
"&Clean", "Clean the project"
$quit = New-Object `
System.Management.Automation.Host.ChoiceDescription `
"&Quit", "Quit"
$options = `
[System.Management.Automation.Host.ChoiceDescription[]] `
($build, $run, $clean, $quit)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
switch ($result)
{
0 {"You selected Build"}
1 {"You selected Run"}
2 {"You selected Clean"}
3 {"You selected Quit"}
}
PowerShell Menu
PowerShell Input
$name = Read-Host `
"Input your name and press [ENTER]"
Write-Host "Welcome $name!"
PowerShell Input
Windows Task Scheduler
Windows Create Task
Windows Create Task
Windows Create Task
Assignments