SHELL编程基础篇.pdf
《SHELL编程基础篇.pdf》由会员分享,可在线阅读,更多相关《SHELL编程基础篇.pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 操作系统课程教案(SHELL 编程基础篇)Linux 操作系统课程教案(SHELL 编程基础篇)内蒙古工业大学信息工程学院计算机系 内蒙古工业大学信息工程学院计算机系 2005 年年 10 月月 第一部分 SHELL 编程基础第一部分 SHELL 编程基础 一、一、vi 编辑器编辑器 1、常用编辑器、常用编辑器(GUI:gedit kwrite kword open office 等等)2、vi 编辑器简介编辑器简介 vi原义是visual interface,是一个运行在TUI下的全屏幕编辑器。在linux中所用到的vi叫做vim(即vi Improved)。使用vi的好处,通用
2、性:在所有的Unix和类Unix系统中都有vi编辑器;功能强:可实现各种编辑功能。(有关vi:http:/www.vim.org/)3、vi 的操作模式的操作模式 进入 vi:vi filename vim filename vi vim vi 有三种操作模式:Command mode:输入各种命令控制光标的移动、删除字符、区段复制等;Insert mode:文字数据的输入;Last line mode:保存文件、离开 vi 及其他设置,如寻找或取代字符串等。命令错误命令错误 Esc:i、a、oLast line mode Insert mode Command mode2 SHELL 编程基
3、础篇SHELL 编程基础篇 4、初步使用及、初步使用及 vi 界面简介界面简介 5、Command mode 命令介绍命令介绍 进入编辑模式 i 进入编辑状态,在光标前插入字符 a 进入编辑状态,在光标后追加字符 I 进入编辑状态,在行首插入字符 A 进入编辑状态,在行尾追加字符 移动光标 j 光标下移一行 k 光标上移一行 h 光标左移一格 l 光标右移一格 Ctrl+f 向下翻一屏 Ctrl+b 向上翻一屏 Ctrl+d 向下翻半屏 Ctrl+u 向上翻半屏 nG 把光标移到第 n 行,不带 n 则移到文件尾$光标移到行尾 数字 0 光标移到行首 删除文字 x 删除光标处的字符 X 删除光
4、标前的字符 D 删除同一行中光标所在位置之后的所有字符 ndd 删除从光标开始的 n 行 r 替换当前光标处的字符 R 替换从光标处开始的一串字符,并进入编辑状态 3 SHELL 编程基础篇SHELL 编程基础篇 复制文字 yy 复制光标所在的当前行到内存缓冲区 yw 复制光标所在字到内存缓冲区 nyy 复制光标所在的当前行及其后 n 行到内存缓冲区 nyw 复制光标所在的字及其后 n-1 字到内存缓冲区 p 将缓冲区的内容粘贴到光标的后面 P 将缓冲区的内容粘贴到光标的前面 其他命令 ctrl+g 在窗口的最后一行显示总行数和当前行数 数字+G 跳到指定行 u 复原功能%查括号 ZZ 保存、
5、退出 6、Last line mode 命令介绍命令介绍 e 文件名 新建 n 文件名 打开 w 保存?字符串 查找 q 退出 q!强制退出不保存 wq 保存退出 set nu 加入行号 set nonu 取消行号/字符串 查找 4 SHELL 编程基础篇SHELL 编程基础篇 二、二、SHELL 编程基础编程基础 1、SHELL 脚本简介(示例:有控制结构的脚本和无控制结构的脚本)脚本简介(示例:有控制结构的脚本和无控制结构的脚本)2、SHELL 脚本的建立与执行脚本的建立与执行?建立:利用任何文本编辑器。?执行方式:?bash脚本名 注:脚本名后不能带参数?bash 脚本名 参数?.脚本名
6、 参数 注:以目前 shell 环境执行脚本?将脚本的权限设置为可执行,再运行。如在当前目录有一脚本名为 exp1,则先设置执行权限,chmod a+x exp1 再执行,./exp1 3、命令执行顺序、命令执行顺序 在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。?使用&使用&的一般形式为:命令1&1&命令2 2 这种命令执行方式相当地直接。&左边的命令(命令1)返回真(即返回0,成功被执行)后,&右边的命令(命令2)才能够被执
7、行;换句话说,“如果这个命令执行成功&那么执行这个命令”。5 SHELL 编程基础篇SHELL 编程基础篇$mv /apps/bin /apps/dev/bin&rm-r/apps/bin?使用|使用|的一般形式为:命令1|1|命令2 2|的作用有一些不同。如果|左边的命令(命令1)未执行成功,那么就执行|右边的命令(命令2);或者换句话说,“如果这个命令执行失败了|那么就执行这个命令”。这里有一个使用|的简单例子:cp a.sh b.sh|echo“if you are seeing this copy failed!”4、命令替换4、命令替换 格式:命令表 或$(命令表)如:dir1=pw
8、d dir2=$(pwd;cd/home)echo$dir1 或 echo pwd echo$dir2 或 echo$(pwd;cd/home)5、别名、命令历史和名称补全5、别名、命令历史和名称补全 定义别名:alias name=value 如:alias ll=ls-l (注:value 应用单引号括起,以免歧义。)取消别名:unalias name 6、6、Shell 特殊字符特殊字符?通配符*?!ls l dwg?!0-9*列出了所有以dwg开头、中间可以是任何两个字符,后面跟随一个非数6 SHELL 编程基础篇SHELL 编程基础篇 字字符、然后是任意字符串的文件名。?引号?使用双
9、引号可引用除字符$、外的任意字符或字符串。?单引号与双引号类似,不同的是shell会忽略任何引用值。?反引号用于设置系统命令的输出到变量。(命令替换)?如果下一个字符有特殊含义,反斜线防止shell误解其含义,即屏蔽其特殊含义。下述字符包含有特殊意义:&*+$|?(转义)cat ex1.sh#!/bin/bash echo“current directory is pwd”echo“home directory is$HOME”current directory is/home/zxf home directory is/home/zxf cat ex2.sh#!/bin/bash echo
10、current directory is pwd echo home directory is$HOME current directory is pwd home directory is$HOME?输入输出重定向?即时文件定向符即时文件定向符 当shell看到 的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。它允许把shell程序的重新定向到一个命令中。形式:7 SHELL 编程基础篇SHELL 编程基础篇 命令 标记符 输入行 标记符 如:如:mail zxf$temp cat
11、$temp rm f$temp 9、输入、输出命令9、输入、输出命令?输出命令echo echo命令有很多功能,加e参数为转义,其中最常用的是下面几个:14 SHELL 编程基础篇SHELL 编程基础篇 a 响铃 c 不换行 t 跳格 n 换行?输入命令read 格式:read 变量1 变量2 10、位置参数10、位置参数?位置参数及其引用 如果要向一个s h e l l脚本传递信息,可以使用位置参数完成此功能。每个访问参数前要加$符号。第一个参数为0,表示预留保存实际脚本名字。无论脚本是否有参数,此值均可用。访问10以后的参数,需用括起,如:$10。如果向脚本传送Did You See Th
12、 e Full Mo o n信息,下面讲解了如何访问每一个参数。$0$1$2$3$4$5$6$7$8$9 脚本名 Did Yo u S e e T h e F u l l M o o n 举例:#!/bin/bash#ex3:combine files and count lines cat$1$2$3$4$5$6$7$8$9|wc-l#end?set命令为位置参数赋值 在shell程序中可以利用set命令为位置参数赋值或重新赋值,如:15 SHELL 编程基础篇SHELL 编程基础篇#!/bin/bash#ex3:combine files and count lines set m1.c
13、m2.c cat$1$2$3$4$5$6$7$8$9|wc-l#end 则$1为m1.c,$2为m2.c。?移动位置参数 格式:shift n 移动位置参数可用shift命令,每执行一次shift命令就将命令行上的实参向左移一位,即相当于位置参数向右移动一个位置。shift命令不能将$0移走。举例:#!/bin/bash#ex4:shell script to demonstrate the shift command.echo$0$1$2$3$4$5$6$7$8$9 shift echo$0$1$2$3$4$5$6$7$8$9 shift 4 echo$0$1$2$3$4$5$6$7$8$9
14、#end 执行结果:$0$1$2$3$4$5$6$7$8$9 ex4 A B C D E F G H I J K ex4 A B C D E F G H I ex4 B C D E F G H I J ex4 F G H I J K 16 SHELL 编程基础篇SHELL 编程基础篇 11、算术运算11、算术运算 格式:格式:(算术表达式算术表达式)如:(j=6*3+2)echo$(4*3)echo$j 注:这里的算术表达式使用C语言中表达式的语法、优先级和结合性,除+、-和逗号之外,所有运算符都得到支持。12、控制流结构 12、控制流结构 条件测试 条件测试 写脚本时,有时要判断字符串是否相
15、等,可能还要检查文件状态或是数字测试。基于这些测试才能做进一步动作。test命令用于测试字符串,文件状态和数字,使用最后退出状态命令$?可测知test,以0表示正确,1表示返回错误。test一般有两种格式,即:test condition 或 condition 例子:例子:test f“m1.c”或或 f“m1.c”echo$?echo$?使用方括号时,要注意在条件两边加上空格。文件状态测试-d 目录-s 文件长度大于0、非空-f 正规文件-w 可写-r 可读-x 可执行 17 SHELL 编程基础篇SHELL 编程基础篇 测试时使用逻辑操作符-a 逻辑与,操作符两边均为真,结果为真,否则为
16、假。-o 逻辑或,操作符两边一边为真,结果为真,否则为假。!逻辑否,条件为假,结果为真。例子:-f“m1.c”-o-d“mydir”echo$?字符串测试=两个字符串相等。!=两个字符串不等。-z 空串。-n 非空串。例子:$edit_def=”vi”echo$?测试数值-eq 数值相等。-ne 数值不相等。-gt 第一个数大于第二个数。-lt 第一个数小于第二个数。-le 第一个数小于等于第二个数。-ge 第一个数大于等于第二个数。例子:5-eq 7 echo$?18 SHELL 编程基础篇SHELL 编程基础篇 expr用法 expr命令一般用于整数值,但也可用于字符串。一般格式为:exp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SHELL 编程 基础
限制150内