伤城文章网 > 计算机硬件及网络 > 第04章 Unix系统的Shell

第04章 Unix系统的Shell


第四章 UNIX系统的 Shell

shell 的基本概念
Shell是UNIX提供的与用户交互的接口,一般系统会 提供多种shell,如:Bourne shell , c_shell , kornshell等。 1)基本工作内容
命令解释 文件名取代

程序设计语言 Shell 系统环境设置

输入输出重定向

建立连通管道

2)可以选择使用不同的shell
a) 不同shell 功能侧重点不同
?K-shell B-shell有程序设计优势 ?c-shell在命令使用中有优势,符合C编程习惯 ?Bash、TC和Z shell是新shell版本,功能多

b) 如何改变shell环境
?echo $shell ------查看当前shell ?shell程序存放位置在命令行输入shell程序名, 输入 exit返回原注册shell.
Shell名 Rc Bourne shell C shell Z shell Korn shell TC shell 位置 /usr/bin/rc /usr/bin/sh /usr/bin/csh /usr/local/bin/zsh /usr/bin/ksh /usr/bin/tcsh 程序(命令)名 rc sh csh zsh Ksh tcsh

3) UNIX系统标准流
?数据流的概念
将命令处理中的流看成“命令输入流”,“命令输出 流”。

?Unix标准流的概念:
文件描述 0 1 2 标准定义文件 标准输入stdin 标准输出stdout 标准错误stderr 实际对象 键盘 显示器 错误信息

Shell命令解释功能
Shell命令解释功能
1)Shell 是Unix的命令解释程序,其解释执行命令的过 程如下:
向标准输出文件中输出提示符

从标准输入文件中接收信息完成 读、分析命令的过程

转向执行相应命令或程序

一条命令结束

2)shell 可解释Unix特殊命令:
a) 输入输出重定向 用> < >>等符号改变标准流的方向
% ls-l >dir1 % pwd>dir1 % date >>dir1

或输入输出重定向结合使用:
% prog< infile>outfile

b) 错误流重定向
通常标准输出和错误输出流定向到显示器上,也可对其 进行修改,不同的shell修改方法不同.

C shell: % cc abc.c>log % cc abc>& log
K-shell: $ cc abc.c2>&1 log
是用指明描述符的方式进行定向

c)管道线的处理
管道线命令体现了一种工作的思想——即将一个程序 (或命令)的输出作为另一程序(命令)的输入。

例: % ls–l > tempfile % wc-l tempfile % rmtempfile 用下面命令替换: % ls-l | wc-l 管道线可看成是输入输出重定向的组合方式

管道线还可完成更为复杂的处理,如:
?逻辑“或”:% write zhang <letter || mail zhang < letter ?逻辑“与”:% mail zhang < letter && rmletter

在k sheel及新版shell中有tee命令,完成三通 管的作用:
$ ps-ef| tee program.ps

d) 后台进程管理
% cc prgm.c&

e)实现滤波器功能 滤波功能可将输出结果的一部分内容保存下来:
? grep:在文件中搜索指定模式
命令选项: -c---显示匹配模式的行数 -i---匹配时忽略大小写 -l---仅显示有匹配模式的文件名 -n---显示匹配行的行号 -v---显示不匹配的行

例: $ grep UNIX textf1 $ grep -li UNIX text? 输出: text1: UNIX text2: Unixsystem text3: unix $ grep-vi UNIX text1

? sort :对各行按词组或字符分类排序。从第一 个字符比起,再比第二个、第三个……
选项: -b---忽略文件中的空格字符 -d---字符按字典顺序排序 -f---按大写字符排序,将小写改成大写 -n---按数字的数值大小排序 -o---排序输出存入文件 -r---排序按字典反序进行 例:$ sort -fn text1 $ sort -f -o text1o text1

