版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux下Shell编程简介第1页,共32页。内容安排综述篇命令篇变量篇条件测试篇控制结构篇第2页,共32页。综述篇Shell是什么怎样写ShellCygwin简介Linux黑洞第3页,共32页。综述篇Shell是什么壳(Shell)保护其内部的核(Kernel) 第4页,共32页。综述篇Shell是什么Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。
2、使用较广的shell有标准的Bourneshell(sh)、Korn Shell(ksh)、Cshell(csh)、Bourne Again Shell(bash)等。查看当前环境所用shell:echo $SHELLshell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。本质上,shell脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令,然后调
3、用相应的应用程序。第5页,共32页。综述篇怎样写Shell利用vi编辑器编辑脚本,将脚本命名为脚本功能.shShell脚本不是复杂的程序,它是按行解释的,脚本第一行总是以#!/bin/sh 开头,它通知系统以下的Shell程序使用系统上的Bourne Shell来解释。第二行注释中写入脚本名,第三行注释开始写入脚本功能习惯。以下行进入脚本正式编写编写完后给脚本添加执行权限: chmod u+x ScripName运行脚本:ScripName 或 ./ScripName简单脚本示例:vi ShowHello.sh以下为脚本内容:#!/bin/sh#ShowHello.sh#To show hel
4、lo to somebodyecho -n“Enter Your Name:”read NAMEecho “Hello,$NAME!” 保存,退出vi编辑器。为脚本添加可执行权限:chmod u+x ShowHello.sh运行脚本:ShowHello.sh第6页,共32页。综述篇cygwin简介第7页,共32页。综述篇Linux黑洞/dev/null 是一个虚设的设备,俗称“Linux黑洞”,任何对/dev/null的写入都会成功,但数据会消失得无影无踪,没有任何反馈。所以经常把不想在屏幕显示的信息全部送到/dev/null中,在shell脚本中用得比较多。 如:ls l /dev/null
5、还可以用来清空文件的内容:cat /dev/null FileName第8页,共32页。命令篇用户管理目录管理文件管理权限管理第9页,共32页。命令篇用户管理新建用户(user add) useradd UserName 新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。为用户添加密码(password) passwd UserName删除用户(user delete) userdel UserName 使用p选项可以删除用户目录下的文件及与用户相关联的其他文件。新建组群(group add) groupadd GroupName删除组
6、群(group delete) groupdel GroupName第10页,共32页。命令篇用户管理用户身份 whoami 查看登录用户 who 选项 -a 显示所有用户的所有信息 -H 显示列标题查看用户的操作 w 某一时刻用户的行为用户间切换(substitute user) su UserName 如:su 或su root 切换为根用户 su Haison 切换为名为Haison的用户第11页,共32页。命令篇目录管理创建目录(make directory) mkdir DirecName删除目录(remove directory) rmdir DirecName显示工作目录(pri
7、nt working directory) pwd显示目录内容(list) ls 选项 选项:-a 显示当前目录下的所有文件,包括以.开头的文件。 -l 以长列表的形式显示文件列表,如: -rw-r-r- 1 haison haison 18 Nov 2 10:10 haison.c 第12页,共32页。命令篇目录管理改变当前目录(change directory) cd 或 cd 进入登录时的主目录 cd / 进入根目录 cd . 进入上一级目录 cd /home 进入系统的home目录 cd home 进入当前目录下的home目录目录重命名(move) mv SourceDirecName
8、 TargetDirecName目录拷贝(copy) cp SourceDirec TargetDirec -r 拷贝目录下的文件、子目录及子目录下的文件第13页,共32页。命令篇文件管理新建文件 FileName 或 touch FileName 或 vi FileName删除文件(remove file) rm 选项 FileName 选项:-i 系统提示是否真要删除该文件 -f 删除文件之前不提示任何确认信息 -r 递归删除目录下所有子目录的内容文件拷贝(copy) cp SourceFile TargetFile文件链接(link) ln s SourceFile TargetFile
9、 创建文件链接,用ls l查看,会看到TargetFile-SourceFile第14页,共32页。命令篇文件管理显示文件内容 more FileName 一次一屏的显示文件内容,空格或回车显示下一屏 less FileName 一次一屏的显示文件内容,空格或回车显示下一屏 cat FileName 一次全部显示文件的内容 cat file1 file2file3 将file1、file2的内容写到file3,覆盖file3原内容 cat file1file2 将file1的内容追加到file2,file2原内容不变 head FileName 只显示文件的前10行 head n FileNa
10、me 显示文件的前n行 tail FileName 只显示文件的后10行 tail n FileName 显示文件的后n行 nl FileName 以编号的形式一次全部显示文件的内容,忽略空格第15页,共32页。命令篇文件管理文件移动/重命名(move) mv SourceFile TargetFile 将一个或多个文件移动到另外一个目录下,或者将一个文件重命名为另一个文件。文件查找(find) find 路径 选项 如:find / -name “Linux” -print 文件内容查找(grep) 如:grep “main” haison.c文件类型 命令ls l以长列表形式显示文件的类型
11、等,如:-rw-r-r-前缀类型前缀类型普通文件l链接(link)文件b块(block)设备文件p命名管道(pipe)文件c字符(character)设备文件s本地套接口(socket)d目录(directory)第16页,共32页。命令篇权限管理文件访问权限 一个文件一经创建,就具有三种访问方式 字符含义八进制表示rread :读,可以显示该文件的内容22=4wwrite :写,可以编辑或删除它21=2xexcute:执行,如果是程序的话20=1-rwxrw-r-xugo类型 一个文件由1个类型和9个权限位来描述,9个权限位分为3组,每组3个权限位,具体表示如下所示:u:user,文件的属主
12、g:group,文件的属主所在的组,属组o:other,其他的用户a:all,以上三种人第17页,共32页。命令篇权限管理改变文件/目录的权限(change mode) chmod u/g/o/a +/-/= 权限 FileName/DirecName 其中:+:增加指定的权限 -:去掉指定的权限 =:清除所选的权限并将其设置为制定的权限 chmod允许使用八进制符号作为模式,改变权限。 chmod PermissionCode FileName/DirecName 其中, PermissionCode 按如下方式计算-rwxrw-r-x4+2+1=74+2=64+1=5所以该文件/目录具有的
13、权限为:765第18页,共32页。命令篇权限管理命令结果含义chmod a-x haison.crw-rw-rw-收回所有用户的执行权限chmod go-w haison.crw-r- -r- -收回同组用户和其他用户的写权限chmod g+w haison.crw-rw-r- -赋予同组用户写权限chmod a= haison.c- - - - - - - - - 清除文件的所有权限chmod命令示例假定haison.c最初具有这样的权限rwxrwxrwx,连续操作如下命令结果含义chmod 666 haison.crw-rw-rw-赋予所有用户读和写的权限chmod 644 haison.
14、crw-r- - r- - 赋予属主读、写权限,其他用户读权限chmod 700 haison.crwx- - - - - - 赋予属主读、写和执行权限chmod 660 haison.crw-rw- - - -赋予属主、属组读和写的权限第19页,共32页。命令篇权限管理 -rw-r-r- 1 haison haison 18 Nov 2 10:10 haison.c改变文件/目录的属主(change owner) chown Owner FileName/DirecName 如:chown Dave haison.c改变文件/目录的属组(change group) chgrp Group F
15、ileName/DirecName 如:chgrp Dave haison.c改变文件/目录的属主和属组 chown owner:group FileName/DirecName 如:chown Dave:Dave haison.c第20页,共32页。变量篇变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。变量一般都用大写字母表示使用 echo命令可以显示单个变量的取值,要在变量名前面加$ 如:USER=“haison” echo $USER如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly使用set命令可以
16、显示所有本地定义的shell变量使用unset 变量名可以清除对变量的定义第21页,共32页。变量篇本地变量:用户自定义的变量。环境变量:用于所有用户变量,用于用户进程前,必须用export命令导出。位置变量:$0(脚本名),$1-$9:脚本参数。特定变量:脚本运行时的一些相关信息。$#传递到脚本的参数个数$*传递到脚本的参数,与位置变量不同,此选项参数可超过9个$脚本运行时当前进程的ID号,常用作临时变量的后缀,如haison.$!后台运行的(&)最后一个进程的ID号$与$#相同,使用时加引号,并在引号中返回参数个数$-上一个命令的最后一个参数$?最后命令的退出状态,0表示没有错误,其他任何
17、值表明有错误第22页,共32页。变量篇示例:#!/bin/sh#VarTest.sh#To test the variablesUSER=haisonecho Hello,$USER,the output of this script are as follows:echo The script name is :basename $0echo The first param of the script is :$1echo The second param of the script is :$2echo The tenth param of the script is :$10echo A
18、ll the params you input are :$*echo The number of the params you input are:$#echo The process ID for this script is :$echo The exit status of this script is :$?第23页,共32页。条件测试篇文件状态测试-d目录-r可读-f常规文件-w可写-L符号连接-x可执行-s文件长度大于0,非空示例: -s haison.c 逻辑操作符 -a 逻辑与(and),操作符两边均为真,结果为真,否则为假。 -o 逻辑或(or),操作符两边一边为真,结果为
19、真,否则为假。 ! 逻辑否,条件为假,结果为真,反之。示例: -r haison.c a w hai.c 第24页,共32页。条件测试篇字符串测试=两个字符串相等-z空串!=两个字符串不相等-n非空串示例: -z $SHELL 数值测试-eq数值相等(equal to)-lt第一个数小于第二个数(less than)-ne数值不相等(not equal to)-le第一个数小于等于第二个数-gt第一个数大于第二个数(greater than)-ge第一个数大于等于第二个数示例: “10” -eq “12” 第25页,共32页。控制结构篇选择结构循环结构if语句: if then else 提供
20、条件测试case 语句:允许匹配模式、单词或值for:每次依次处理列表内的信息,直至循环耗尽。until:不常用。条件在循环末尾,至少执行一次。while:条件在循环头部。第26页,共32页。控制结构篇if语句格式1 if 条件 then 命令 fi 格式2 if 条件 ; then命令 fi 或格式3 if 条件 then 命令1 else 命令2 fi 格式4 if 条件1 then 命令1 elif 条件2 then 命令2 else 命令3 fi 示例#!/bin/sh#ifTest#to show the method of if echo -e Enter the first in
21、teger:cread FIRSTecho -n Enter the second integer:read SECONDif $FIRST -gt $SECOND then echo $FIRST is greater than $SECOND elif $FIRST -lt $SECOND then echo $FIRST is less than $SECOND else echo $FIRST is equal to $SECOND fi第27页,共32页。控制结构篇case语句格式 case 值 in 模式1) 命令1 ; *) 命令n ; esac取值后面必须为单词in,每一个模式
22、必须以右括号结束。取值可以为变量或常数。取值检测匹配的每一个模式,一旦模式匹配,其间所有命令开始执行直至;。执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用*号捕获该值,再接受其他输入。示例#!/bin/sh#caseTest#to test the method of caseUSER=whoamicase $USER in root)echo You can do all the operations ; Dave)echo You can do some operations ; *)echo Sorry,you can not do anything ;esac 第28页,共32页。控制结构篇for循环格式for 变量名 in 列表do 命令done当变量值在列表里,for循环即执行一次所有命令,使用变量名访问
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 笔记本电脑双11宣传及营销方案
- 2026年广告策划助理招聘笔试题
- 2026年新能源车-安全性-测评
- 2026年美容师国家职业技能鉴定题
- 2026年交通行业校招笔试重点
- 2026年物业管理师高频考点解析
- 2026年中国香道数字嗅觉营销AI编程师认证考试考点速查手册
- 2026年证券从业资格证投资分析仿真题
- 2026年服务设计创新创意创业竞赛
- 2026年城市规划面试技巧与方法
- 2025年建筑施工特种作业人员考试建筑电焊工题库(附答案)
- 索尼相机DSC-H50说明书
- 大宗贸易白糖居间合同协议书范本
- 【MOOC答案】《人力资源管理》(南京邮电大学)章节作业慕课答案
- 国家新型城镇化规划(2025年-全文)
- 病房静音管理方案(3篇)
- DB13T 1510-2012 流态粉煤灰水泥混合料施工技术指南
- 《现代农业技术与装备》课件
- 化工总控工(技师高级技师)考试题库
- 2025儿童暴发性心肌炎诊治专家建议解读课件
- 烟草执法风险防控课件
评论
0/150
提交评论