

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Shell 编程Shell基础编程主要内容shell介绍shell基本语法shell常用语句Shell介绍UNIX的shell程序解释用户的命令,不管是用户直接输入的或者从一个称作Shell脚本或者Shell程序文件读入。Shell脚本是解释型的,而不是编译型的。Shell从脚本行的每行读取命令并在系统中搜索这些命令,当编译器把一个程序转化为可供机器读取的形式时,那么它就可以被以一个可执行文件用在shell脚本当中。 除了向内核传送命令之外,shell的主要任务是提供一个可单独配置的使用shell资源配置文件的用户环境。Shell类型 sh 或者称作 Bourne Shell: 最初的shel
2、l并且仍然在UNIX系统和UNIX相关系统中使用。它是基本的shell,是一个特性不多的小程序。虽然不是一个标准的shell,但是为了UNIX程序的兼容性在每个Linux系统上仍然存在。 bash 或者称作 Bourne Again shell: 标准的GNU shell,直观而又灵活。或许是初学者的最明智选择同时对高级和专业用户来说也是一个强有力的工具。在Linux上,bash 是普通用户的标准shell。这个shell因此称为Bourne shell的超集,一套附件和插件。意味着bash和sh是兼容的:在sh中可以工作的命令,在bash中也能工作,反之则不然。 csh 或者称作 C she
3、ll: 语法了类似于C语言,某些时候程序员会使用。 tcsh 或者称作 Turbo C shell: 普通C shell的超集,加强了的用户友好度和速度。 ksh 或者称作 Korn shell: 某些时候被有UNIX背景的人所赏识。Bourne shell的一个超集,有着对初学者来说就是一场恶梦的标准配置。文件 /etc/shells 一个简单的shell脚本#!/bin/bash/shell脚本的开始clearecho “Hello, $USER“/打印用户信息echoecho “Todays date is date“ /显示日期和时间echoecho “The user is :“/提
4、示信息who/who命令echoecho “This is uname -s“/cpu信息echoecho Thats all folks!Shell如何执行命令执行交互式命令外部命令内建命令执行脚本的方式:Sh 脚本文件先chmod +x脚本文件再./脚本例如:#!/bin/shcd .ls启动脚本/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。/etc/bashrc:为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。/.bash_profile:当用户登录时,该文件仅仅执行一次! 通常情况下该脚本
5、会去调用/.bashrc。/.bashrc:该文件包含个人的bash shell的bash信息,通常情况下该脚本中会去调用/etc/bashrc。/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。Shell基本语法变量环境变量(可以从父进程传给子进程,常用env查看)本地变量(只存在于当前shell进程,用set可以显示)设置变量:VARvalue(本地变量)export VAR或者export VARvalue(导入成环境变量)unset命令用户删除已经定义的环境变量或本地变量使用$VAR或者$VAR可以取出变量的值,例如:rootbaozong mysh
6、ell# echo $SHELL/bin/bashrootbaozong myshell# echo $SHELLabcrootbaozong myshell# echo $SHELL abc/bin/bash abcrootbaozong myshell# echo $SHELL abc/bin/bash abcrootbaozong myshell# echo $SHELLabc/bin/bashabc变量的定义与删除变量定义的时候不允许有空格例如:STRING=“my name”导出变量Exporting 一个子shell能够改变从父shell变量继承过来的变量,但是在子shell所作的
7、改变对父shell也没有影响 Bourne shell保留变量 变量名字定义CDPATH一个由冒号分割的目录列表作为内建命令 cd 的搜索路径。 HOME当前用户的home目录;默认为内建命令 cd 。这个变量的值同样被扩展使用。 IFS分割域的一个字符的列表;用于shell把词分开作为扩展。MAIL如果这个变量设成一个文件名并且 MAILPATH 变量没有设置,Bash在指定文件中通知用户邮件的到达。 MAILPATH一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。OPTARGgetopts 内建命令处理的最后的选项参数的值。 OPTIND最后一个由 getopts 内
8、建命令处理的选项参数的索引号。 PATH一个用冒号分隔的目录列表,shell从这些目录里寻找命令。PS1主要提示符。默认值是 “s-v$ ”。 PS2次要提示符。默认值是 “ ”。 (输入换行时出现)变量名定义auto_resume这个变量控制shell如何与用户交互和作业控制。BASH用于执行当前Bash实例的全路径。BASH_ENV如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。BASH_VERSION当前Bash实例的版本号。BASH_VERSINFO一个只读变量数组,它的成员保存这个Bash实例的版本信息。COLUMNSse
9、lect 内建命令来决定打印选择列表时终端宽度。在收到 SIGWINCH 信号时自动设置。 COMP_CWORD包含当前光标位置的字的 $COMP_WORDS 的一个索引。An index into $COMP_WORDS of the word containing the current cursor position. COMP_LINE当前命令行。COMP_POINT指明相对于当前命令起点的当前光标位置。COMP_WORDS一个由当前命令行中单个词组成的变量数组。COMPREPLY一个变量数组,Bash从中读取由一个可编程完整设备调用的一个shell函数生成的可能的完成。An arra
10、y variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility. DIRSTACK一个保存当前目录栈内容的变量数组。Bourne shell保留变量字符定义$*展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由 IFS 特殊变量的第一个字符分隔。 $展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。$#把位置参数展开为十进制数字。$?展
11、开成最近执行的前台管道程序的退出状态。$-一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i)$展开成shell的进程ID。$!展开成最近在后台(异步)执行的命令的进程ID。$0展开成shell或者shell脚本名。$_下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。特殊Bash变量 文件名替换用于匹配的字符称为通配符,例如:* 匹配零个或者多个任意字符? 匹配一个任意字符若干字符
12、匹配方括号中任意一个字符一次出现如:Ls /dev/ttyS*Ls cheng0?.txtLs cheng0-2.txtLs cheng0120-9.txt命令替换命令替换允许一个命令的输出来替换这个命令本身。命令替换在一个命令这样封装的时候发生:$(command) 或command 如:date=dateEcho $date或者date=$(date)Echo $date转义字符 转义字符:“”单引号与双引号单引号()用于保持在引号内的每个字符的字面值。双引号保持引号内的所有字符的字面值,除了$, Shell的输入与输出echo常见-n(禁用转义字符) e(可以使用转义字符)#!/bin/
13、shecho -e this 3 linesnnnecho okecho enter you name:read nameecho enter you passwd:read passwdecho $name $passwd算术替换用于算术计算:$()中的shell变量取值将换成整数,如:var=45echo $($var+3)注意只能用+-*/和(),并且只能做整数计算。别名:alias一个别名允许使用一个字符串来代替一个字当它作为一个简单命令的第一个字时候。shell维护一个可以用 alias 和 unalias 内建命令来设置或者取消的别名列表。用 alias 命令而不带选项的时候可以显
14、示当前shell所知的别名列表。 shell的历史记录history/bash_history文件中!n 执行history中第n条指令! 执行history中最后一条指令!str 执行history中最后以str开头的命令注意:Shell具有的补全功能,请大家利用好。Shell脚本语法条件测试:test或者可以用test或者测试一个条件是否成立,如果测试结果为真,则该命令退出状态为0,如果为假,状态为1。test文件测试格式:test option file 或者 option file -b file块文件-c file字符文件-d file目录-e file存在-p file管道-r f
15、ile可读-s file大于0 -w file可写-x file可执行f1 -ef f2 f1和f2被链接,指向同一文件(Korsh shell)f1 -nt f2 f1比f2新f1 -ot f2 f1比f2旧test-a 逻辑与,操作符两边均为真,结果为真,否则为假。-o 逻辑或,操作符两边一边为真,结果为真,否则为假。! 逻辑否,条件为假,结果为真。test整数比较格式:test int1 operator int2-eq数值相等。-ne数值不相等。-gt第一个数大于第二个数。-lt第一个数小于第二个数。-le第一个数小于等于第二个数。-ge第一个数大于等于第二个数。n1 -eq n2 n
16、1和n2相等n1 -ge n2 n1大于或者等于n2n1 -gt n2 n1大于n2n1 -le n2 n1小于或者等于n2n1 -lt n2 n1小于n2n1 -ne n2 n1不等于n2test字符串测试格式:test option string或者option string= 两个字符串相等。!= 两个字符串不等。-z 空串。-n 非空串。s1 = s2 相等s1 != s2 s1与s2不同s1 s2 s1的ASCII在s2后If语句i f语句测试条件,测试条件返回真( 0)或假(1)后,可相应执行一系列语句。简单的if语句是:i f条件then 命令f i注意:使用i f语句时,必须将
17、t h e n部分放在新行,否则会产生错误。如果要不分行,必须使用命令分隔符。现在简单i f语句变为:if 条件;t h e n命令f iIf语句i f语句其格式为:if 条件1then 命令1elif 条件2then 命令2else 命令3f iIf 条件1 如果条件1为真Then 那么命令1 执行命令1elif 条件2 如果条件1不成立then 那么命令2 执行命令2else 如果条件1,2均不成立命令3 那么执行命令3fi 结束case语句c a s e语句为多选择语句。可以用c a s e语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。c a s e语句格式如下:case 值 i n模式1 ) 命令1 . . . ;模式2) 命令2 . . . ;e s a ccase语句取值后面必须为单词i n,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至;取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号*捕获该值,再接受其他输入。模式部分可能包括元字符,与在命令行文件扩展名例子中使用过的匹配模式类型相同,即:* 任意字符。? 任意单字符。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Z世代消费行为对品牌形象塑造的影响:2025年新消费品牌形象报告
- 2025年医院电子病历系统在医院信息化建设中的远程诊断应用报告
- 土壤改良技术革新:2025年新型土壤改良剂研发成果与应用报告
- 2025年医药行业CRO模式下的临床试验伦理审查与合规性评估报告
- 2025年工业废气催化燃烧技术环保设备行业发展趋势与市场分析报告
- 老年教育课程设置与教学方法创新基于2025年老年教育信息化建设的实践研究报告
- 保险考试题库及答案
- 线下演出市场复苏:2025年演出行业产业链协同创新报告
- 安全再培训试题及答案
- 安全试题100道及答案
- 麻精药品管理培训
- 航天器遥操作策略-全面剖析
- Revision Going to a school fair Lesson 1(教学设计)-2024-2025学年人教PEP版(2024)英语三年级下册
- 京东代理合同样本
- 2025外研版七年级下册英语全册教案
- 养老院火灾事故防范重点培训课件
- 《全断面岩石掘进机法水工隧洞工程技术规范(SLT 839-2025)》知识培训
- 危重患者的监测与管理
- 闽教版(2024)三年级英语下册全册大单元整体教学设计 教案
- 股东会议程及决议草案
- TLYCY 3071-2024 森林草原防火无人机监测技术规范
评论
0/150
提交评论