Shell Script 基礎入門
第一次寫腳本就上手
Windows have CMD
Linux have Shell
Windows have Batch
Linux have Shell Script
What's Shell?
- 「為使用者提供使用者介面」的軟體
- 提供存取系統核心所提供之服務的程式
- 命令列殼層提供一個命令列介面(CLI)
Korn Shell Basics
History of UNIX
What's Shell Script?
- 一堆 Unix 指令的合集
- 將一堆 shell 中的指令放在一個文字檔中來執行
- 類似 Windows 中 .bat 檔的東西
What's Shell Script?
- Kind of Scripting languages
- Command line interpreter
- A computer program designed to be run by the shell
History of shell
第一個流行的 shell 是由 Steven Bourne 發展出來的
為了紀念他所以就稱為 Bourne shell ,或直接簡稱為 sh !
而後來另一個廣為流傳的 shell 是由柏克萊大學的 Bill Joy 設計依附於 BSD 版的 Unix 系統中的 shell
這個 shell 的語法有點類似 C 語言,所以才得名為 C shell ,簡稱為 csh !
由於在學術界 Sun 主機勢力相當的龐大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一個很重要而且流傳很廣的 shell 之一 。
History of shell
cat /etc/shells
- /bin/bash
- /bin/csh
- /bin/ksh
- /bin/sh
- /bin/tcsh
- /bin/zsh
/bin/bash
default shell of linux
/bin/bash
- A Unix shell written by Brian Fox for the GNU Project
- A replacement for the Bourne shell
- Bash = Born Again SHell
/bin/bash
- 使用整數
- 輸入輸出重新導向
- 支援正規表式
- 命令編修能力(History)
- 命令與檔案補全(Tab)
- 命令別名設定(Alias)
Shell Compare
Before we begin
Linux
is case-sensitive
man/info
show the manual
Tab
use it to auto completion
Enter
CR (Carriage Return)
IFS (Internal Field Separator)
- Space
- Tab
- Enter
Ctrl + C
Send signal to end the job
Ctrl + D
Send signal to exit
Ctrl + L
Send signal to clear
Some common commands
- chmod
- chown
- chgrp
- ls
- cd
- pwd
- mkdir
- mv
- curl
- wget
- grep
- sed
- seq
Hello World
#!/bin/bash
STR="HELLO WORLD!!!"
if [ $1 == 1 ]; then
echo $STR
else
echo "QAQQ!"
fi
chmod
chmod +x test.sh
Let's try!
Reference
前社長的兩份簡報
大神的簡報
Today's sample
Common Command Sort
history | \
awk '{print $2}' | \
sort | \
uniq -c | \
sort -nr | \
head
history | \
awk '{if ($2 == "sudo") print $3}' | \
sort | \
uniq -c | \
sort -nr | \
head
Simple Crawler by Shell Script
wget --referer "http://behoimi.org/" --user-agent="Mozilla/5.0" \
$(curl 'http://behoimi.org/post/index?page=1' -A firefox | \
grep "<img class" | \
grep -Eo "http:.*.jpg" | \
sed "s/preview/sample/g" | \
sed "s/\//\/sample/7")
基礎 Shell Script 介紹
By Albert Hsieh
基礎 Shell Script 介紹
資訊創意研究社
- 1,140