版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. shell overviewwhat is shell? why shell?2. 创建和执行创建和执行shell程序程序3. shell程序设计的语法程序设计的语法变量、条件测试、条件语句、重复语变量、条件测试、条件语句、重复语句、命令表和语句块、函数句、命令表和语句块、函数4. 实例实例 文件操作文件操作 列出目录内容列出目录内容: ls 创建特殊文件创建特殊文件: mkdir, mknod, mkfifo 文件操作文件操作: cp, mv, rm 修改文件属性修改文件属性: chmod, chown, chgrp 查找文件查找文件: find 字符串匹配字符串匹配: grep 其它
2、其它: pwd, cd, file, more, less, head, tail, cat, gzip,zip,tarhttp:/ 进程操作进程操作 ps, kill 用户和组账号操作用户和组账号操作 useradd, userdel, groupdel,passwd 网络命令网络命令 ifconfig, ping, netstat,telnet 其他其他 who, whoami, su, sudo,uname, man mount unmount du,df161 blocks in disk are occupied by these files a file you creater -
3、 readw - writex - executea file does not have executable permission by default, not even for the owner a directory you create 目录权限目录权限读读 可以列出存储在该目录下的文件可以列出存储在该目录下的文件写写 允许从目录中删除或添加新的文件允许从目录中删除或添加新的文件执行执行 允许在目录中查找,并能用允许在目录中查找,并能用cd命令将命令将工作目录改到该目录工作目录改到该目录:chmod: 改变文件或目录的存取权限改变文件或目录的存取权限chmod命令命令 (续续)c
4、hmod a+r, u+w file1.txtchmod a=r file1.txtchmod u=rwx file1.txtchmod命令命令 (续续) 用用8进制数表示进制数表示读权限读权限 - 4写权限写权限 - 2可执行权限可执行权限 - 1chmod命令命令 (续续) 改变多个文件的权限改变多个文件的权限chmod 755 file1 file2 file3 递归操作递归操作 (-r)chmod -r 700 emails chmod -r 700 . umask的作用的作用 思路扩展思路扩展1. shell overview shell用户和操作系统之间的接口用户和操作系统之间的接
5、口作为核外程序而存在作为核外程序而存在文件子系统文件子系统用户用户硬硬 件件 控控 制制硬硬 件件内核内核shell用户用户用户用户用户用户高级语言和实用程序高级语言和实用程序系统调用系统调用进程进程管理管理子系统子系统进程间通信进程间通信存储管理存储管理调度程序调度程序设备驱动程序设备驱动程序字符设备字符设备块设备块设备高速缓存高速缓存核外程序核外程序shell: 用户用户和操作系统和操作系统之间的接口之间的接口shell: 用户和操作系统之间的接口用户和操作系统之间的接口 csh 其它程序 bash x窗口系统shell: 作为核外程序而存在作为核外程序而存在内核shell 的双重角色的双
6、重角色 命令解释程序命令解释程序 linux的开机启动过程;进程树的开机启动过程;进程树 shell的工作步骤的工作步骤 打印提示符;得到命令行;解析命令;查打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令找文件;准备参数;执行命令 独立的程序设计语言解释器独立的程序设计语言解释器(reusable tools)各种不同的各种不同的shellshell名称 描述位置ash一个小的一个小的shell/bin/ashash.static一个不依靠软件库的一个不依靠软件库的ash版本版本/bin/ash.staticbshash的一个符号链接的一个符号链接/bin/bshbash“bo
7、urne again shell”。linux中中的主角,来自的主角,来自gnu项目项目/bin/bashshbash的一个符号链接的一个符号链接/bin/shcshc shell, tcsh的一个符号链接的一个符号链接/bin/cshtcsh和和csh兼容的兼容的shell/bin/tcshkshkorn shell/bin/kshunixs philosophy (examples) redirection use “echo” to create a file? pipe get the count of files in a directory?重定向输出重定向输出 系统定义三个标准文
8、件:标准输入系统定义三个标准文件:标准输入(stdin)、标准输出标准输出(stdout)、标准错误输出、标准错误输出(stderr),对应的文件描述符为对应的文件描述符为0,1,2。 用用“”改变输出,用改变输出,用“2”改变错误输出,改变错误输出,用用“”来追加到已有的文件中来追加到已有的文件中 。重定向输出示例重定向输出示例$ls l lsoutput.txt $ls l 1 lsoutput.txt$ps lsoutput.txt$kill hup 1234 killout.txt 2killerr.txt$kill l 1234 killout.txt 2&1 (把标准输出把
9、标准输出和错误输出都放入同一个文件和错误输出都放入同一个文件)$ cat bar 2 /dev/null (you see nothing)重定向输入重定向输入 标准输入有标准输入有3种来源种来源: the keyboard (default), a file, and a pipe wc newfile the shell opens the file newfile wc newfile the command opens the file newfile wc result (wc counts the number of lines, words, and characters in
10、a file)管道(管道(pipe) 可以用管道操作符可以用管道操作符 来连接进程。来连接进程。 允许连接的进程数目是没有限制的。允许连接的进程数目是没有限制的。 前一个命令的输出是后一个命令的输入。前一个命令的输出是后一个命令的输入。(without using a pipe)(who is said to be piped to wc)管道(管道(pipe)(续续) ls -l /etc | sort -r | more sort -r sorts the listing in reverse order more displays the contents of a text file
11、on the terminal, one screenful at a time cat /etc/passwd | sort -r | grep “/bin/csh” | wc -l how many users have been set the default shell of csh?2. 创建和执行创建和执行shell程序程序 编写脚本文件编写脚本文件 执行脚本文件执行脚本文件 运行环境运行环境编写脚本文件编写脚本文件 脚本文件脚本文件 注释、退出码注释、退出码(exit code)#!/bin/sh# here is commentsfor file in * do if grep
12、 q posix $file then more $file fidoneexit 0 方法方法1:$ sh script_file 方法方法2:$ chmod +x script_file $ ./script_file用户环境用户环境 .bash_profile, .bash_logout, .bashrc files .bash_profile: 用户登录时被读取,其用户登录时被读取,其中包含的命令被中包含的命令被bash执行执行 .bashrc: 启动一个新的启动一个新的shell时读取并执时读取并执行行 .bash_logout: 登录退出时读取执行登录退出时读取执行3. shell
13、程序设计的语法程序设计的语法 变量变量 条件测试条件测试 条件语句条件语句 重复语句重复语句 命令表和语句块命令表和语句块 函数函数 其它其它3.1 变量变量 用户变量用户变量 环境变量环境变量 参数变量和内部变量参数变量和内部变量用户变量用户变量 变量的赋值和使用变量的赋值和使用var=valueecho $var read命令命令 read variable 引号的用法引号的用法 双引号,单引号双引号,单引号 转义符转义符“”环境变量环境变量环境变量环境变量$home$path$ps1$ps2$ifs 说明说明当前用户的登陆目录当前用户的登陆目录以冒号分隔的用来搜索命令的目录清单以冒号分隔
14、的用来搜索命令的目录清单命令行提示符,通常是命令行提示符,通常是”$”字符字符辅助提示符,用来提示后续输入,通常辅助提示符,用来提示后续输入,通常是是”字符字符输入区分隔符。当输入区分隔符。当shell读取输入数据时读取输入数据时会把一组字符看成是单词之间的分隔符,会把一组字符看成是单词之间的分隔符,通常是空格、制表符、换行符等。通常是空格、制表符、换行符等。参数变量和内部变量参数变量和内部变量环境变量环境变量$0$1, $2, $*$ 说明说明传递到脚本程序的参数个数传递到脚本程序的参数个数脚本程序的名字脚本程序的名字脚本程序的参数脚本程序的参数一个全体参数组成的清单,它是一个一个全体参数组
15、成的清单,它是一个独立的变量,各个参数之间用环境变独立的变量,各个参数之间用环境变量量ifs中的第一个字符分隔开中的第一个字符分隔开“$*”的一种变体,它不使用的一种变体,它不使用ifs环境变环境变量。量。条件测试条件测试 退出码退出码 test命令命令 test expression 或或 expression test命令支持的条件测试命令支持的条件测试 字符串比较字符串比较 算术比较算术比较 与文件有关的条件测试与文件有关的条件测试 逻辑操作逻辑操作字符串比较字符串比较str1=str2str1!=str2-z str-n str两个字符串相同则结果为真两个字符串相同则结果为真两个字符串
16、不相同则结果为真两个字符串不相同则结果为真字符串为空则结果为真字符串为空则结果为真字符串不为空则结果为真字符串不为空则结果为真算术比较算术比较算术比较算术比较expr1 eq expr2expr1 ne expr2expr1 gt expr2expr1 ge expr2expr1 lt expr2expr1 le expr2 结果结果两个表达式相等则结果为真两个表达式相等则结果为真两个表达式不等则结果为真两个表达式不等则结果为真expr1 大于大于 expr2 则结果为真则结果为真expr1 大于或等于大于或等于 expr2 则结果为真则结果为真expr1 小于小于 expr2 则结果为真则结
17、果为真expr1 小于或等于小于或等于 expr2 则结果为真则结果为真if test $# -ne 3; then echo “you did not enter three arguments”else echo “you entered the right number”fi与文件有关的条件测试与文件有关的条件测试文件条件测试文件条件测试-e file-d file-f file-s file-r file-w file-x file 结果结果文件存在则结果为真文件存在则结果为真文件是一个目录则结果为真文件是一个目录则结果为真文件是一个普通文件则结果为文件是一个普通文件则结果为真真文件的
18、长度不为零则结果为真文件的长度不为零则结果为真文件可读则结果为真文件可读则结果为真文件可写则结果为真文件可写则结果为真文件可执行则结果为真文件可执行则结果为真if -f $1 ; thenecho “file exists”elseecho “file does not exist”fi逻辑操作逻辑操作逻辑操作逻辑操作! exprexpr1 a expr2expr1 o expr2 结果结果逻辑表达式求反逻辑表达式求反两个逻辑表达式两个逻辑表达式“and”(“与与”)两个逻辑表达式两个逻辑表达式“or”(“或或”)3.3 条件语句条件语句 if语句语句 case语句语句if语句语句(1) 形式
19、形式if expression thenstatementselif expression thenstatementselif elsestatementsfi 紧凑形式紧凑形式 ; (同一行上多个命令的分隔符同一行上多个命令的分隔符)if语句语句(2) 例例1(.bash_profile文件中文件中)if -f /.bashrc ; then . /.bashrcfi 例例2#!/bin/shecho “is this morning? please answer yes or no.”read answerif “$answer” = “yes” ; then echo “good mo
20、rning”elif “$answer” = “no” ; then echo “good afternoon”else echo “sorry, $answer not recognized. enter yes or no” exit 1fiexit 0case语句语句(1) 形式形式case str instr1 | str2) statements;str3 | str4) statements;*) statements;esaccase语句语句(2) example#!/bin/shecho “is this morning? please answer yes or no.”re
21、ad answercase “$answer” in yes | y | yes | yes) echo “good morning!” ; no | n | no | no) echo “good afternoon!” ; *) echo “sorry, answer not recognized.” ;esacexit 0#! /bin/shtput clearecho “n 1. find files modified in last 24 hoursn 2. the free disk spacen 3. space consumed by this usern 4. exitnn”
22、echo “selection: c”read choicecase $choice in1) find $home -mtime -1 -print ;2) df ;3) du -s $home ;4) exit ;*) echo “invalid option” ;esaccase语句语句(3)case语句语句(4) using wild cardsecho “do you wish to continue? (y/n): c”read answercase $answer inyyee*) ;# matches yes, yes, yes, etcnnoo) exit ; # match
23、es no, no, no, no *) echo “invalid option” ;esaccase语句语句(5) using wild cardsfile=ls t *.java *.c 2/dev/null | head -1case $file in *.c) gcc $file & a.out ;*.java) javac $file ;*) echo “no java or c program found”;esac3.4 重复语句重复语句 for语句语句 while语句语句 until语句语句for语句语句(1) 形式形式for var in listdostateme
24、ntsdone 适用于对一系列字符串循环处理适用于对一系列字符串循环处理for file in chap20 chap21 chap22docp $file $file”.bak”echo $file copied to $file”.bak”donefor语句语句(2)for file in *.html *.htmdogzip $filedonefor file in *.cdogcc o $file”x” $filedonewhile语句语句(1) 形式形式while conditiondostatementsdonewhile语句语句(2) examplequit=nwhile “$q
25、uit” != “y” ; do read menu_choice case “$menu_choice” in a) do_something; b) do_anotherthing; q|q) quit=y; *) echo “sorry, choice not recognized.”; esacdoneuntil语句语句 形式形式until conditiondostatementsdone not recommended (while statement is preferred)3.5 命令列表和语句块命令列表和语句块 命令列表命令列表命令组合命令组合 语句块语句块命令表命令表 命
26、令组合命令组合 分号串联分号串联 command1 ; command2 ; 条件组合条件组合 and命令表命令表格式:格式:statement1 & statement2 & statement3 & or命令表命令表格式:格式:statement1 | statement2 | statement3 | grep john e.lst & echo “pattern found”9876, john warren, nsw8769, john howard, act6758, elton john, taspattern foundgrep john f.l
27、st | echo “pattern not found”pattern not found语句块语句块 形式形式 statement1 statement2 或或 statement1; statement2 ; ; 3.6 函数函数 形式形式func() statements 局部变量局部变量 local关键字关键字 函数的调用函数的调用func para1 para2 返回值返回值 return函数的例子函数的例子(1): 定义定义函数的例子函数的例子(2): 使用使用3.7 其它其它 杂项命令杂项命令 break, continue, exit, return, export, set
28、, unset, trap, “:”, “.”, 捕获命令输出捕获命令输出 算术扩展算术扩展 参数扩展参数扩展 即时文档即时文档杂项命令杂项命令break: 从从for/while/until循环退出循环退出continue: 跳到下一个循环继续执行跳到下一个循环继续执行exit n: 以退出码以退出码”n”退出脚本运行退出脚本运行return: 函数返回函数返回export: 将变量导出到将变量导出到shell,使之成为,使之成为shell的环境的环境变量变量set: 为为shell设置参数变量设置参数变量unset: 从环境中删除变量或函数从环境中删除变量或函数trap: 指定在收到操作系
29、统信号后执行的动作指定在收到操作系统信号后执行的动作“:”(冒号命令冒号命令): 空命令空命令“.”(句点命令句点命令)或或source: 在当前在当前shell中执行命令中执行命令export命令命令脚本程序脚本程序export1:脚本程序脚本程序export2:expr命令命令expr 命令将它的参数当作一个表达式来求值命令将它的参数当作一个表达式来求值 expr 3 + 5 (注意空格)(注意空格) x=3; y=5 expr $x - $y expr $y / $xset命令命令set命令的作用是为命令的作用是为shell设置参数变量设置参数变量捕获命令输出捕获命令输出 语法语法 $(
30、command) command 举例举例#!/bin/shecho “the current directory is $pwd”echo “the current directory is $(pwd)”exit 0算术扩展算术扩展 expr命令命令 $()扩展扩展#!/bin/shx=0while “$x” ne 10 ; do echo $x x=$($x+1)doneexit 0参数扩展参数扩展 问题问题: 批处理批处理 1_tmp, 2_tmp, 方法方法#!/bin/shi=0while “$i” ne 10 ; do touch “$i_tmp” i=$($i+1)doneex
31、it 0 参数替换的复杂形式参数替换的复杂形式here文档文档(及时文档及时文档) 在在shell脚本中向一条命令传送输入数据脚本中向一条命令传送输入数据 example#!/bin/bashcat !catinput!hello, this is a here document.!catinput!4. 实例分析实例分析 install脚本脚本 cd唱盘管理程序唱盘管理程序#!/bin/bash# 安装安装eclipse 2.1.2 脚本脚本 (eclipse 2.1.2 install shell )# filename: ei.sh (eclipse 2.1.2)# /*.use thi
32、s command to list zip file.*/# unzip -l eclipse-sdk-2.1.2-linux-gtk.zip# /*.export the eclipse install directory ( eclpdir ) .*/export eclpdir=/dataunzip -d $eclpdir eclipse-sdk-2.1.2-linux-gtk.zipunzip -d $eclpdir eclipse-examples-2.1.2.zipunzip -d $eclpdir cdt-full-1.2-linux-gtk.zipunzip -d $eclpd
33、ir/eclipse emf_1.1.1_20031020_1612wl.zipunzip -d $eclpdir/eclipse emf.source_1.1.1_20031020_1612wl.zipunzip -d $eclpdir/eclipse emf.doc_1.1.1_20031020_1612wl.zipunzip -d $eclpdir/eclipse uml2_200312011515.zipunzip -d $eclpdir/eclipse uml2.examples_200312011515.zipunzip -d $eclpdir/eclipse xsd_1.1.1_
34、20031020_1612wl.zipunzip -d $eclpdir/eclipse xsd.doc_1.1.1_20031020_1612wl.zipunzip -d $eclpdir/eclipse xsd.source_1.1.1_20031020_1612wl.zipunzip -d $eclpdir/eclipse gef-sdk-i20031015.zipunzip -d $eclpdir/eclipse gef-automated-tests-i20031015.zipunzip -d $eclpdir/eclipse gef-examples-i20031015.zipun
35、zip -d $eclpdir eclipse2.1.1-sdk-linux-gtk-languagepackfeature.zipexport eclpdir=/home/repository/eclipse/workspace运行运行eclipse#!/bin/bash# 执行执行 eclipseexport java_home=/usr/java/jdk1.6.0_12 export classpath=/usr/java/jdk1.6.0_12 /lib/opt/eclipse/eclipse -vm /usr/java/jdk1.6.0_12 /bin/java -data /workspace &am
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高端精密仪器研发生产2025年智能电网领域应用可行性研究报告
- 深海生物资源研究的承诺书范文6篇
- 企业财务管理与税务筹划操作手册
- 2026年文学鉴赏能力提升试题中国古代文学经典作品赏析
- 2026年运动医学与健康促进专业笔试题库
- 2026年大学英语六级听力训练及模拟试题集
- 2026年新能源技术应用与创新试题集
- 2026年数字电路设计与应用考试题库
- 2026年英语阅读与写作技能试题集
- 2026年高级会计实务考试题集含财务审计要点
- 2026中国铁塔股份有限公司校园招聘备考考试试题及答案解析
- 业务流程优化实施指南
- 2025年美容整容医师认证考试试题及答案
- 制造企业生产成本控制方案与实施流程
- 人流后超声诊断规范与应用
- 黑龙江流浪犬管理办法
- 人教版2025-2026学年七年级历史下册教学计划(含进度表)
- 入党申请书专用纸-A4单面打印
- 2025企业年会总结大会跨越新起点模板
- 《中国的河流(第3课时 滔滔黄河)》示范课教学设计【湘教版八年级地理上册】
- 2023年度北京公务员结构化面试练习题
评论
0/150
提交评论