16
UNIX UNIX 的的的的的的 的的的的的的 的的的的的的的的的的 西 的的的的的的的的的的 西

UNIX 的应用与开发

Embed Size (px)

DESCRIPTION

UNIX 的应用与开发. 西安电子科技大学操作系统组. 课程安排 第一次课 Unix 基础知识 Unix 基本操作 Unix 编辑器的使用 Unix shell 编程(上) 第二次课 Unix shell 编程(下) Unix 中的 C 程序设计 讲解部分课后习题 教学目标 熟悉 Unix 的基本操作 能够进行简单的 Shell 编程 掌握 Unix 下的 C 程序设计方法. 课程安排 第一次课 Unix 基础知识 Unix 基本操作 Unix 编辑器的使用 Unix shell 编程(上) 第二次课 Unix shell 编程(下) - PowerPoint PPT Presentation

Citation preview

Page 1: UNIX 的应用与开发

UNIXUNIX 的应用与开发 的应用与开发

西安电子科技大学操作系统组西安电子科技大学操作系统组

Page 2: UNIX 的应用与开发

第 2页

课程安排课程安排 第一次课第一次课

UnixUnix 基础知识基础知识 UnixUnix 基本操作基本操作 UnixUnix 编辑器的使用编辑器的使用 Unix shellUnix shell 编程(上)编程(上)

第二次课第二次课 Unix shellUnix shell 编程(下)编程(下) UnixUnix 中的中的 CC 程序设计程序设计 讲解部分课后习题讲解部分课后习题

教学目标教学目标 熟悉熟悉 UnixUnix 的基本操作的基本操作 能够进行简单的能够进行简单的 ShellShell 编程编程 掌握掌握 UnixUnix 下的下的 CC 程序设计方法程序设计方法

Page 3: UNIX 的应用与开发

第 3页

课程安排课程安排 第一次课第一次课

UnixUnix 基础知识基础知识 UnixUnix 基本操作基本操作 UnixUnix 编辑器的使用编辑器的使用 Unix shellUnix shell 编程(上)编程(上)

第二次课第二次课 Unix shellUnix shell 编程(下)编程(下) UnixUnix 中的基本编程——中的基本编程—— CC 程序设计程序设计 讲解部分课后习题讲解部分课后习题

教学目标教学目标 熟悉熟悉 UnixUnix 的基本操作的基本操作 能够进行简单的能够进行简单的 ShellShell 编程编程 掌握掌握 UnixUnix 下的下的 CC 程序设计方法程序设计方法

Page 4: UNIX 的应用与开发

第 4页

一、一、 UNIXUNIX 基础知识基础知识

UnixUnix 的发展历程的发展历程诞生:诞生: 19691969 年,年, BellBell 实验室,实验室, Ken Thompson Ken Thompson

19731973 ,, ThompsomThompsom 用用 CC 语言重新编写了语言重新编写了 UnixUnix————UNIX V UNIX V

19751975 ,, Unix V6Unix V6 版版

19791979 ,, BSD UnixBSD Unix SCOSCO ,, SCO Xenix VSCO Xenix V

1988, 1988, 开放软件基金会开放软件基金会 , , OSF/1OSF/1ISOISO 和和 IECC, IECC, 成立了一个技术委员会成立了一个技术委员会 ·· ,, POSIX.1POSIX.1

1987, Minix, 1987, Minix, Andrew S. TanenbaumAndrew S. Tanenbaum

1991, Linux, Linus Torvalds1991, Linux, Linus Torvalds

Red hatRed hat Red flagRed flag

Linus TorvaldsLinus Torvalds

othersothers

……

Page 5: UNIX 的应用与开发

第 5页

一、一、 UNIXUNIX 基本知识基本知识

UnixUnix 系统的特点系统的特点

UNIXUNIX

多用户、多任多用户、多任务、分时操作务、分时操作系统系统

核心代码核心代码 9595 %使用%使用CC 语言编写,内核极语言编写,内核极小,容易编写、修改,小,容易编写、修改,可移植性好; 可移植性好;

可靠性强,可靠性强, 3030 多多年历史的证明年历史的证明 ;;

文件系统采用树型分文件系统采用树型分层结构,灵活,安全,层结构,灵活,安全,检索快捷 检索快捷 文件和设备的统一文件和设备的统一

处理,简化了系统处理,简化了系统设计,便于用户使设计,便于用户使用; 用;

外围系统实例丰富外围系统实例丰富

Page 6: UNIX 的应用与开发

第 6页

课程安排课程安排 第一次课第一次课

UnixUnix 基础知识基础知识 UnixUnix 基本操作基本操作 UnixUnix 编辑器的使用编辑器的使用 Unix shellUnix shell 编程(上)编程(上)

