Shell Shell是一個interpreter(翻譯者)的介面程式,負責將user的指令解讀並送到kernel去處理.

Slides:



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

第一單元 建立java 程式.
上課教材 Database Slide Windows筆電 (32 bit)
第七章 操作系统接口 7.1 联机用户接口 7.2 Shell命令语言 7.3 系统调用 7.4 UNIX系统调用 7.5 图形用户接口.
UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制
Linux 的檔案管理.
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
System Administration Practice Homework 2: Shell Programming
Chapter 5 迴圈.
Confidential Property
Vi 編輯器的練習的說明 因為本課程的實習課是Unix 的工作環境。過去的經驗告訴我,如果你完全未用過Unix 的指令及其 vi 編輯器,你將很難跟上進度,希望學員一定要預先作練習。我們提供了Unix 指令的簡介,以及 vi 編輯器的介紹 ( 請参閱網站中的13&14-unix.pdf 為其講義;13-unix.exe、14-fortran.exe則為其課程錄影.
第三讲 shell 程序设计.
第 2 章 上機使用 Unix/Linux 內容: 操作介面 主機連線 登入主機 認識系統環境 使用者常用命令.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
台灣大學計算機及資訊網路中心 教學研究組 張傑生
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
C Shell Programming.
Shell Script 程式設計.
JDK 安裝教學 (for Win7) Soochow University
Linux基本操作 實習1.
基礎linux指令說明 Part 1 資訊組 陳宜徽.
Shell程序设计 曙光信息产业股份有限公司.
第五章 shell 编程 shell 编程的基本过程分为三步: 1. 建立 shell 文件 包含任意多行操作系统命令或shell命令的文本
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
Linux 基础与常用命令简介 生物信息学培训班 杭州,2018年1月18日 周银聪.
第二天 计算机基础技能培训 (一)linux基础知识
1 Introduction Prof. Lin-Shan Lee TA: Chun-Hsuan Wang.
SQL Stored Procedure SQL 預存程序.
曙光集群简明使用手册 技术支持中心.
Linux基本操作 程設實習課 ( 2/25 ).
安裝JDK 安裝Eclipse Eclipse 中文化
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
雲端計算.
第12章 shell编程基础 本章主要介绍shell编程的基础知识。shell脚本的执行类似于Linux下的任何其他命令,脚本可以包含复杂的逻辑,也可以包含一系列Linux命令行指令。在一个shell程序内可以运行其他shell脚本。通过本章的学习,读者可以学到如何使用bash(最流行的Linux.
Git & github By 宋正倫 (修訂by jmchen).
第一單元 建立java 程式.
Redirection 概念說明 input redirection: 將資料“再”輸入到某一命令去做處理 (用<符號)
檔案類型介紹 Linux 的檔案類型 目錄: 用ls –F時檔名後面有/,螢幕列出目錄時為藍色 可執行檔: 壓縮檔: 連結檔:
第二章 UNIX系统安装与常用命令.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
如何有效率的學習Linux 培養組合能力 多用程式, 少寫程式 從錯誤訊息中學習 養成略讀 “各種文件” 加強英文基本閱讀能力 勤作筆記
Confidential Property
软件工程 第四章 软件设计 软件过程设计技术与工具.
UNIX指令-檔案與目錄操作.
期末考.
Presenter: Chih-Hsun Wang Date: 2015/9/15
杨振伟 清华大学 第一讲:Linux环境下编程(1)
UNIX Shell.
如何使用Gene Ontology 網址:
Compute System Administration Homework 2: Shell Script
实验一:编译运行Linux内核并使用gdb进行调试
Lab01 工作站&Linux操作 日期:2011/03/07.
1.3操作系统提供的服务和用户接口 操作系统提供的用户接口 程序接口与系统调用 操作接口与系统程序
Create and Use the Authorization Objects in ABAP
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
粒子物理与核物理实验中的数据分析 杨振伟 清华大学 第1讲:Linux环境下的编程.
Arguments to the main Function and Final Project
杨振伟 清华大学 第一讲:Linux环境下编程(1)
作業系統實習課(二) -Scheduler-Related System Calls-
開發Java程式語言的工具 JDK.
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

Shell Shell是一個interpreter(翻譯者)的介面程式,負責將user的指令解讀並送到kernel去處理. Unix Shell有二大主流: Bourne Shell即/bin/sh有#提示符號 GNU Bourne Again即/bin/bash 另有ash, ksh(korn shell), zsh C Shell即/bin/csh 有%提示符號 另有很受喜愛的 Tenex C Shell(tcsh) 練習: (本學期Lab預設的shell是tcsh, 未來run程式將以 bash為主) 請執行 /bin/bash (暫時改設為bash shell) 請執行 /bin/tcsh (暫時再改設為bash shell) 請執行 exit 或按 ^d (離開tcsh) 請執行 exit 或按 ^d (離開bash) 朝陽科大 李麗華 93年10月修訂

Shell 的重要特性 Shell除了解譯之外,有七大重要的特性,這些特性讓user便利操作Unix(Linux)系統.這些特性如下: Shell interactive (prompt,history) Background execution (加入&) Redirection (> 或 <) Pipes (|) Wild-card characters (*或?) Environment variables ($HOME, PATH) Shell Scripts (就是利用指令去做像寫程式的事,類似DOS的batch file,整合一堆指令並依序執行以達成特定的功能) 朝陽科大 李麗華 93年10月修訂

Shell 的內建功能-1 ~ 和 $HOME均代表使用者的home 例: cd ~ 或 cd $HOME . 目前的目錄, 可用pwd顯示出來 .. 上一層的目錄 [a-z,1-9] 比對或找尋字的範圍, 例如: mv f[1-4] /DIR1 又例如: rm f[1,3,5] * 代表零或多個任意字元,例如: ls *file* 或 cp f* /DIR1 ? 代表一個任意字元, 例如: ls f? 或 ls ??.txt !n 執行history第n個指令,如: !3(執行history中第3個指令) !! 重覆上一個指令,亦可再附加選項(option)及參數 (argument),如: 先打 ls *.txt 再打 !! 或 !! *.txt ^xxx^yy^ 將上面的指令中有xxx的地方,改為yy 朝陽科大 李麗華 93年10月修訂

Shell 的內建功能-2 > 輸出導向,指令執行後的結果轉輸出到… < 輸入導向,指令執行時需要輸入…… >& 錯誤輸出導向,指令執行如有錯誤訊息轉輸出到… ; 用來分隔指令,例如: ls ; cat a.txt () 同一般括號作用即先集合指令執行, 例如: (cd ~/DIR1; tar zcvf - *)|(cd /tmp ; tar zcvf -) alias yy=‘xx‘(bash shell) 訂定別名(綽號),如果只下 alias 則會列出所有己設定的 alias 內容 bash範例: alias rm=“rm –i” 又例如: alias l=“ls -alF” \ 暫時取消alias的設定, 例如: \ls 或 \rm 朝陽科大 李麗華 93年10月修訂

Environment Variables 在Shell下有三種variables: Environment variables: 通常做為預設的shell環境設定變數值 User-created variables:由user自訂的變數 Positional parameters: 指定位的參數 常用的Environment variables有:(有些shell均用小寫) HOME: pathname of your home directory PATH: directories where shell is to look for command TERM: The termcap code for your terminal USER: your user name UID: your user id MAIL: pathname of your system mailbox SHELL: pathname of shell 朝陽科大 李麗華 93年10月修訂

Setting Environment Variables 練習: (加上$符號表示是指內容而非其名稱) echo $TERM (試試看 echo TERM有何不同) echo $PATH set (顯示所有環境設定變數) 請同學自行練習echo所有的設定 請同學將path的設定內容抄下,並解釋其內容 set history = 20 alias m=mail (請自行練習其它別名… alias h history) echo $user set user=DoLAMon echo $HISTSIZE 朝陽科大 李麗華 93年10月修訂

Shell Script 例: (請將下面指令打在一 個檔案內,檔名自訂) Shell script is a program consisting of shell commands. 通常我們利用編輯器來編寫shell script為一個檔案,其中每行的第一個字若為#,則為註解, #!則為指定shell使用的目錄) 要執行寫好的shell程式有下列幾個步驟: (1)設定script檔為可執行,即更改 權限為 chmod u+x 檔名 (或用 chmod 755 檔名) (2)要執行spcitp檔案時請打 /bin/bash 檔名 (3)因bash的script較普遍,往後 script練習將以bash為主,請確 認您login後在bash下. 例: (請將下面指令打在一 個檔案內,檔名自訂) # A simple shell script-1 #!/bin/bash cal date who | less 例: # shell script-2 #!/bin/bash who | grep 90| cut –b 1-8 | sort| uniq -c echo ‘login check’ date 朝陽科大 李麗華 93年10月修訂

Shell Script 基本語法 先編修檔名: echo-4a varName=value Var=`expr int-var1 +-*/% int-var2` 變數符號:舉凡有加$符號的即為變數, 例: $abc,$home,$kkk,但如果$後面加數字,如$1,$2,$3…,則表示第n個參數 $n:指第n個參數,例:$1,$2,$3… $0是指程式自己本身 $*:指所有參數 $@:指所有參數但不含有加引號的字串 $#:指參數個數 $?:指上個命令傳回的參數值 $$:指目前此shell的pid #?var:測試是否有設定var這個變數,0 表示沒有設此var變數 $<:指從標準輸入設備讀取資料 #!/bin/bash #positional parameters, i.e., $n echo $0 $1 $2 $3 $4 要測試上面的檔案請先: chmod u+x echo-4a (或者可用 chmod 755 檔名) 接著執行這個檔名加上參數 ./echo-4a I will do this 檔名: echo-all #!/bin/bash #positional prarmeters, i.e., $* echo you had type $# argument echo they are: $* 朝陽科大 李麗華 93年10月修訂

Shell Script 語法練習 檔名: add 1.打字時,注意運算式的 引號為倒引號 `, 運算參數間必需要加上空白格 2. 請記得每個檔案都要先改權限, 即chmod 755 檔名後, 再測試你的shell script 檔案 3. 接著將左邊的檔案做執行動作 ./add 3 5 (或 sh add 3 5) ./add-1 (或 sh add-1) 3. 如果您的檔案內容都照打無誤, 但執行時仍有錯誤訊息出現,則可能是你登入時被設定為tcsh, 所以可以再加run下面的指令,將shell改成bash的shell來執行 /bin/bash #!/bin/bash #add two numbers sum=`expr $1 + $2` echo “$1 + $2 = $sum” 檔名: add-1 #!/bin/bash a=5 b=9 sum=`expr $a + $b` echo $a + $b = $sum 檔名: add-2 #!/bin/bash read a read b sum=`expr $a + $b` echo “$a+$b=$sum” 朝陽科大 李麗華 93年10月修訂

Shell Script 四則運算練習 檔名: add-4op 1.注意, 加 減 乘 除的運算式中,其中 乘 和 除 二個運算元均為shell的特殊字元, 故必須再加上逸敘字元(escape char.) 2.執行 /bin/bash add-4op #!/bin/bash a=20 b=4 sum=`expr $a + $b` echo “$a+$b=$sum”; echo sub=`expr $a - $b` echo “$a-$b=$sub”; echo mul=`expr $a \* $b` echo “$a*$b=$mul”; echo div=`expr $a \/ $b` echo “$a/$b=$div”; echo 朝陽科大 李麗華 93年10月修訂

Shell Script 迴圈語法-1 常用的測試及迴圈語法類別 (1) if (2) case (3) for (4) while (5) until 這裡的 -f是測試檔名的選項 #!/bin/bash echo “input a file name:” read ff if test -f $ff then echo “file exist” else echo “file does not exist” fi if conditional expr then command(s) fi #!/bin/bash if test $1 = “週五” then echo “Thank God it’s Friday” elif test $1 = “週六” || test $1 = “週日” echo “Have a nice holiday!!” else echo “Go to work….Just do it…” fi if conditional expr then command(s) elif conditional expr else fi 朝陽科大 李麗華 93年10月修訂

Shell Script 迴圈語法-2 #!/bin/bash for var in list do command(s) done for name in $* do finger $name done for var in list do command(s) done #!/bin/bash count=10 until test $count –eq 0 do echo $* count=`expr $count – 1` done until condition do command(s) done #!/bin/bash count=10 while test $count –gt 0 do echo $* count=`expr $count – 1` done while condition do command(s) done 朝陽科大 李麗華 93年10月修訂

Shell Script 迴圈語法-3 case word in #!/bin/bash pattern1) commands ;; ………… patternN) commands ;; *) commands ;; esac #!/bin/bash set `date` case $1 in 週五) echo “Thank God it’s Friday”;; 週六 | 週日) echo “Nice Holiday”;; *) echo “Work hard….Just do it”;; esac #!bin/bash cd / tar zcvf mybackup.tar.gz ~/ mv mybackup.tar.gz $HOME/backup mail –s “backup complete!!” $USERNAME < backup #!bin/bash for i in /etc/profile.d/*.sh; do if [-x $i]; then $i fi done 朝陽科大 李麗華 93年10月修訂