haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 小学数学小学数学

Linux8-9课件

发布时间:2014-01-01 11:41:18  

Linux 应用基础
山东大学 王风宇 wangfengyu@sdu.edu.cn

第8章 Shell 编程 ?变量替换和文件名替换 ?退出状态 ?exit命令 ?命令执行顺序 ?内部整数算术运算 ?test命令

2

变量替换和文件名替换
?变量替换: $variable
? $x=aa $echo $x
aa

? 练习:把当前目录下的文件file12345改名为file123456: $fname=file12345 mv: missing file argument $mv $fname $fname6

$mv $fname {$fname}6 $mv $fname “$fname”6
3

变量替换和文件名替换
?文件名替换:
? 通配符的使用: $ls *.* $ls ??* $echo a* $ rm * $ls [a-z]*[0-9]

4

退出状态
?每个程序或命令执行完后,都会给系统返回一个 退出状态,指示是否成功运行 ?退出状态用数值表示:
成功执行:0 否则:非零值(说明执行失败或某处有错误)

?特定变量参数$? ? 保存最后程序的退出状态值 ? 检验退出状态命令: $echo $?
5

exit 命令
? exit是Shell的一个内建命令,使用它可以立即终止 Shell程序的执行 ? 格式: exit [n] ? 其中,n为一数字,表示希望返回的退出状态。如 果不指定,就采用exit之前最后所执行命令的退出 状态 ? 0 成功执行 ? 非0 执行失败或某处有错误 ? 提示 ? 如果直接在终端上执行exit命令,会导致从系统注 销,因为它会终止登陆Shell的执行。
6

&&和||
? 命令1 && 命令2 只有命令1为真(即成功被执行,返回 0),命令2才能够被执行。
$ ls s* && rm s*

? 命令1 || 命令2 如果命令1执行失败,那么就执行命令2。
$cd /dir1 || echo cannot change to /dir1

7

算术表达式的计算
? 若要计算表达式2*i+1的值?
$i=2 $echo 2*$i+1 2*2+1

? 如何进行变量的整数运算?
$echo $((2*i+1))
5
算术扩展

8

Shell的算术扩展
?算数扩展提供变量的整数运算机制 ?Shell的内建命令,老版本的Shell可能不支持 ?形式: 如: $((2*i+1)) $((expression))
? expression:算术表达式,由变量和运算符组成,运算 符源于c语言。

?用法:
? 显示输出: echo $((expression)) ? 变量赋值: variable=$((expression))
9

Shell的算术扩展
? $((expression)) 举例: ? 计算表达式2*i+1的值 $i=2 变量i前面没有$符号? $echo $((2*i+1)) 算术扩展中包含的只有变量、运算符和常数。
6 ? $echo $(( 2*(i+1) )) 计算2*(i+1) 的值:expression内可以使用括号来强制分 组

? $echo $(( 2 *( i +1) )) 6 在$(( expression ))的双小括号内,空格可以任意添加
10

Shell的算术扩展
?例子: ? $ echo $(( a+1 ))
1 表达式内的变量若未定义,则当作其值为0 a是未定义的变量

? $i=2 ; echo $(( i==2 ))
算术扩展可以用来判断真假

1

? 利用算术扩展给变量赋值: $ result= $(( i>=0 &&i<=3))
11

expr命令 ? expr 用于进行整数运算 ? 格式: expr 表达式
? ? ? ? ? ? ? ? ? 表达式

由操作数和运算符组成。操作数一般是整数,也可 以是字符串。 表达式的各部分(操作数和运算符之间)必须以空格分隔。 表达式中某些对shell有特殊意义的字符必须转义。 + \* / % = 加法 减法 乘法 整除 求模(余数)
12

? 运算符可为:

expr命令
9 $expr 6 + 3 $var1=6 $var2=3 $expr var1 / var2 $expr $var1 / $var2 $expr $var1 * $var2

expr: non-numeric argument

2 expr: syntax error