第二次课第二次课 Unix shellUnix shell 编程(下)编程(下) UnixUnix 中的基本编程——中的基本编程—— CC 程序设计程序设计 讲解部分课后习题讲解部分课后习题

教学目标教学目标 熟悉熟悉 UnixUnix 的基本操作的基本操作 能够进行简单的能够进行简单的 ShellShell 编程编程 掌握掌握 UnixUnix 下的下的 CC 程序设计方法程序设计方法

Page 7: UNIX 的应用与开发

第 7页

二、二、 UNIXUNIX 的基本操作的基本操作

回顾回顾 常用的基本命令常用的基本命令

lsls :列目录内容:列目录内容 mkdirmkdir :创建子目录:创建子目录 cdcd :改变工作目录;快速回到默认目录:改变工作目录;快速回到默认目录 pwdpwd :显示用户当前工作目录(绝对路径):显示用户当前工作目录(绝对路径) rmdir:rmdir: :删除一个空的子目录:删除一个空的子目录 cat:cat: :链接并显示文件:链接并显示文件 cpcp :复制文件:复制文件 rmrm :删除文件或目录:删除文件或目录 lnln :建立文件链接:建立文件链接 more/page more/page :分页显示命令:分页显示命令 manman :帮助命令:帮助命令

Page 8: UNIX 的应用与开发

第 8页

二、二、 UNIXUNIX 的基本操作的基本操作

补充几个命令补充几个命令 exit,logout,Ctrl+Dexit,logout,Ctrl+D :推出登录,相当于注销:推出登录,相当于注销 shutdown, haltshutdown, halt :关机:关机 useradduseradd :添加用户:添加用户 passwdpasswd :用户密码:用户密码 mountmount :安装文件系统:安装文件系统

mount –t vfat /dev/hda2 /mut/huangmount –t vfat /dev/hda2 /mut/huangunmoun /dev/hda2unmoun /dev/hda2unmount /mut/huang unmount /mut/huang

Page 9: UNIX 的应用与开发

第 9页

二、二、 UNIXUNIX 的基本操作的基本操作

chmodchmod 功能:改变文件存取方式功能:改变文件存取方式 格式:格式:

八进制表示:八进制表示: chmod 777 filenamechmod 777 filename 符号表示符号表示

u: u: 文件主文件主 gg :同组用户:同组用户oo :其它用户:其它用户 aa :所有用户:所有用户++ :添加许可:添加许可 -- :取消许可:取消许可== :设置许可:设置许可rr :读许可:读许可 ww : 写许可: 写许可xx :执行许可:执行许可例如:例如: chmod ug+w filenamechmod ug+w filename

chmod a+rx filenamechmod a+rx filename

Page 10: UNIX 的应用与开发

第 10页

三、三、 UnixUnix 编辑器的使用编辑器的使用

vivi (( visual editorvisual editor )编辑器的使用)编辑器的使用 是一种全屏编辑器,是是一种全屏编辑器,是 UnixUnix 中使用最广的编辑器之一中使用最广的编辑器之一 特点:特点:

有三种工作方式:有三种工作方式: 命令行方式:可以输入各种命令行方式:可以输入各种 vivi 命令,完成对文本的编辑、调整工命令,完成对文本的编辑、调整工

作,如移动光标,删除字符、单词、整行操作等,常用命令在课作,如移动光标,删除字符、单词、整行操作等,常用命令在课本本 P369P369 页,从键盘上输入的任何字符都被作为编辑命令来解释。页,从键盘上输入的任何字符都被作为编辑命令来解释。

插入编辑方式:在此状态下可以编辑文本,从键盘上输入的所有插入编辑方式:在此状态下可以编辑文本,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当作正文。字符都被插入到正在编辑的缓冲区中,被当作正文。

末行(底行)命令方式:实现操作命令,完成对文本的控制和管末行(底行)命令方式:实现操作命令,完成对文本的控制和管理,与命令行方式下的命令行程互补,主要用于对文件全文或者理,与命令行方式下的命令行程互补,主要用于对文件全文或者文件本身进行操作,如读写文件,查找文件本身进行操作,如读写文件,查找 //替换字符串,设置编辑替换字符串,设置编辑器参数等,常见命令见器参数等,常见命令见 P371P371

Page 11: UNIX 的应用与开发

第 11页

三、三、 UnixUnix 编辑器的使用编辑器的使用

使用使用 ViVi 编辑器的基本步骤编辑器的基本步骤

1.1. 进入进入 vi vivi vi vi filename vi filename

