1 / 110

UNIX 系统编辑器的概述

vi 全屏幕编辑器的使用. UNIX 系统编辑器的概述. vi 的启动与退出. 光标与窗口的移动. 正文的增加、修改与删除. 重复和 取消操作. 检索和替换. 其他命令. 一、 UNIX 系统编辑器的概述. ed :UNIX 系统中原始的行编辑器。 ex : 行编辑器,是 ed 编辑器的扩充。 vi : 全屏幕编辑器,为 UNIX 系统的主 要编辑器,它也是 ed 的超集。 emacs: 全屏幕编辑器,不是 UNIX 系统 版本4的组成部分,是独立的编 辑程序。. 1.1 vi 的应用方式.

Download Presentation

UNIX 系统编辑器的概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. vi 全屏幕编辑器的使用 UNIX系统编辑器的概述 vi的启动与退出 光标与窗口的移动 正文的增加、修改与删除 重复和取消操作 检索和替换 其他命令

  2. 一、UNIX系统编辑器的概述 • ed :UNIX系统中原始的行编辑器。 • ex :行编辑器,是 ed 编辑器的扩充。 • vi :全屏幕编辑器,为UNIX系统的主 要编辑器,它也是 ed 的超集。 • emacs:全屏幕编辑器,不是UNIX系统 版本4的组成部分,是独立的编 辑程序。

  3. 1.1 vi 的应用方式 • vi的名字取自于visual。 • 有两种操作方式:命令方式和输入方式 • 命令方式下输入的大、小写是敏感的。 vi ESC 输入方式 命令方式 a, A, i, I, o, O 输入文本 编辑文本

  4. 二、vi的启动与退出 1、vi 的启动 输入vi命令后,便进入全屏幕编辑环境,此时 的状态为命令方式。 ① vi 光标定在该缓冲区第一行第一列位置 ② vi example 光标定在缓冲区第一行第一列位置 ③vi + example 光标定在文件最后一行第一列位置 ④ vi +N example 光标定位在文件第N行第一列的 位置(N:为数字) ⑤vi +/string example 光标定位在文件中 第一次出现字符串string的行首位置

  5. 二、vi的启动与退出 (续) 2、vi 的退出 建议 首先键入“ESC”键,以确保当前vi的 状态为命令方式,输入下列命令,退出vi。 ①:w将编辑缓冲区的内容写入文件 :q退出vi ②:wq将上面两步操作可以合成一步来完成。 ③ :x功能同上。 ④ :q 退出vi,此时的正文没有被更改过。 ⑤ :q! 强行退出vi,使更新内容不写回文件。

  6. 三、光标在窗口中移动 注释 字 :是由空格或标点符号分开的字母序列。 句子 :是以句号(.)、问号(?)或感叹号 (!)结束的字符序列,句子之间由两个 空格或一个回车分开。 段落 :一个段落前后各有一个或多个空白行。

  7. 三、光标在窗口中移动(续) 1、字符及行间移动 命 令 结果 —————————— —————————— ↑ 或 k向上移一行 ↓ 或 j向下移一行 ← 或 h或 退格键 左移一个字符 → 或 l或 空格 右移一个字符 o 移到当前行的开始 $ 移到当前行的结尾 + 或 回车符 移到下一行的开始 - 移到上一行的开始

  8. 三、光标在窗口中移动 (续) 2、其它单位的移动 命 令 结果 ——————— —---------————————— w 移到下一个字或标点符号 W移到下一个字 e移到这个字或标点符号的结束 E移到字的下一结尾 b回到字或标点符号的开始 B移回到字的开始 ) 移到下一个句子的开始 ( 移到这个句子的开始 } 移到下一段落的开始 { 移到这一段落的上一开始

  9. 四、在缓冲区中移动窗口 命令 结果 ——-——— --—------————————— CTRL-F 向前(上)移动一满屏幕 CTRL-D 向前(上)移动半屏幕 CTRL-B 向后(下)移动一满屏幕 CTRL-U 向后(下)移动半屏幕 H    光标移动到屏幕顶部 M     光标移动到屏幕中间 L     光标移动到屏幕底部 注意 可在这些命令前加入数字n作为前缀,使相应命 令执行n次。但nG使光标定位在第n行。

  10. 五、光标在正文中的移动 命令 结果 ——-——— --—------————————— G 光标移动到文件的尾部 nG 光标移动到文件的第n行 : 0 光标移动到文件的第1行 : 1 光标移动到文件的第1行 : n 光标移动到文件的第n行 : $ 光标移动到文件的尾部 /string 光标向前移动到string首 ?string 光标向后移动到string首

  11. 六、增加正本 命令 结果 ——-——— ----------—------————————— a 将输入文本插入在光标之后 A 将输入文本插入在当前行的行尾 i 将输入文本插入在光标之前 I 将输入文本插入在当前行的开始 o 将在当前行的下一行处打开一新行 O 将在当前行的上一行处打开一新行 注意ESC:使编辑状态从输入方式切换到命令方式

  12. 七、修改正本 命令 结果 ——-— ---------------------—------————————— r 替换当前字符,不需按ESC。 R 从当前字符开始进行替换,至ESC键为止。 nC 对从当前字符开始的n行字符进行替换, 直至键入ESC键为止。 nc$ 同 nC。 ncw 对当前字符开始的n个字进行替换操作, 直至键入ESC键为止。 注意 n 为数字,为 1 时可省略。

  13. 七、修改正本 (续) 命令 结果 ——-— ------------------—------————————— ncc 对从当前字符开始的n行字符进行替换, 直至键入ESC键为止。 ns 替换从当前字符开始的n个字符,直至键入 ESC键为止。 nS 对从当前行开始的n行字符,进行替换, 直至键入ESC键为止。 J将当前行和下一行连接起来。 注意 n 为数字,为 1 时可省略。

  14. 八、删除正本 1. x 与 X 命令的使用 命令 结果 ——-— --------------—------————————— x 删除当前字符。 nx 删除从当前字符开始的n个字符。 X 删除当前字符的前一个字符。 nX 删除当前字符的前n个字符。 注意 n 为数字,为 1 时可省略。

  15. 八、删除正本 (续) 2. d与D命令的使用 用来将指定范围内文本删除,并存入缓冲区。 命令 结果 ——-— --------------—------————————— ndw删除以当前字开始的n个字。 nd$ 删除以当前字符开始的n行字符。 ndd 删除从当前行开始的n行。 D与d$同义。 d) 删除到下一句的开始。 d}删除到下一段的开始。 d 回车 删除两行。

  16. 九、移动与复制正本 1. m命令的使用 将指定范围的文本移动到指定位置。格式如下: <起始行号>,<结束行号> m <目标行号> 例:: 3 , 14 m 56 : 7 , 52 m 0 2. t命令的使用 将指定范围的文本复制到指定位置。格式如下: <起始行号>,<结束行号> t <目标行号> 例: 1 , 14 t 60 7 , 52 t $

  17. 九、移动与复制正本 (续) 3. y与Y命令的使用 将指定范围的文本复制到缓冲区,但不删除其内容。 命令 结果 ——-— --------------—------————————— nyw复制从当前字符开始的n个字; ny$ 复制从当前字符开始的n行字符; Y与y$同义; y) 复制到下一句的开始; y}复制到下一段的开始; nyy 复制从当前行开始的n行; y 回车 复制两行;

  18. 十、重复和取消操作 命令 结果 ——-— ----------------------—------————————— . 重复上一次所执行的命令。 u 取消最后一次所做的修改或删除。 U 取消此次到当前行来做的所有修改。 p恢复当前缓冲区中内容。如缓冲区中内容是整 行信息,则放到当前行下面的一个新行;否则 将缓冲区的内容放到光标位置右边。 P 同p操作。恢复整行信息时,放到当前行上面的 一个新行;否则,放到光标位置左边。 :e! 重新编辑。废弃对这次文件所做的全部修改, 重新从盘中读入该文件,并开始编辑。

  19. 十一、检索和替换 命令 结果 ——-— ----------------------—------————————— /string从当前位置向后检索字符串string,并将光标 定位在该串起始位置(向后循环检 索 )。 ?string从当前位置向前检索字符串string,并将光标 定位在该串起始位置( 向前循环检索)。 // 重复上一条检索命令,但方向是向后检索。 ?? 重复上一条检索命令,但方向是向前检索。 n 重复上一条检索命令,而不管其检索方向。 (即检索方向不变)。 N 重复上一条检索命令, 但检索方向改向。 :g/string 检索字符串string,光标定位在第一次检索到 的string所在行的行首。

  20. 十一、检索和替换 (续) 1.字符串替换命令格式1 :[addr]s/s1/s2/ [option] [addr] 表示检索范围,省略时表示当前行。 如: “1,20” :表示从第1行到20行; “%” :表示整个文件,同“1,$”; “. ,$”:从当前行到文件尾; s 为替换命令;s1 要被替换的串;s2为替换的串; option :  g 表示全局替换;  c 进行确认 ;  p 替代结果逐行显示(Ctrl + L恢复屏幕);  省略时仅对每行第一个匹配串进行替换; 2. 字符串替换命令格式2 :g/s1/s//s2/ [option]

  21. 十二、其他命令 命令 结果 ------—--—-— --------------—------———————— :set number 显示行号。 :set nonumber 不显示行号。 :set all 显示vi各选项的设置情况。 :f 显示当前文件及工作缓冲区状况。 :r filename 将名为filename的文件内容插入到 缓冲区当前行的下面。 :r ! cmd 执行命令cmd,并将结果插入到缓冲 区当前行的下面。

  22. UNIX Shell程序设计 UNIX Shell概述 Shell启动及其命令 Shell命令的集成 Shell 变量 Shell的控制结构 Shell的运行环境

  23. 第一章 UNIX Shell概述 • 什么是 Shell • Shell的双重特性 • Shell程序语言的特点 • Shell的版本 • Shell版本的选择

  24. 1.1 什么是 Shell UNIX 系统层次结构图

  25. 1.1 什么是 Shell (续) Shell就是UNIX提供用户的使用界面 。 Shell处在内核与外层应用程序之间,起着 协调用户与系统的一致性、在用户与系统 之间进行交互的作用,即 Shell为用户提供 了输入命令和参数并可得到命令执行结果 的环境。

  26. 1.2 Shell的双重特性  命令解释程序(命令解释器) Shell解释用户输入的命令行,提交系统内核 处理,并将结果返回给用户; Shell与UNIX命令一样都是实用程序,但有区 别。一旦用户注册到系统后, Shell 就被系统装 入内存,并一直运行到用户退出系统之止;而一 般命令仅当被调用时,才由系统装入内存执行。  程序设计语言 Shell本身也是一种可编程的程序设计语言。

  27. 1.3 Shell程序语言的特点 Shell允许通过编程来完成复杂的功能处理, 但其作为语言与高级语言比较具有不同的特点: Shell是解释性的,多数高级语言是编译性的; Shell语言与高级语言处理的对象不同; Shell与系统有密切的关系; Shell易编写、调试、灵活性较强,但速度低; Shell作为命令级语言,命令组合功能很强。

  28. 1.4 Shell的版本 常用Shell在交互式使用方面的比较 Shell有两种主要语法类型:Bourne和C,彼此不兼容, Bourne家族:sh ksh bash psh zsh C 家族:csh tcsh 其中:bash和 zsh在不同程度上支持 csh 的语法。

  29. 1.5 Shell版本的选择 选择Shell版本应考虑的因素: Bourne Shell在任何一个UNIX系统平台上都 存在,因此又成为标准Shell; Bourne Shell家族有更丰富的程序语言,而 C Shell家族有简单的程序接口; Shell各类变种功能越来越强大,但学习和使 用也越难,因此可依据使用者编程经验来选择; Shell编程的脚本是个人使用还是公用,即要 考虑移植性问题。

  30. 第二章 Shell启动及其命令 • Shell的启动 • 命令的格式 • 命令的查询 • Shell常用的命令 • Shell的内部命令

  31. 2.1 Shell的启动  登录Shell的启动 在/etc/passwd文件中指定要启动的Shell。 root : x : 0 : 1 : super user : / : / sbin / sh feng : x : 201 : starf : / home : / bin / csh  命令行状态下的交互Shell启动 在系统中可能有多种版本的Shell存在,可通 过相应的命令来启动,如:csh ksh sh

  32. 2.2 命令格式 UNIX系统命令的一般格式为: command [options] [arguments] [filenames] options或switches(常带有一个连字号“-”) 字符标志位,以此扩展命令的特性或功能; arguments 表示命令的自变量(参数); filenames 表示文件或目录的名字。

  33. 2.3 命令的查询 环境变量PATH的构成决定了寻找Shell命令和 其它程序的途径,是影响Shell程序效率的主要因 素之一。PATH变量设置要考虑以下几点:  常用目录放在PATH变量中,使用频度高的目 录排在前面;  PATH应尽可能地短,不要出现重复的目录;  尽量避免查询大目录,如需设置,将其路径 放在PATH路径的最后位置。 例: PATH=/bin:/usr/bin:/etc:.

  34. 2.4 Shell常用的命令 UNIX有丰富的Shell命令,大致划分为以下几 类:目录操作与管理、文件操作与管理命令、 系统管理与维护、用户管理与维护、 系统状态、 进程管理、通讯命令 、 其它命令。例: awk bc cat chmod chown cp cron date df diff du echo expr file find grep init kill ln login ls mail make man mkdir mkfs mount mv nohup pg pwd ps pr pwd read rm sed sort sync tail tee wc

  35. 2.5 Shell的内部命令 出于运行效率的考虑,将一些命令构造在Shell 的内部。这些命令比非内部命令执行速度快。 Shell常用的内部命令有: 用于结构分支及控制: if else for case while until continue break 其它 : # read cd echo eval exec exit export readonly set shift test time trap unset umask wait

  36. 第三章 Shell命令的集成 • 元字符(通配符)和文件名生成 • 管道和命令表 • 命令组合 • 命令替换 • 输入输出重定向(改向)

  37. 3.1 元字符和文件名生成  UNIX元字符(通配符)的定义 *匹配任何字符串,包括空字符串; ? 匹配任何单个字符; [ … , - , ! ]按照范围“-”、列表“...”或不匹配 “!”等形式匹配指定的字符; \ 转意符,使元字符失去其特殊的含义。 例:[a-d,x,y] 匹配字符a、b、c、d、x、y; z* 匹配以字符z开始的任何字符串; x?y 匹配以x开始、以y结束、中间为任何 单个字 符的字符串; [!Z]匹配不为Z的单个字符。

  38. 3.1 元字符和文件名生成(续)  元字符作为文件扩展名的使用 例:[a-f]*匹配字符a到字符f开头的文件名; abc d2 e3.c f.dat *z 匹配以字符z结尾的任何字符串; win.z core.zz a-c_5z rc?.d 匹配以rc开始、以.d结束、中间为任 何单个字符的文件名; rc0.d rc2.d rcS.d *[!o]匹配不以o结尾的文件名;

  39. 3.2 管道和命令表  管道的概念 管道:是一个命令的标准输出与另一个命令 的标准输入之间的连接,不经过任何中间文件; 管道线:是由管道操作符分隔的一个命令序 列,最简单的管道线是一个简单命令; 管道操作符:用符号“|”表示。 例: who | wc -l ps -ef | grep ftp ls -l

  40. 3.2 管道和命令表(续1)  命令表的概念 命令表:一串管道线(命令)构成了一个命令表,最简 单的命令表是一个管道线(即一个简单命令)。 管道线(命令)分隔符:分隔命令表元素,确定管道线 执行的条件,含义如下: ;或 换行符 :表示按顺序执行管道线; && : 表示根据条件(true),执行其后面的管道线; | | : 表示根据条件(false),执行其后面的管道线; & : 表示前面的管道线在后台(异步)执行。

  41. 3.2 管道和命令表(续2) 例1:四个管道线构成一个命令表 ls -l /bin /usr/bin who | wc -l a | b | c | d ps 例2:与例1等价 ls -l /bin /usr/bin ;who | wc -l ;a | b | c | d;ps 例3:sys_account & 例4:查询指定的文件是否存在,给出相应信息 test -f $1 && echo “$1 exists” test -f $1 | | echo “$1 not exists”

  42. 3.3 命令组合 命令组合有两种形式:  { 命令表 } 由当前Shell来执行命令表。 例:{ cd mydoc ;rm junk;}  ( 命令表 ) 当前Shell派生一个子Shell进程来执行命令表。 例:( cd mydoc ;rm junk;)

  43. 3.4 命令替换 用命令的执行结果来替换这个字符串本身。 注意 反撇号与单引号的区别。 例1:#now=‘date’  单引号 #echo $now date # now=`date`  单撇号 #echo $now 1999年 12月 8日 星期三 19时 51分 56秒 CST 例2: #count=10 # count=`expr $count + 1` # echo $count 11

  44. 3.5 输入、输出重定向  使用标准改向符进行重定向(改向) < 输入改向 << 输入改向(here 文件) > 输出改向 >> 追加输出改向  使用标准文件描述字进行重定向(改向) 在UNIX系统中,使用了文件描述字来定义输入、输出的标准文件,其中: 0:标准输入 1:标准输出 2:标准错误输出

  45. 3.5 输入、输出重定向(续1)  标准输入的改向(< 、 <<)  command < file  command << End Of Marker > : : > End Of Marker 例1:sort < myfile 例2:cat << !eof > Hellow ! > ok !! >!eof

  46. 3.5 输入、输出重定向(续2)  标准输出的改向(>、 >>)  command > file command >> file 例1:date > myfile 例2:ls -l >> myfile 例3:cat file* > myfile 例4:ps -ef | grep ftp > myfile

  47. 3.5 输入、输出重定向 ( 续3 )  标准错误输出的改向(>、 >>)  command 2 >file  command 2 >>file 例1:将错误输出改向到err_file文件。 myprog 2 > err_file 例2:将标准输出和错误输出改向out文件。 myprog >out 2 >>out (两种方法等价) myprog >out 2 >>&1 (改向处理从左至右) 例3:错误输出被显示,标准输出改向out文件。myprog 2 >&1 >> out

  48. 第四章 Shell变量 • Shell变量 • 用户自定义变量 • 位置变量 • 环境变量 • 预定义的特殊变量 • 变量替换 • 特殊字符的引用

  49. 4.1 Shell变量  Shell实际上是基于字符串的程序设计语言, 也具有变量。变量的名字必须以字母或下划线 开头,可以包括字母、数字和下划线。  Shell变量能够而且只能存储正文字符串, 即它只有一种类型的变量——串变量。  从赋值的形式上看,则可以分成四种类型 的变量或变量形式。

  50. 4.2 用户自定义变量 语法格式:name=string 赋值号“=”两边不允许有空白符; nodehost="beijing.UUCP ” path=/bin:/usr/bin:/etc/bin count=10 允许多个赋值操作,按从右到左的顺序进行; #A=$B B=abc C="OK" # echo $A $B $C abc abc OK 当引用一个未设置的变量时,其隐含值为空; #echo "$mail is path of mailbox” is path of mailbox

More Related