f)命令解释中对特殊字符的解释
; 命令行结束,但不换行 & 后台命令 ( ) 生成一子进程完成括号内的命令 | ^ 管道线标志(早期Unix使用^) < > 输入输出重定向 $ shell变量的取值与访问 ! C shell 的历史纪录标志 \转义符,使紧跟其后的字符失去shell中的特殊含 义

用户工作环境设置
不同的shell有不同的工作环境模式。 UNIX启动时有环境设置文件支持,且shell 不同运行 的文件不同,它为用户建立独特的工作环境。
shell可提供维护环境变量服务: 环境变量----是当前执行环境可修改的量 分为两类:
1)10--30个环境变量与用户登录标识相关联,自动生 成、由shell维护、随用户注销而消失; 2)用户私有环境变量,有特殊目、给用户很大的设置自 由度。

1、Shell 的变量及变量使用
变量形式为:name = value 例:% SAMPLE=―hello world‖ 引用变量时:% echo $SAMPLE ?完成Shell初始化文件是/etc/profile---设置全局变量 ?对已设置好的变量可使用env命令查看。 ?保存局部变量的设置文件:
?B-shell: .profile ?K-shell:.kshrc/.profile ?C-shell:.cshrc, .login

这些文件是隐含文件,可用编辑工具进行编辑。

2、Kornshell环境变量的设置
.profile 实例 PATH=/usr/bin:/etc:/usr/sbin:/usr/lib:$HOME/bin:/sbin/bin MAILCHECK=1 MAILPATH=/uer/spool/mail/user/ MAIL=/usr/spool/mail/user MAILMSG=―you have new mail/a‖ export PATH MAIL MAILCHECK MAILPATH MAILMSG export TMOUT=200 export PS1=?$PWD>‘ export EDITOR=/usr/bin/vi if test -s ―$MAIL‖ then echo ―$MAILMSG‖ fi set -o ignoreeof set -o noclobber set -o vi alias dir=―ls-l‖ alias cls=―clear‖

k-shell环境变量定义
PATH—查询程序的路径 PS1—shell的主提示符 PS2—shell的第二提示符 MAILPATH—用户的电子邮箱路径 SHELL—使用shell程序的路径 PWD—当前工作目录 TMOUT—无命令输入退出等待时间(秒) TERM—终端类型 HOME—用户主目录 EDITOR—缺省的编辑器 FCEDIT—fci调用的编辑器 HISTFILE—历史命令文件名

开关选项变量(-o/+o):
VI—使用内部编辑器 verbose—执行命令前显示 privileged—不运行用户的初始文件 ignoreeof—忽略ctrl-d noclobber—重定向不覆盖文件内容 allexport—对定义的变量自动传递 bgnice—以低优先级运行后台作业

? .kshrc:存放其它环境变量,并由.profile提 交执行
? .logout:存放退出shell时应执行的操作变量, 也由.profile提交执行。在kornshell中 与.profile 执行有密切关系的还有两文件:

3、c shell 中环境变量的设置

在c shell中有两个文件共同完成环境变量的 设置:
? .cshrc—用户注册后,每用csh创建一个进程时, 系统执行一次此文件; ? .login—用户注册时执行一次,通常存放固定环 境变量

C shell 环境变量设置实例
.cshrc文件: set path=(.~/bin /usr/bin /usr/ucb/user2/ motif/bin) set prompt=―?whoami‘@‘hostname‘\!)‖ set filec set history=50 set savehist=50 umask 027 alias cp cp-I alias mv―mv-I‖ alias rm`rm-I` alias lsls-sf alias m more alias h history

.login文件:
Set ignoreeof setenv more ?-c‘ setenv PRINTER laser setenvEXINT ?set smainuts=4‘ stty-crterase stty-tabs sttycrt sttyerase ?^?‘ sttywerase?^h‘ sttykill ?^u‘


搜索更多“第04章 Unix系统的Shell”

网站地图

All rights reserved Powered by 伤城文章网 5xts.com

copyright ©right 2010-2021。
伤城文章网内容来自网络,如有侵犯请联系客服。zhit325@126.com