Linux下下Shell
Linux
Shell编程简介
编程简介
内容安排
内容安排
综述篇综述篇
命令篇命令篇
变量篇变量篇
条件测试篇
条件测试篇
控制结构篇
控制结构篇
函数篇函数篇
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇
Shell是什么是什么
�� Shell
�� 怎样写怎样写Shell
Shell
Cygwin简介简介
�� Cygwin
Linux黑洞黑洞
�� Linux
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇————————————————Shell
Shell
Shell
Shell
Shell是什么是什么是什么是什么是什么是什么是什么是什么
Shell
Shell
Shell
�� 壳壳((Shell
Shell))保护其内部的核
保护其内部的核((Kernel
Kernel) )
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇————————————————Shell
Shell
Shell
Shell
Shell是什么是什么是什么是什么是什么是什么是什么是什么
Shell
Shell
Shell
�� Shell
�� 本质上,
�� 使用较广的
shell 有标准的
Bourne shell
shell ((shsh))、、Korn
Korn Shell(ksh
Shell(ksh ))、、
Shell(bash ))等等。。
shell))。用户向
。用户向 shell
kernel )间的一个接口。
)间的一个接口。
shell ((cshcsh))、、Bourne Again
是一种具备特殊功能的程序, 它是介于使用者和
它是介于使用者和 UNIX/Linux
UNIX/Linux
Shell是一种具备特殊功能的程序,
操作系统之核心程序( kernel
操作系统之核心程序(
为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成
�� 为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成
shell提出请求,
提出请求,
损害,在内核的周围建了一个外壳
损害,在内核的周围建了一个外壳 ((shell
解释并将请求传给内核。
shell解释并将请求传给内核。
shell
使用较广的 shell
CC shell
查看当前环境所用 shell
�� 查看当前环境所用
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,
的另一个重要特性是它自身就是一个解释型的程序设计语言,
�� shell
shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,
程序设计语言支持绝大多数在高级语言中能见到的程序元素,
shell
如函数、变量、数组和程序控制结构。 shell
shell编程语言简单易学,任
编程语言简单易学,任
如函数、变量、数组和程序控制结构。
何在提示符中能键入的命令都能放到一个可执行的 shell
何在提示符中能键入的命令都能放到一个可执行的
本质上, shell
Shell基本上是一个命令解释器,类似于
Shell
收用户命令,然后调用相应的应用程序。
收用户命令,然后调用相应的应用程序。
有标准的 Bourne
Bourne Again Shell(bash
shell::echo $SHELL
echo $SHELL
基本上是一个命令解释器,类似于 DOSDOS下的下的command.com
shell 脚本是命令行命令简单的组合到一个文件里面。
脚本是命令行命令简单的组合到一个文件里面。
command.com 。它接。它接
shell 程序中程序中。。
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇————————————————怎样写怎样写怎样写怎样写怎样写怎样写怎样写怎样写Shell
Shell
Shell
Shell
Shell
Shell
Shell
Shell
�� 利用利用vivi编辑器编辑脚本,将脚本命名为
编辑器编辑脚本,将脚本命名为
�� Shell
程序使用系统上的 Bourne Shell
Bourne Shell
脚本功能 ..shsh
脚本功能
Shell脚本不是复杂的程序,它是按行
脚本不是复杂的程序,它是按行
解释的,脚本第一行总是以
解释的,脚本第一行总是以
#!/bin/ shsh 开头,它通知系统以下的
开头,它通知系统以下的
#!/bin/
Shell
Shell程序使用系统上的
来解释。
来解释。
第二行注释中写入脚本名,第三行注释
�� 第二行注释中写入脚本名,第三行注释
开始写入脚本功能 ————习惯。习惯。
开始写入脚本功能
以下行进入脚本正式编写
�� 以下行进入脚本正式编写
编写完后给脚本添加执行权限:
�� 编写完后给脚本添加执行权限:
chmod
�� 运行脚本:
或或 ././ScripName
ScripName
chmod u+xu+x ScripName
ScripName
运行脚本: ScripName
ScripName
简单脚本示例:
简单脚本示例:
vi vi ShowHello.sh
ShowHello.sh
以下为脚本内容 :
以下为脚本内容
#!/bin/sh
#ShowHello.sh
#To show hello to somebody
echo -n“Enter Your Name: ”
read NAME
echo “Hello,$NAME !”
保存,退出 vivi编辑器。
编辑器。
保存,退出
为脚本添加可执行权限:
为脚本添加可执行权限:
chmod u+xu+x ShowHello.sh
ShowHello.sh
chmod
运行脚本: ShowHello.sh
ShowHello.sh
运行脚本:
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇————————————————cygwin
cygwin
cygwin
cygwin
cygwin简介简介简介简介简介简介简介简介
cygwin
cygwin
cygwin
linux程序程序!!
cygwin是一个在
平台上运行的linux
模拟环境,是cygnus
cygnus
公司开发的自由软件。它。它把把gccgcc、、gdbgdb、、gasgas等开发工具进行了改进,使
等开发工具进行了改进,使
win32 apiapi写了一个
unix系统系统
cygwin dlldll ) )连接到一起,
连接到一起,
windows平台上运行的工具集
,只要把这些工具的源代码和这个共享库((cygwin
unix主机上的交叉编译器来生成可以在
主机上的交叉编译器来生成可以在windows
的目标文件,开发者基于基于win32
linux模拟环境,是
写了一个unix
平台上运行的工具集 。。
软件下载:cygwin
win32的目标文件,开发者
windows下开发下开发linux
windowss平台上运行的
cygwin————在在windows
��cygwin
cygwin
是一个在window
solutions公司开发的自由软件
solutions
它们能够生成并解释win32
它们能够生成并解释
库的模拟层 ,只要把这些工具的源代码和这个共享库
库的模拟层
就可以使用
就可以使用unix
软件下载:
推荐下载:
软件安装:在安装的过程中可选择默认安装路径:
软件安装:
安装完后要修改
@echo off
@echo off
后面加上
启动批处理
启动批处理
文件需要启动
的官方网站::www.cygwin.com
www.cygwin.com
安装完后要修改cygwin
Unix文件系统模拟。
文件系统模拟。
推荐下载:http://
cygwin的官方网站
文件需要启动Unix
www.macraigor.com/full_gnu.htm
http://www.macraigor.com/full_gnu.htm
在安装的过程中可选择默认安装路径:c:\cygwin
c:\cygwin
cygwin目录下的
目录下的cygwin.bat
cygwin.bat文件文件,,在在
后面加上set CYGWIN=title
set CYGWIN=title ntea
ntea,这是因为
,这是因为Cygwin
Cygwin的的
2011-8-22
西安理工大学计算机科学与工程学院
综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇————————————————Linux
Linux
Linux
Linux
Linux黑洞黑洞黑洞黑洞黑洞黑洞黑洞黑洞
Linux
Linux
Linux
/dev/null
�� /dev/null
是一个虚设的设备,俗称
是一个虚设的设备,俗称
““Linux
Linux黑洞黑洞””,,任何对任何对 //devdev//null
null
的写入都会成功,但数据会消
的写入都会成功,但数据会消
失得无影无踪,没有任何反馈。
失得无影无踪,没有任何反馈。
所以经常把不想在屏幕显示的
所以经常把不想在屏幕显示的
信息全部送到 //devdev//null
null中,中,
信息全部送到
shell 脚本中用得比较多。
在在shell
脚本中用得比较多。
如:如:lsls ––l l > > /dev/null
/dev/null
还可以用来清空文件的内容:
�� 还可以用来清空文件的内容:
cat
cat /dev/null
/dev/null >> FileName
FileName
2011-8-22
西安理工大学计算机科学与工程学院