当Shell看到*符号时,会把它看作通配符,并用当前目录下的文 件名列表进行替换

$expr

$var1

\*

$var2

18

13

expr命令
? 多个算术表达式可以组合在一起 $expr 5 + 7 / 3 7 还可以使用反引号改变计算次序: $expr `expr 5 + 7` / 3 4
expr命令一般用于整数值,此外,还可用于字符串测试。 $s1=“hello” $expr $s1 = “hello”
1 显示真假值

?

?

14

test 命令
?用于测试一种或几种条件 ?格式: ? test expression ? [ expression ]
使用方括号时,要注意在条件两边加上空格。涉及 到变量值($variable)的比较时最好把变量取值用双 引号括起来,以免Shell误解变量值。

?测试结果反映在退出状态中,而不是直接显示输出: ? 条件为真 =〉退出状态为0 ? 条件为假 =〉退出状态非0

15

test 命令
? 可测试的条件分为4类:
? ? ? ? 测试两个字符串之间的关系 测试两个整数之间关系 测试文件是否存在或是否具有某种状态或属性。 测试多个条件的与(and)或(or)组合。

? 分别对应4种不同的操作符:
? ? ? ? 字符串操作符 整数操作符 文件操作符 逻辑操作符
16

test 命令的操作符
? 字符串操作符
? string1 = string2 ? string1 != string2 ? string 字符串相等 字符串不等 字符串非空

?等号和不等号操作符两边必须有空格 ?涉及到变量值比较时最好把变量值($variable) 用双引号括起来 ? 如何判断字符串是否相等?
? 长度 ? 内容

17

test 命令的操作符
? 例子:
$str1=abcd $str2="abcd " $test "$str1" $[ "$str1" ] $echo $?
测试$str1是否非空

0

$test "$str1" = "$str2" $[ "$str1" = "$str2" ] $echo $? 1

测试$str1与$str2是否相等

18

test 命令的操作符
?整数操作符
? ? ? ? ? ? int1 –eq int2 int1 –ne int2 int1 –lt int2 int1 –gt int2 int1 –le int2 int1 –ge int2 数值相等 数值不等 int1< int2 int1>int2 int1<= int2 int1>=int2

19

test 命令的操作符
?例子:整数操作符与字符串操作符 $str1=1234 $str2=01234 $[ "$str1" = "$str2" ] $echo $? 字符串比较
1

$[ "$str1" –eq "$str2" ] $echo $?
0
数值大小的比较

20

test 命令的操作符
?文件操作符:测试文件状态
? ? ? ? ? ? ? -e file -d file -f file -s file -r file -w file -x file 文件file存在 文件file是一个目录 文件file是一个普通文件 文件file大小不为0 可读 对文

件所有者的权限 可写 可执行 逻辑与 逻辑或 逻辑非
21

?逻辑操作符:测试多个条件的与(and)或(or)组合
? -a ? -o ? !

文件操作符 ?例子:假设以admin用户登录系统 $ls –l aa
-rw-rw-r-1 admin admin 32 Apr 12 10:51 aa

$ [ -w aa ] $ test -w aa $ echo $? $[ ! -d aa ] $ echo $?

0

0

22

逻辑操作符
?例子:假设以admin用户登录系统 $ls –l aa
-rw-rw-r-1 admin admin 32 Apr 12 10:51 aa

$[ -r aa -a -x aa ] 1 $echo $? $[ -x aa -o -s aa ] 0 $ echo $? $x=0 $[ "$x" -ge 0 –a "$x" -lt 10 ] $ echo $? 0
23

Shell 脚本实例1
#!/bin/bash # testing string equality testuser=rich If [ $USER = $testuser ] then echo “Welcome $testuser” else echo “This isn’t $testuser” fi $ ./test
24

Shell 脚本实例2
#!/bin/bash # basic example of “for”
for sta in Alabama Alaska Arizona California do echo The next state is $sta done $./test The next state is Alabama The next state is Alaska The next state is Arizona The next state is California
25