2.2. 到输入模式 按 到输入模式 按 a a 或者 或者 ii 键进入编辑模式键进入编辑模式3.3. 输入文本 将文本键入缓冲区输入文本 将文本键入缓冲区4.4. 到命令行模式 按到命令行模式 按 <Esc><Esc>

5.5. 进入底行命令模式 按 进入底行命令模式 按 : / ?: / ?

6.6. 保存缓冲区到文件 键入保存缓冲区到文件 键入 :w file :w file 或者 或者 ww

7.7. 退出退出 vi vi 键入键入 :q:q

Page 12: UNIX 的应用与开发

第 12页

三、三、 UnixUnix 编辑器的使用编辑器的使用

使用注意事项使用注意事项 命令行模式是其它模式进行切换的枢纽:命令行模式是其它模式进行切换的枢纽:

在在 vivi 中可以直接执行中可以直接执行 ShellShell 命令:在底行命令状态键入命令:在底行命令状态键入shsh 或或 !sh!sh即可即可

命令行模式命令行模式 底行命令模式底行命令模式编辑模式编辑模式ESC ESC

a,i : / ?

Page 13: UNIX 的应用与开发

第 13页

五、五、 UnixUnix 中的中的 CC 程序设计程序设计

编译环境编译环境 GCCGCC

GNU C Compiler, GNU C Compiler, 是是 Unix/LinuxUnix/Linux 下最好用的编译器之一,非常下最好用的编译器之一,非常稳定,执行效率要比其它的编译器高稳定,执行效率要比其它的编译器高 2020 %-%- 3030 %,大部分的%,大部分的自由软件都是由它编译的。自由软件都是由它编译的。

GccGcc 能自动将能自动将 CC 或者或者 C++C++ 文件编译成目标文件,然后连接成文件编译成目标文件,然后连接成为可执行文件,如果没有给出可执行文件的名称,则为可执行文件,如果没有给出可执行文件的名称,则 gccgcc 会自会自动生成一个名为动生成一个名为 a.outa.out 的文件。的文件。

GccGcc 是通过文件后缀来区分文件类别的,遵循如下约定:是通过文件后缀来区分文件类别的,遵循如下约定: .c.c 文件:文件: CC 语言源代码语言源代码 .a.a 文件:是由目标文件构成的库文件文件:是由目标文件构成的库文件 .h.h 文件,程序头文件文件,程序头文件 .i.i 文件,经过预处理的文件,经过预处理的 CC源代码文件源代码文件 .o.o 文件,编译后的目标文件文件,编译后的目标文件 .s.s 文件,汇编语言源代码文件,汇编语言源代码 .C, .cc, .cxx.C, .cc, .cxx 文件,文件, C++C++源代码源代码

Page 14: UNIX 的应用与开发

第 14页

五、五、 UnixUnix 中的中的 CC 程序设计程序设计

GccGcc 的执行过程的执行过程 不仅仅是编译,由四个步骤构成不仅仅是编译,由四个步骤构成

调用调用 CPPCPP 进行预处理进行预处理

调用调用 cc1cc1 进行编译进行编译

调用调用 asas 进行汇编进行汇编

.o.o 文件文件

调用调用 ldld 进行连接进行连接

Page 15: UNIX 的应用与开发

第 15页

五、五、 UnixUnix 中的中的 CC 程序设计程序设计

GccGcc 的基本用法的基本用法 使用时需要给出必要的调用参数和文件名称,使用时需要给出必要的调用参数和文件名称, GccGcc 的参数的参数由由 100100 多个,我们介绍最基本的,最常用的给大家。多个,我们介绍最基本的,最常用的给大家。

格式:格式:gcc [options] [filename]gcc [options] [filename]

options:options:-c, -c, 只进行编译,不连接只进行编译,不连接-o output filename, -o output filename, 确定输出的可执行文件名确定输出的可执行文件名

称称 output filename, output filename, 这个名称不能这个名称不能和源文件同和源文件同 名,如果没有输出名,如果没有输出 a.outa.out

-O, -O, 对程序进行优化处理,产生的可知行文件对程序进行优化处理,产生的可知行文件执执 行效率较高,但是编译,连接行效率较高,但是编译,连接过程会较慢过程会较慢

-g, -g, 产生符号调试工具(产生符号调试工具( gdbgdb )必须的符号信)必须的符号信息息

Page 16: UNIX 的应用与开发

第 16页

例如:例如: gcc test.c gcc test.c

a.outa.out

Gcc –o test.out test.cGcc –o test.out test.ctest.outtest.out

Gcc –c test.cGcc –c test.ctest.otest.o

Make——Make——大中型项目的编译工具大中型项目的编译工具gdb——c, c++gdb——c, c++ 的调试工具的调试工具