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