Shell 脚本实例3
#!/bin/bash # create a log file today=`date +%y%m%d` ls /usr/bin –al > log.$today

26

Shell 脚本实例4
#!/bin/bash echo “Enter password” read trythis
while [ “$trythis” != “sectret” ]; do echo “Sorry, try again” read trythis done exit 0
27

Shell 脚本实例5
#!/bin/bash until who | grep “$1” > /dev/null do sleep 60 done echo “*****$1 has just logged in****”
Exit 0
28

第9章 图形桌面
?X Window ?GNOME ?虚拟控制台切换

29

图形化桌面环境和命令行
?图形化桌面环境 可以更简易地进入应用程序、文件和系统资 源。对于程序启动和其他日常的工作非常有用, 但是对于系统管理和自动化,图形用户界面还是 不够灵活。 ?命令行 有更丰富的功能,而且,使用命令行方式会 让我们对于系统的工作原理有更多的实际了解。
图形用户界面和命令行的混合使用可能是最理想的。
30

图形化桌面系统
?Linux系统主要采用的两种桌面系统环境:
? GNOME ? KDE

?启动X-Window服务器和桌面系统:
? 如果用户在安装Red Hat Linux时选择图形化登录界面, 则系统初启时就同时启动它们,并提供图形化登录提 示。 ? 从文本界面进入图形桌面:

#startx
31

图形化桌面系统 ?GNOME
? GNU Network Object Model Environment, GNU网络对象模型环境,是GNU项目的一部分, 是完全开放源代码的自由软件。 ? 是Red HatLinux下的默认桌面管理器 ? 提供了方便开发和使用的完整桌面环境及应用 程序框架。 ? GNOME提供了开发函数库。从开发人员的角 度来看,它通过CORBA技术定义了它与外界 的接口。
32

GNOME
提供文件浏览器的入口

容纳了所有使用系统所需的 工具和应用程序

33

GNOME
9.2使用GNOME面板

主菜单

工 作 区 切 换 器

任务条

34

GNOME
?主菜单
? 列出了Red

Hat Linux的多数应用程序
? 注销
? 运行应用程序 ? 查找文件

? 主菜单-〉系统设置
? 服务器设置 ? 安全级别 ? 网络 ? 用户和组群 ? 键盘、鼠标、显示器 ? 日期、语言设置
35

GNOME
?工作区切换器

? 工作区就是可视的桌面区域
? 面板上的工作区切换器提供使用多个工作区的能力, 使我们不必把所有运行着的程序都集中在一个桌面区域。

? 可以用鼠标单击一个工作区来切换到那个桌面上去。

36

GNOME
?任务条
?显示桌面上运行的应用程序名称

?在面板上添加图标和小程序

37

GNOME
?使用 Nautilus (资源管理器)

? 提供系统和文件的图形化显示
? 可以在与主菜单相连的各子菜单中搜索,或者漫游文 件系统。

? 进入方法:
双击桌面上的主目录图标

38

文本和图形控制台的切换
?控制台(console):
? 是指与系统主机直接相连的监视器和键盘,显示系统 引导、系统运行、用户程序运行、系统错误警告等信 息,用于系统管理的目的。 ? 虚拟控制台:使用户可以同时在不同的控制台上进行 多任务操作,体现了Linux系统多用户、多任务的特性。

?终端(terminal):是普通用户的操作台,显示 本用户登录、与系统交互的信息。

39

文本和图形控制台的切换
? 6个文本虚拟控制台 <CTRL><ALT><F1> <CTRL><ALT><F2> <CTRL><ALT><F3> …… <CTRL><ALT><F6>
切换到第一文本控制台 切换到第二文本控制台 切换到第三文本控制台

? 5个图形虚拟控制台 <CTRL><ALT><F7> 切换到第一GUI控制台 <CTRL><ALT><F8> 切换到第二GUI控制台 …… <CTRL><ALT><F11>
40


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com