Introduction to Unix part 3

Slides:



Advertisements
Similar presentations
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
Advertisements

第一單元 建立java 程式.
Introduction to C Programming
Chapter 4 流程控制.
File Access 井民全製作.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
Chapter 5 迴圈.
第三讲 shell 程序设计.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Visual C++ introduction
C Shell Programming.
Shell Script 程式設計.
JDK 安裝教學 (for Win7) Soochow University
Linux基本操作 實習1.
基礎linux指令說明 Part 1 資訊組 陳宜徽.
Shell程序设计 曙光信息产业股份有限公司.
第五章 shell 编程 shell 编程的基本过程分为三步: 1. 建立 shell 文件 包含任意多行操作系统命令或shell命令的文本
JAVA 程式設計與資料結構 第十二章 JAR File.
進度 計算機概論與硬體知識 網路基礎知識 安裝與指令 作業系統的基礎技能 vi文書編輯器 Shell與Shell Script
Linux 基础与常用命令简介 生物信息学培训班 杭州,2018年1月18日 周银聪.
第二天 计算机基础技能培训 (一)linux基础知识
1. 檔案File  開新New  檔案Empty File (再另存新檔D:\hello.c)
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
課堂練習解答.
雲端計算.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
Fortran 程式語言 之 編與譯(二) 張基昇.
第12章 shell编程基础 本章主要介绍shell编程的基础知识。shell脚本的执行类似于Linux下的任何其他命令,脚本可以包含复杂的逻辑,也可以包含一系列Linux命令行指令。在一个shell程序内可以运行其他shell脚本。通过本章的学习,读者可以学到如何使用bash(最流行的Linux.
第一單元 建立java 程式.
VS.NET 2003 IDE.
Redirection 概念說明 input redirection: 將資料“再”輸入到某一命令去做處理 (用<符號)
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab6.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
如何有效率的學習Linux 培養組合能力 多用程式, 少寫程式 從錯誤訊息中學習 養成略讀 “各種文件” 加強英文基本閱讀能力 勤作筆記
雲端計算.
Unix 指令2.
輸入&輸出 函數 P20~P21.
第六章 Shell基础.
Introduction to C Programming
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
Unix 指令1.
CH05. 選擇敘述.
期末考.
Presenter: Chih-Hsun Wang Date: 2015/9/15
杨振伟 清华大学 第一讲:Linux环境下编程(1)
挑戰C++程式語言 ──第8章 進一步談字元與字串
VS.NET 2003 IDE.
UNIX Shell.
利用 EditorConfig 自訂文字編輯器設定
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
函數應用(二)與自定函數.
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
程式移植.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
安裝JDK 配置windows win7 環境變數
杨振伟 清华大学 第一讲:Linux环境下编程(1)
開發Java程式語言的工具 JDK.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Introduction to Unix part 3 Shell Script

使用者環境與起始檔 內容: Shell環境運作 Shell的種類 Shell Script Programming

Shell 環境運作 Shell 運作程序 出現 提示符號(”%” 記號)準備接受命令。 使用者(或終端機傳輸)輸入命令。 依照 PATH 變數,尋找命令位置。 PATH裡面存著命令所存放的目錄, ex:PATH=/usr/local/bin:/usr/sbin (分隔符號為:) 解譯並執行命令。 輸出結果或錯誤訊息給使用者。 再出現 Prompt 準備接受下一個命令。 Q: 為什麼在pads1執行我寫好的prgram calc, 必須要./calc呢? A: 因為你的PATH裡面沒有存著現在目錄(.), 所以系統去PATH變數找不到calc的目錄, 只要將.也加入PATH裡, 之後就可以只輸入calc執行

外殼與核心 系統核心 外殼 系統程式與系統函數所構成 外殼工具 Bourne Shell (sh) Korn Shell (ksh) Bourn Again Shell (bash) C Shell (csh) TC Shell (tcsh)

使用者環境 環境變數 檢視環境變數 變更環境變數 echo $PATH export PATH=$PATH:. (將目前目錄存到PATH中) 要使用任何的shell變數都必須要加$ 使用export設定變數的值只會在這次登入有效, 下次登入必須重新設定 (所以將export PATH=$PATH:.寫在shell初始設定檔.tcshrc) Note: 使用pads1的人請寫在.bashrc; cs工作站沒有export指令 變 數 範 例 說 明 HOME /user/dr961/d9662828 使用者家目錄 PATH /usr/local/bin:/bin: 搜尋命令路徑 PWD /bin 目前工作目錄位置 SHELL /bin/bash 登入外殼程式(環境) USER nien 使用者登入名稱

Shell Script 程式簡介 何謂 Shell script 相當於dos裡的批次檔 Shell script (命令稿) 將欲連續執行多個命令寫在file裡 通常副檔名為.sh Shell script (命令稿) 多個外殼命令 + 變數 + 程式控制結構 外殼命令 ls, cp, cat, mkdir, …. 程式控制結構 if, while, for,….. 變數 環境變數, 自訂變數, 位置變數 example.sh mkdir test2 cp test1/* test2 rm –r test1

除了第一行的『 #! 』是用來宣告 shell 的之外,其他的 # 都是『註解』用途 Shell Script 程式簡介 和c program的差別 Script為interpreted languages; 而c program必須先透過compiler編譯成可執行檔 通常第一行 為#!/bin/sh 宣告這個 script 使用的 shell 名稱,讓系統知道該程式需要使用什麼 shell 來執行 除了第一行的『 #! 』是用來宣告 shell 的之外,其他的 # 都是『註解』用途

Shell Script 程式簡介 Shell script 執行 步驟 1:利用 pico 編輯程式 步驟 2:設定成可執行檔 pico hello.sh 步驟 2:設定成可執行檔 chmod +x hello.sh 步驟 3:執行 shell script 程式 hello.sh

Shell Script 程式簡介 Shell script 變數 自訂變數: 可自己隨意設定變數, 如同在c program可宣告任意名字的變數, 在shell裡變數預設為string a=5 echo “intger = $a” 要使用此變數時, 必須在變數前加$

輸入輸出語法 輸出敘述 – echo 輸入敘述 – read echo “Good lucky to you” 相當於C program裡的printf 一定會換行 輸入敘述 – read echo “What is your name =>” read name 會將使用者的輸入存到name 相當於C program裡的scanf

輸入輸出範例

位置變數: 在命令列時, 給此script的參數 Shell Script 程式簡介 Shell script 變數 位置變數: 在命令列時, 給此script的參數 $0~$9; $#代表有幾個參數; $*存著給script的參數們 $0代表script本身 ex: source hello.sh good job $0=hello.sh , $1=good, $2=job, $#=2, $*= good job

位置參數的範例

expr: 在shell中的四則數學運算, 必須使用此指令來執行 數值運算 expr: 在shell中的四則數學運算, 必須使用此指令來執行 expr 5 + 2 在 + - * / 的二邊都有空白,如果沒有空白將產生錯誤: 若要將expr的運算結果assign給某個變數, 則必須用`(在!左邊的按鍵)將expr的運算包起來 sum=`expr 5 + 2` 特別注意*為萬用字元, 必須使用跳脫字元\來表示*在此為乘法 mul= `expr 5 \* 2`

數值運算範例

數值運算範例輸出結果

選擇性結構敘述 條件敘述 數值比較:運算所傳回的結果是true或false 以下兩種寫法等價, 所以你可以任意選擇test或[]的寫法 test integer1 –eq integer2 [ integer1 –eq integer2 ] 中括號前後要有空白 比較旗號 說 明 -eq (equal) 等於(若兩數相等則傳回 true,否則為 false) -ne (not equal) 不等於(!=) -lt (less than) 小於(<) -le (less or equal) 小於或等於(<=) -gt (greater than) 大於(=) -ge (greater or equal) 大於或等於(>=)

選擇性結構敘述 條件敘述 字串比較 test str1!=str2 [ str1 != str2 ] = != < > -n 比較運算子 說 明 = 比較兩字串是否相符合,如 str1 = str2。 != 不符合(即是兩字串內容不相同),如 str1 != str2。 < 小於(依 ASCII 碼比較大小),如 str1 < str2。 > 大於(依 ASCII 碼比較大小),如 str1 > str2。 -n 不是空字串(字串長度大於 0),如 –n str1。 -z 空字串(字串長度為 0),如 –z str1。

選擇性結構敘述 條件敘述 檔案屬性測試 test –d file_1 [ -d file_1] -d 如果是目錄則傳回真。 -e 選 項 說 明 -d 如果是目錄則傳回真。 -e 如果檔案存在則傳回真。 -f 如果檔案存在並且是一般檔案則傳回真。 -g 如果檔案存在並且是特定群組可執行的,則傳回真。 -r 如果檔案存在並且可讀的,則傳回真。 -s 如果檔案存在且存有資料,則傳回真。 -w 如果檔案存在且可寫入資料,則傳回真。 -x 如果檔案存在且可執行,則傳回真。 -nt 比較兩檔案是否較新(修改時間),如 file1 –nt file2。 -ot 比較兩檔是否較舊,如 file1 –ot file2。

選擇性結構敘述 if 程式結構 標準格式 簡單格式 最簡潔格式 if 條件判斷 then 命令敘述區段 fi 若要把下一行的程式, 寫到上一行, 必須用分號隔開 if 條件判斷; then 命令敘述區段 fi if 條件判斷; then; 命令敘述區段; fi

if程式結構

if搭配著測試字串的範例

if 搭配著測試file的範例

選擇性結構敘述 case 程式結構 case variable in pattern_1) 命令敘述區塊 ;; pattern_2) statement 1 statement 2 statement 3;; pattern_3) 命令敘述區塊 ;; ….. pattern *) esac 1. case的結尾是esac 2.每個選項間要用;;作區隔 3. 最後一個選項*代表著不符合以上的選項, 都會進到這裡來, 等於c program的default 4. variable可以隨意命名

case的範例

重複性結構敘述 for 迴圈結構 for var in List do commands done 所以List可以由 一堆string以空白隔開組成 var可以隨意命名 var在for迴圈執行的過程, 會從List裡取值 ex: for var in “how are you” 1st loop var=how 2nd loop var=are 3rd loop var=you 總共執行3次

Q: 此program代表什麼意義?

重複性結構敘述 while 迴圈結構 while 條件判斷 do 命令區塊 done

本週練習 此次練習有兩個版本, 一個簡單, 一個比較困難 可自行挑選要實作出哪個版本 完成版本1: 70分 完成版本2(step1~step3): 90分 完成版本2(step1~step5): 100分

step1:使用者在執行script時, 會給數個參數 練習3 (版本1) step1:使用者在執行script時, 會給數個參數 ex: practice.sh test1 test2 step2: 根據使用者給的參數, 在家目錄尋找是否有此目錄, 若是, 請列出此目錄裡面的所有檔案

step3: 讓使用者輸入某個檔案名, 查詢此檔案是否為可執行檔 練習3 (版本2) step1: 使用者在執行script時, 會給一個參數, 是一個目錄名稱(要真實存在的目錄, 且目錄下有3個以上的檔案, 此目錄在家目錄下) ex: practice.sh test1 step2: 列出此目錄下的檔案 step3: 讓使用者輸入某個檔案名, 查詢此檔案是否為可執行檔 可以讓使用者一直輸入, 直到使用者輸入stop才停止輸入

step4: step3的迴圈停止後, 列出剛剛使用者所查詢的檔案 Ex: list=“$list $name” 使用list變數來存使用者所輸入的檔案, 最簡單的方式是將原本list和name這兩個string相加, 再重新assign給list變數 step5: 跳出選單讓使用者選擇要輸入哪個檔案, 且如何處置此檔案 選項1: 在此檔案搜尋是否有hello字串 選項2: 將此檔案copy至家目錄下 選項3: 將此檔案刪除

版本2的輸出