shell 入门教程

Squid

贡献于2012-10-09

字数:0 关键词: Linux

1 Software & ServicesDate: 20 Aug 2007 Beyond Technology shell入门教程 姚志军 东软信息学院.南海 2 Software & ServicesDate: 20 Aug 2007 学习目标 • 了解shell的产生与发展的过程 • 掌握shell环境变量的设置和使用 • 掌握bash的基本操作方式 • 掌握shell的输入输出 • 掌握简单的shell脚本编辑方法 3 Software & ServicesDate: 20 Aug 2007 参考书籍 • 无 • 参考网站 – shell入门基础必备 • http://linux.chinaunix.net/others/2005-02- 03/1082.shtml – linux常用命令之bash 入门指南 • http://linux.chinaitlab.com/command/525110.html 4 Software & ServicesDate: 20 Aug 2007 shell环境 • shell的产生与发展 • sinux shell • shell 变量 • Shell 环境配置文件 5 Software & ServicesDate: 20 Aug 2007 shell的产生与发展 • shell的作用 – 操作系统与用户进行交互操作的界面 – 提供脚本语言编程环境,方便用户自动批量处理大量的工 作任务 用户用户 命令命令 结果结果 操作系统操作系统 ShellShell 6 Software & ServicesDate: 20 Aug 2007 Shell的产生与发展(Cont.) • shell的种类 ‹sh - Bourne shell( Stephen Bourne,1979年) ‹csh or tcsh - C shell (BillJoy ,70年代末期) ‹korn - Korn shell (DavidKorn,80年代中期 ) ‹bash - GNU Bourne-Again Shell 7 Software & ServicesDate: 20 Aug 2007 Linux Shell • 支持Bourne shell、C shell和Korn shell • 标准shell为bash(GNU Bourne-Again Shell) – Bourne shell向下兼容 – 作业控制(job control) – 别名功能(aliases) – 命令历史(command history) – 命令行编辑功能 – 自定义功能键 – 提供更丰富的变量类型、命令与控制结构 8 Software & ServicesDate: 20 Aug 2007 Shell 变量 • 语法 – 变量名由下划线(_)、字母、数字组成,但变量名不能 以数字开头,大小写敏感 – 变量值为一个字符串 – 使用“$”符号获得变量的值 • 类型 – 本地变量 – 环境变量 – 位置参数变量 – 预定义变量 9 Software & ServicesDate: 20 Aug 2007 本地变量 • 设置变量: • 引用变量: • 清除变量: • 查看变量: • 变量值置换 变量名=变量值变量名=变量值变量名=变量值 变量=${参数变量:-word}变量变量=${=${参数变量参数变量::--word}word} $变量名$$变量名变量名 unset 变量名unset unset 变量名变量名 setsetset 变量=${参数变量:=word}变量变量=${=${参数变量参数变量:=word}:=word} 变量=${参数变量:?word}变量变量=${=${参数变量参数变量:?word}:?word} 变量=${参数变量:+word}变量变量=${=${参数变量参数变量:+word}:+word} 10 Software & ServicesDate: 20 Aug 2007 环境变量 • 设置环境变量: • 引用环境变量 : • 常用环境变量 – HOME – PATH – TERM – UID – PWD – PS1 $变量名$$变量名变量名 export 变量名=变量值export export 变量名=变量值变量名=变量值 11 Software & ServicesDate: 20 Aug 2007 特殊的预定义变量 $#:存储shell程序中命令行参数的个数 $?:存储shell中上一个程序执行的返回值(0表 示命 令执行成 功,非0有问题) $0:存储shell程序自己的名称 $[1-n]:存储第[1-n]个命令行参数 $*:存储shell脚本的所有参数(不包含$0) $$:存储shell脚本的进程号(pid) $!:存储上一个后台执行命令的进程号(pid) 12 Software & ServicesDate: 20 Aug 2007 LINUX系统 Shell 环境配置文件 • /etc/profile、/etc/profile.d/* • ~/.bash_profile、~/.bashrc、 /etc/bashrc /etc/profile、/etc/profile.d/* 用户1 ~/.bash_profile ~/.bashrc 用户2 ~/.bash_profile ~/.bashrc 用户3 ~/.bash_profile ~/.bashrc … 13 Software & ServicesDate: 20 Aug 2007 bash常用功能 • 通配符 • 命令自动展开 • 命令历史与命令重复 14 Software & ServicesDate: 20 Aug 2007 通配符 • * 通配符:匹配任意多个任意字符 • ?通配符:匹配任意一个字符 判断下列使用了通配符的字符串的能否 匹配“reportfiles”字符串? * r*f* *report*files *report\*files [opq]*report* ? r?f? ?eportfiles ?eport*? [opq]?report* √ ╳ √ √ √ ╳ ╳ ╳ √ √ 15 Software & ServicesDate: 20 Aug 2007 命令自动展开 • 键 – PATH环境变量 – 目录路径展开 16 Software & ServicesDate: 20 Aug 2007 命令历史与命令重复 • history – 光标上下移动键(最常用) 17 Software & ServicesDate: 20 Aug 2007 管道与重定向 • 标准输入/输出 • 重定向 • 管道 18 Software & ServicesDate: 20 Aug 2007 标准输入/输出 • 每个Linux进程都会打开3个文件用来处理程序的输入输出工 作 文件文件 文件描述符文件描述符 默认设备默认设备 输入文件:标准输入 0 键盘 输出文件:标准输出 1 屏幕 错误输出文件:标准错误输出 2 屏幕 19 Software & ServicesDate: 20 Aug 2007 重定向 • < 输入重定向 – 语法: – 示例: • > 输出重定向 – 语法: – 示例: • 2> 错误输出重定向 – 语法: – 示例: 命令 < 输入文件命令命令 < < 输入文件输入文件 [root@pc root]# cat < inputfile[[root@pcroot@pc root]# cat < root]# cat < inputfileinputfile 命令 > 输出文件命令命令 > > 输出文件输出文件 [root@pc root]# ls > outputfile[[root@pcroot@pc root]# root]# lsls > > outputfileoutputfile 命令 2>errorfile命令命令 2>2>errorfileerrorfile [root@pc root]# ls 2 > inputfile[[root@pcroot@pc root]# root]# lsls 2 > 2 > inputfileinputfile 20 Software & ServicesDate: 20 Aug 2007 重定向(Cont.) • 常用文件重定向命令 重定向命令重定向命令 意义意义 command > filename 把标准输出重定向到一个文件中 command >> filename 把标准输出追加重定向到一个文件中 command 1> fielname 把标准输出重定向到一个文件中 command 2 > filename 把标准错误输出重定向到一个文件中 command < filename > filename2 以filename为标准输入,filename2为标准输出 command < filename 把filename作为命令的标准输入 command << delimiter 从标准输入读入数据,直到遇到delimiter为止 21 Software & ServicesDate: 20 Aug 2007 lsls命令的输出命令的输出 管道 • | 管道操作符 – 语法 – 示例 lsls grepgrep .txt.txt 管道管道 command1 | command2command1 | command2command1 | command2 [root@pc root]# ls | grep .txt[[root@pcroot@pc root]# root]# lsls | | grepgrep .txt.txt 22 Software & ServicesDate: 20 Aug 2007 Shell脚本 • 脚本概念 • 脚本运行 • 基本脚本编程 23 Software & ServicesDate: 20 Aug 2007 脚本概念 • 无需编译,解释执行 • 文本文件形式存在 • 强大的正则表达式操作 • 运行速度慢 • 数据类型支持少 • 用于系统管理和文件操作 24 Software & ServicesDate: 20 Aug 2007 脚本运行 • 编写脚本程序 • 改变脚本程序文件的权限为可执行 • 运行脚本程序 – # ./脚本程序 (最常用) – # bash 脚本程序 – # . ./脚本程序 – # exec 脚本程序 25 Software & ServicesDate: 20 Aug 2007 脚本运行 1. 编写完脚本,假设文件名为filename 2. chmod +x filename 3. 输入 ./filename 来执行您的脚本 26 Software & ServicesDate: 20 Aug 2007 基本脚本编程 • 变量类型(Shell 变量一节) • 条件测试 • 流程控制 • 函数 27 Software & ServicesDate: 20 Aug 2007 建立一个脚本 • 使用任何一种编辑工具来编辑器来编写shell程序 • 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/bash • 该行说明该文件是一个 BASH 程序,需要由 /bin 目 录下的 bash 程序来解释执行 • 在 BASH 程序中从“#”号(注意:后面紧接着是“!”号的除 外)开始到行尾的部分均被看作是程序的注释 28 Software & ServicesDate: 20 Aug 2007 shell脚本的例子 #!/bin/bash # This is a very simple example echo Hello World 29 Software & ServicesDate: 20 Aug 2007 shell脚本的例子 #!/bin/bash echo "######################################" echo " Hellow! Wellcome" echo "######################################" echo " Hellow!\n Wellcome" echo "######################################" echo -e " Hellow!\nYou Are Wellcome" echo "######################################“ echo -e " Hellow!\tYou Are Wellcome" echo "######################################" 30 Software & ServicesDate: 20 Aug 2007 shell脚本中的变量 #!/bin/bash #对变量赋值: a="hello world“ # 现在打印变量a的内容: echo "A is:“ echo $a 31 Software & ServicesDate: 20 Aug 2007 shell脚本中的变量 有时候变量名很容易与其他文字混淆,比如: #!/bin/bash num=2 echo "this is the $numnd“ 可以使用花括号{ }来告诉shell我们要打印的是num变量 #!/bin/bash num=2 echo "this is the ${num}nd" 32 Software & ServicesDate: 20 Aug 2007 条件测试 • 使用test命令 – 语法: • 使用括号[ ] – 语法: • 条件表达式的值为真返回零,为假时返回非零值 test 条件表达式test test 条件表达式条件表达式 [ 条件表达式 ][ [ 条件表达式条件表达式 ]] 33 Software & ServicesDate: 20 Aug 2007 • if then else语句 – 语法 if [ 条件语句1 ] then 命令 elif [ 条件语句2 ] then 命令 else 命令 fi 流程控制 34 Software & ServicesDate: 20 Aug 2007 流程控制(Cont.) • for循环 – 语法 for 变量名 in 列表 do 命令 done for for 变量名变量名 in in 列表列表 dodo 命令命令 donedone 35 Software & ServicesDate: 20 Aug 2007 流程控制(Cont.) • until循环 – 语法 until 条件 do 命令 done until until 条件条件 dodo 命令命令 donedone 36 Software & ServicesDate: 20 Aug 2007 流程控制(Cont.) • while循环 – 语法 while 条件 do 命令 done while while 条件条件 dodo 命令命令 donedone 37 Software & ServicesDate: 20 Aug 2007 流程控制(Cont.)• case语句 – 语法 case 值 in 模式1) 命令1;; 模式2) 命令2;; 模式3) 命令3;; esac case case 值值 inin 模式模式1)1) 命令命令1;;1;; 模式模式2)2) 命令命令2;;2;; 模式模式3)3) 命令命令3;;3;; esacesac 38 Software & ServicesDate: 20 Aug 2007 函数 • 函数定义 • 函数调用 • 函数导出 函数名( ) { 命令 } 函数名函数名( )( ) {{ 命令命令 }} 39 Software & ServicesDate: 20 Aug 2007 本章总结 • shell是Linux系统与用户之间的交互界面,用户向shell提交任 务,shell向系统内核转交任务,并管理相关工作,执行完成后 shell取回工作结果,通过界面返回给用户。shell还提供编程语 言,接受用户关于批处理任务的提交 • 第一个重要的shell是Stephen Bourneshell于1979年底提出的 Bourne shell,另外两个重要的shell是Kron shell 和 C shell。 Linux支持3种类型的shell,默认的为Bourne shell的变体版本 GNU bash • shell支持4种类型的变量(本地变量、环境变量、参数变量及预 定义变量) 40 Software & ServicesDate: 20 Aug 2007 本章总结(Cont.) • shell的通配符包括“*”和“? ”,分别匹配任意多的字符和一个任意 字符。bash提供了命令行自动展开和历史命令管理操作的功能 • shell打开0、1、2号文件描述符文件,并对应为键盘和屏幕,构 成shell的标准输入输出,大多数命令的输入输出通过标准输入 输出进行。shell提供了输入输出重定向和管道,把标准的输入 输出方向改变为其它的文件或命令 • shell提供了数据变量、参数传递、条件测试、流程控制、数据 输入和输出、函数等丰富的程序控制功能,用户可以通过shell 语言编码实现系统管理任务的批处理和环境设置 Neusoft Co., Ltd. 谢谢!

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档