《linux操作系统入门-基本知识ppt课件.ppt》由会员分享,可在线阅读,更多相关《linux操作系统入门-基本知识ppt课件.ppt(239页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1Welcome!嵌入式Linux系统培训Linux操作系统入门2一周课程安排一、Linux操作系统结构;常用的Linux Shell命令二、开发环境使用(ultraedit、nfs、samba、超级终端(wins)、 minicom(linx) Shell编程实验三、编译器GCC使用;调试器GDB; 项目管理工具MAKE 标准I/O开发,文件I/O操作编程四、实验:设置编译环境; 文件I/O实验(包括如何实验GCC,MAKE)3Linux是什么? Linux是一种计算机操作系统和它的内核的名字。它也是自由软件和开放源代码发展中最著名的例子。4Linux是一种?nLinux是一种Unix类操作
2、系统nUnix类?5Linux的诞生n1991年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix中得到灵感,发誓要写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序、一个小的文件系统n这样0.0.1版本的Linux就出来了,但是他必须在有Minix的机器上编译以后才能玩,这时候的Linus已经完全“走火入魔”了,决定完全脱离Minix,于是在1991年10月5号发布了Linux0.0.2版本,这个版本已经可以运行bash(一种用户与操作系统内核通讯的软件)和gcc(GNU C编译
3、器)了6Linux的编年史n11991年11月,芬兰赫尔辛基大学的学生Linus Torvalds写了个小程序,取名为Linux,放在互联网上。1993年,在一批高水平黑客的参与下,诞生了Linux1.0版n21994年,Linux的第一个商业发行版Slackware问世n31996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13(由Open Linux公司打包)符合POSIX标准n41999年起,多种Linux的简体中文发行版相继问世。国内自己创建的有Blue Point Linux、Flag Linux、Xterm Linux等,美国有Xlinux、TurboLinu
4、x等n52001年,Linux2.4版内核发布n62003年,Linux2.6版内核发布n7现在i市场上出现多种Linux发行版iiLinux广泛用于桌面系统、嵌入式系统、网络服务器系统iii众多大厂商参与Linux的开发工作,Linux可用软件越来越多7开启你的Linux旅途8第一步n如何使用Vmware打开RedHat Linuxn演示.9Linux的启动与初始化Linux Boot StopBIOSopen the powerkernel/bootlilo/grabmingettyinitshelllogin-linux perationLogon program引导启动第一个进程10第
5、二步:登陆Linux系统n终端模式 Linux Login Password: 终端提示符 $ #nXwindow模式Red Hat Linux release 7.3(Valhalla)Kernel 2.4.18-3 on an 1686localhost login: rootPassword: 123456localhost login: rootPassword:_Last Login: Sun Sep 11 20:You have new mail.rootlocalhost root#_localhost login: sunkangPassword:_sunkanglocalho
6、st sunkang$11Linux:登陆与退出nlogout:退出登录(exit)nreboot:重启系统nshutdown:关闭系统npoweroff:关闭系统nhalt:系统挂起 12第三步:如何启动终端n在菜单中,选择“系统设置”-”终端”13开始使用“终端”n下面将介绍的是:n1、 Linux操作系统的根文件系统(目录)n2、 Linux操作系统的系统文件结构n3、常用的Linux操作系统shell命令141、 Linux操作系统的根文件系统nFHS:Filesystem Hierarchy StandardnFHS: 规范档案目录的命名及存放标准n大多数Linux系统遵循FHSnL
7、inux:目录&路径n目录:Directory.n路径 -绝对路径例:/usr/src/linux15根文件系统n基本文件系统结构n至少含有以下目录:/dev、/proc、/bin、/etc、/lib、/usr、/tmpn最基本的应用程序,如sh、ls、cp、mv等n最低限度的配置文件,如rc.d、inittab、fstab等n设备:/dev/hd*、/dev/tty*、/dev/fd0n基本程序运行所需的库函数161、 Linux操作系统的根文件系统以Redhat为例n/bin -linux常用的命令,如cp, ls, ping, mount, vi, tar, kill, grep, rp
8、m, dd, ps, ln, gzip, cat等n/boot-启动文件,如vmlinuzn/dev-设备文件,如fd0(软盘), hda (第一硬盘), hdal, hdb, sda, sdal, cdrom(hdc), mouse(psaux), 等;hd-harddisk;sd-scsin/etc-配置文件,如hosts, lilo.conf, inittab, rc,d(dir), samba/smd.conf等17根文件系统n/home,/root -每个用户在home下有一个自己的目录。 -root的在/root -权限和保护n/lost+found-Lost? found!一些丢
9、失的文件可能可以在这里找到n/lib-共享库相关文件n/mnt-mount文件系统到这个目录如cdrom,floppy18根文件系统n/var-执行中记录数据n/proc-内存文件,报告程序执行的在线动态信息-如进程id数字目录,sys, net 等 (/proc/sys/net/目录主要包括了许多网络相关的主题,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通过改变这些目录中的文件,网络管理员能够在系统运行时调整相关网络参数)n/sbin-启动时需要,系统管理员程序工具、配置等-如fsck(修复分区), lilo(安装引导程序), init(内核启动的第
10、一个用户进程), fdisk等n/tmp-临时文件夹n/usr-用户应用程序和文件192、 Linux文件系统结构应用程序应用程序存储设备存储设备RelserFSVFS文件访问请求文件访问请求文件系统文件系统EXT3设备驱动程序设备驱动程序NTFSISO9660nVirtual File System是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口。n它提供了内核中的一个抽象功能,允许不同的文件系统共存。nVFS提供统一的接口(open,read,write.)访问不同的实际文件系统,所以Linux系统可以同时支持多种文件系统n一个文件系统通常占用一个逻辑分区20EXT2
11、-The Second Extended File SystemEXT2文件系统的整体结构和布局启动扇区启动扇区块组块组块组块组M块组块组N超级块超级块文件系统组文件系统组描述符表描述符表块位图块位图inode位图位图inode表表数据块数据块n超级块:文件系统基本信息的描述,包括文件系统大小,状态n组描述符:描述每个块组的控制和统计信息nI节点:用于描述一个文件或目录、模式、拥有者信息、文件大小、时间标志、数据块指针21EXT3nEXT2的加强版本:EXT3nEXT3是一种日志文件系统:它会将磁盘的写入动作完整记录在磁盘的某个区域上,以免突然情况下发生不一致现象。资料有效性资料完整性tune
12、2fs:将ext2文件系统的分区转移成ext3文件系统的分区22设备也是一个文件设备设备命名命名第一个第一个软驱软驱/dev/fd0第二个软驱第二个软驱/dev/fd1第一个第一个硬盘硬盘/dev/hda第一个硬盘第一个分区第一个硬盘第一个分区/dev/hda1第一个硬盘第二个分区第一个硬盘第二个分区/dev/hda2第一个硬盘第三个分区第一个硬盘第三个分区/dev/hda3第一个硬盘第四个分区第一个硬盘第四个分区/dev/hda4第一个硬盘第一个逻辑分区第一个硬盘第一个逻辑分区/dev/hda5第一个硬盘第二个逻辑分区第一个硬盘第二个逻辑分区/dev/hda6依次类推依次类推.第二个第二个硬
13、盘硬盘/dev/hdb依次类推依次类推.233、常用的Linux操作系统shell命令n内核信息n关于当前内核的基本信息- uname命令:uname a (显示内核基本信息) :例如:2.4.18n内核版本- major.minor.patchlevel 核心版本.主号(偶数为稳定版本).第几次的修改(从0开始)n内核源文件所在目录-内核源码通常被置于:/usr/src/linux下24目录相关的命令ncd:change directory,切换到其他目录格式:cd directory 例:# cd /usrnpwd:present working directory,显示当前路径 格式:p
14、wd25实例n进入/usrn进入/usr/src/linux1、cd src/linux2、cd ./src/linux3、cd src; cd linuxn回到 /usr1、cd/usr2、cd ./. (回到根目录)n进入/home1、cd ./home26lsnls命令用于显示目录内容,类似DOS下的dir。nls optionsfilenamen主要参数:-a,-all:列出所有文件,包括隐藏文件;-l:使用较长格式列出信息;-m:所有项目以逗号分隔,并填满整行行宽;-R,-recursive:同时列出所有子目录层;n蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色 表
15、示是链接文件,灰色表示是其他格式文件。ls最常使用的是ls -l。其别名为ll。27文件操作相关的命令nmkdir: make directory,创建一个文件夹-如 mkdir tempnrmdir:remove directory, 删除目录(要求目录是空的)-如 rmdir temp28cp and mvncp option (可有可无) 源地址 目的地址如:cp file1 file2 将文件file1复制成file2。cp file1 dir1 将文件file1复制到目录dir1下。cp /tmp/file1 file2cp r dir1 dir2 复制整个目录。nmv option
16、 源地址 目的地址mv file1 file2 将文件file1更名为file2。mv file1 dir1 将文件file1移到目录dir1下。mv dir1 dir2 将目录dir1更改为目录dir2。 29rmnrm file1删除文件名为file1的文件。rm file?删除文件名中有五个字符且前四个字符为file的所有文件。 rm f*删除文件名中以f为字首的所有文件。rm r dir1删除目录dir1及其子目录下所有文件。rm rf dir1不须确认,-force(强制)30file nfile通过探测文件内容判断文件类型。nfileoption文件名n使用file命令可以知道某个
17、文件究竟是二进制的可执行文件,还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。file grapgrap: English textnfile命令不能探测包括图形、音频、视频等多媒体文件类型。31帮助命令nman:用户手册(mannual)手册的章节格式:man command man man man -S 2 readninfo:读取info版的帮助文档格式:info command info infonwhatis:从whatis数据库里找某个命令的简单描述 格式
18、:whatis command whatis mannApropos:从whatis数据库中找某个字符串格式:apropos keyword apropos printn-help:命令参数,显示简单的用户帮助格式:command - - help 32lnnln命令用来在文件之间创建链接nlnoption源文件链接名 -s :进行软链接(Symbolic Link) n链接有两种,硬链接(Hard Link)(缺省),符号链接(Symbolic Link)n硬链接指通过索引节点来进行的连接。每个文件都有一个编号,称为索引节点号(Inode Index) 33lnn符号连接(Symbolic
19、Link),也叫软连接。类似于Windows的快捷方式。实际上是一个文本文件,包括有另一文件的位置信息。如:$ ln -s /usr/local/httpd/htdocs gg这样每次进入gg目录就可以访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。34时间设置n修改系统时间rootdell vick# dateTue Mar 28 19:20:31 CST 2006rootdell vick#date -s “Mar 28 19:19”rootdell vick #date -s “2006-3-28 19:19” -s,表示
20、修改日期n修改后执行clock -w 或clock -systohc到硬件时钟,也可以用hwclock命令。35Linux的ShellnShell:外壳,也就是界面nShell的作用接受输入解释接受到的输入信息输出结果36Linux的ShellnLinux下常见的Shell-Sh:Bourne shell-Bash:Bourne Again Shell,最常用-Csh:C Shell,加州大学伯克利分校,与 Bourne Shell基本兼容,但是程序设计界面有很大不同-Ksh:Korn Shell,Unix系统下最普遍的-Tcsh:C Shell的加强版-Zsh:Z Shell,最新的Shel
21、l,与Bourn Shell兼容37nbourne shellV7时发布,作者是AT&T贝尔实验室的stephen bourne,替代了thompson的sh,成为unix的缺省sh,位于bin/sh.the Boutne Again Shell(1),它们是由FSF员工Brian Fox开发的。38BASH shell特点nbash 是大多数linux系统的缺省外壳,提供以下一些服务:n补全命令行:按Tab键n输入/输出重定向:重定向用于改变命令的输入输出方向。输出重定向用于将命令的结果输入到文件中,而不是屏幕上。n输入重定向的命令是。n通配符:在bash下可以使用通配符*和?; *可以替代
22、多个字符,而?则替代一个字符。39BASH shell特点n管道:用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。n作业控制:可以挂起一个正在执行的进程,并在以后恢复该进程的执行。按下Ctrl+Z挂起正在执行的进程,用bg命令使进程恢复在后台执行,用fg命令使进程恢复在前台执行。n设置/删除环境变量 设置:export 变量名=变量值 #TEST=haha; export TEST 查看变量值:#echo $TEST 删除:unset 变量名 #echo $TEST #unset TEST40管道符号:|n管道符号是什么?|n管道符号的作用?将一个命令的输出定向成另一
23、个命令的输入,如:command1|command2,command1的输出将成为command2的输入n通常结合more&less使用ls-R1 | morecat file1 | more41启动文件/etc/rc.d/rc.local (init)/etc/profile (可设置环境变量)/.bash profile(环境变量,登录后仅一次)/.bashrc (由/.bash profile调用,每次打开新的 shell时,该文件被运行)/etc/bashrc(/.bashrc调用,所有用户) 如果没有/.bash profile文件时,bash会查找 /.bash_login,如果也
24、不存在,bash会查找/.profile文件。 /.bash_logout会在用户logout时被运行,如清除屏幕和临时文件等。42Shell常用键nCtrl+H: 退格nCtrl+C: 中断当前程序nCtrl+Z:暂停程序,使用fg重新启动程序nCtrl+S:停止输出(STOP)nCtrl+Q:启动输出nCtrl+D:in shell log out 等同于在shell里键入exitnCtrl+L:清屏clear screennCtrl+M:回车r 0 x0DnCtrl+J: 换行n 0 x0A43进程管理nps:显示系统中的进程nkill:杀掉进程nfg:将后台的进程放到前台运行nbg:将
25、某个进程放到后台运行44ps and kill nps 查看系统中属于自己的进程。ps aux 查看系统中,包含系统内部的及所有用户的进程。(ps -aef)nkill PIDPID:利用ps 命令所查出的进程号。kill 456 终止进程号为456的进程。n在后台执行进程的方式语法:命令&例如:gcc file1.c &将编译file1.c文件的工作置于后台执行。45bg and fgn按下Ctrl+Z键,暂停正在执行的进程。nbg命令,暂停的进程置于后台继续执行。如:gcc sample_1.c(在homebcfile-progarm)ZStoppedbgnfg命令,将后台执行的进程置于前
26、台njobs查看正在后台中执行的进程46备份与压缩n压缩工具-gzip 和gunzip:压缩&解压缩,其实是同一个文件,系统通过分辨命令名来区分是压缩还是解压缩(压缩文件,不压缩目录)(在homebcfile-progarm) # gzip sample_1.c 得到sample_1.c.gz (see if the original file.) # gunzip sample_1.c.gz得到sample_1.c47tarn将多个文件(包括目录)打包(可压缩)成一个文件。打成的包常被称为tarball。n最常用的命令tar zcvf 1.tar.gz *.gif(或1.tgz也表明是tar
27、.gz格式)tar zxvf 1.tar.gz dir1(dir是一个目录)z:使用gzip压缩 x:解开包 c:生成包f:指定文件名 v:显示详细信息 注意:tar的选项z可以不使用48tarn对于.tar.bz2格式使用bunzip2,可以先解压为.tar格式 # bunzip2 foo.tar.bz2得foo.tar # tar xvf foo.tarntar jxvf*.tar.bz2 注意:j代表bunzip249locaten通过文件名搜索文件,前提是需要通过updatedb建立索引数据库;nrootlocalhost#updatedb(需要一定的时间)n举例:要找samba.co
28、nf文件都位于哪些位置:n#locate samba.conf50whereisn用来寻找命令及其帮助文件。n比如你想知道fdisk工具放在哪里,就可以用whereis fdisk来查找;n#whereis fdiskfdisk:/sbin/fdisk/usr/share/man/man8/fdisk.8.gz51whichnwhich和where相似,只是在设置的环境变量PATH中寻找;比如;n#which fdisk/sbin/fdisk52grepngrep:在指定的文件中查找一个字符串例如:-rootbc#grep “add” *.c bar.c:int add(int x,int y
29、) foo.c: printf(“x+y=%3dn”,add(x,y);注意:在文件所在的当前目录查找53findn根据给定的参数在指定目录中查找文件 findpath.expression -find /usr/include -name ”stdio.h” -find . mtime +6 mtime -86天以前8天以内修改过的文件。 +n,great than n,-n less than n,n exactly n. -find . -size +10c -size -20c 搜索文件介于10byte到20byte之间。 -size nbckw54用户管理nuseradd,addus
30、er:添加用户添加用户 - useradd ahkangnpasswd:添加用户密码添加用户密码-#passwd ahkangnuserdel-#userdel ahkang ngroupadd :添加组:添加组#groupadd voipngroupdel-# groupdel voipnUsermod:修改用户名:修改用户名-#usermod G voip ahkang(在管理员身份下才可进行)(在管理员身份下才可进行)55文件系统的挂载与卸载nmount:挂载文件系统格式:mount -t fstype device mount-point例:mount -t vfat/dev/sda1
31、 /mnt/usbdisknumount:卸载文件系统格式:umount device OR umount mount-point例:umount/dev/sda1n系统启动时自动挂载文件系统:/etc/fstab56n-t typeminix, ext2, msdos, vfat(win95/98)nfs, iso9660, ntfs(winNT), hpfs(OS/2),auto(自动检测文件系统)n列出目前加载的ext2文件系统mount -t ext2n模拟加载,查看mount的执行过程,配合-v57文件系统的挂载与检查nLinux下使用光盘挂载:mount t iso9660/dev
32、/cdrom/ mnt/cdrom 卸载:umount/dev/cdrom $eject $eject-t (弹出和收回光驱)n检查与修复文件系统命令:fsck t type device 例:fsck t ext2/dev/hda258/proc文件系统n一种虚拟文件系统:内核和内核模块用来向进程(process)发送信息的机制(所以叫做/proc)n访问方式:基于文件的接口,与其他文件系统一样,只是访问的内容由内核提供,而不是由存储介质提供59/proc文件系统n用途查看计算机信息查看内核状态查看运行中的进程信息运行中改变系统设置驱动调试n查看/proc文件系统60/proc文件系统nca
33、t /proc/cpuinfo CPUncat /proc/interrupts 中断ncat /proc/ioports 设备IO端口ncat /proc/meminfo 内存信息ncat /proc/partitions 所有设备的所有分区ncat /proc/pci PCI设备的信息ncat /proc/swaps 所有Swap分区的信息ncat /proc/versionLinux的版本号uname a 看系统内核等信息61最基本的网络管理nnetconfig:进行网络配置改动的是/etc/sysconfig/network-scripts/ifcfg-eth?nping:用于网络检测
34、#ping nifconfig:网络配置和网络参数查看# ifconfignnetstat 查看网络状况62如果你碰到这些问题?n实际使用中需要两台机器,但是现实太残酷,只有一台配置较好的机器,怎么办?n需要同一时间使用两个操作系统,如一个Windows和一个Linux,怎么办?n如果你想安装一个不熟悉的操作系统,但是对于硬件(特别是硬盘)的操作不熟悉时,为了防止损坏数据,怎么办?n其他问题.63常用服务器nApache (外部服务器)n(/usr/local/apache/conf/目录下,三个配置文件httpd.conf, access.conf和srm.conf,来配置Apache服务器
35、的行为. httpd.conf提供了最基本的服务器配置,是对守护程序 httpd怎么样运行的技术描述;srm.conf是服务器的资源映射文件 )nFTPnSambanNFS SSHD(网络文件系统)nTelnetdnDHCPnNamednSendmail64如何配置文件共享服务(Samba)n(1)检查Samba服务是否打开?65n点击系统设置,选择服务器设置,最后选择服务。n检查samba是否打开,如勾上,就代表打开了。如没有就把smb勾上,再点击“重启”。66如何打开tftp服务67如何 打开NFS服务(网际文件共享)n如samba68软件安装1. 获取源码包2. 配置编译选项3. 编译4
36、. 安装 通常软件会给出自己的安装说明。tar xvfz aaa.tar.gz; cd aaa;./configure; make;make install69RPMnRPM是Redhat Package Manager的缩写,是由RedHat公司开发的软件包安装和管理程序。nRPM虽然是为Linux而设计的,但是它已经移植到 SunOS、Solaris、AIX、Irix等其它UNIX系统上了。70RPM的使用n两种类型的RPM包src rpm与二进制rpm,前者含有项目的源代码,后者主要为项目的可执行程序。如:tftp-0.28-2.src.rpm tftp-0.28-2.i386.rpm项
37、目名-版本号-修改次数.rpm包类型.rpm71rpm命令的使用nrpm命令的基本模式安装:rpm i 查询:rpm q验证:rpm V删除:rpm e制作:rpm b一般选项:-v 显示信息-h 用“#“显示完成的进度-vv 显示调试信息72常用的命令形式以tftp软件包tftp.-0.28.2.i386.rpm为例n安装一个软件包rpm-ivh tftp-0.28-2.i386.rpmn卸载一个软件包rpm e tftpn查询一个包内的信息rpm qiq tftp-0.28-2.i386.rpmn查询一个包内有哪些文件rpm qlq tftp-0.28-2.i386.rpm73常用的命令形
38、式n查询一个包是否被安装rpm q tftpn查询一个被安装包的信息rpm qi tftp rpm ql tftpn查询一个包是否被正确安装rpm V tftpn查询某个文件是被哪个包安装的rpm qf usr/bin/tftp7475参考资料nLinux一句话精彩问答nLinux权威指南第四版,MATT Welsh等著,洪峰译n精通LinuxStan Kelly-Bootle著,电子工业出版社nUnix入门与提高徐锦波 朱文章,清华大学出版社nLinux入门到精通Arman Danesh著 电子工业出版社nRPM命令大全http:/ 毛德操/胡希明 浙江大学出版社nUnix环境高级编程 Ri
39、chard Stevens 机械工业出版社nUnix网络编程卷一套接口API和X/Open传输接口APIRichard Stevens 清华大学出版社nUnix网络编程卷二 进程间通讯Richard Stevens清华大学出版社76Thanks!谢谢 谢谢 !77vi主讲老师:邓耀华78演示n用vi写一个“hello world”n过程vi hello.ciinput some c text按ESC键:wq79Vi与VIMn什么是Vi&VIM?Vi:“Visual”,操作过程中可以立即看到结果VIM:“Vi Improved”,与Vi兼容,更适于程序员使用在很多发行版中,VIM已经替代了Vi8
40、0启动和退出n如何启动和退出vi&vim?启动:vioptionsfilename:w 将编辑缓冲区的内容写入文件:wq 保存文件并退出:w!强行写入。:q!强行退出vi,不保存修改的内容w:write, q:quite! 重新编辑,放弃缓冲区里的内容81编辑与非编辑模式n进入vi的初始模式是非编辑模式(操作模式)可以移动光标,删除、复制和粘贴内容n如何进入编辑模式?在非编辑模式下输入i或或a或或o可以进入编辑模式(还有其他一些键)。n如何回到操作模式按ESC82Vi的使用n新建文件:vi 文件名n编译: gcc o hello(要输出的文件名) 输出:./ 文件名 例如./hello83命令
41、模式n如何进入命令模式在操作模式下,输入:或/或?进入该模式,可以实现查找替代内容,读取,存档,退出等功能;n如何退出命令模式执行命令即自动退出命令模式,回到操作模式。84模式之间的转换/,?,:ESCi,I,a,Ar,R,o,O编辑模式编辑模式指令列命令模式指令列命令模式操作模式操作模式85编辑方式a将输入文本插入在光标之后(append)A将输入文本插入在当前行的行尾i将输入文本插入在光标之前(insert)I将输入文本插入在当前行的开始o 将在当前行的下一行处打开一新行(open)O将在当前行的上一行处打开一新行r 替换当前字符,不需按ESC。(replace)R 从当前字符开始进行替换
42、,至ESC键为止。86剪切、复制、粘贴n如何剪切一行? dd (delete)n如何复制一行?yy (yank)n如何粘贴? p或者P (paste)n剪切和复制n行? ndd nyy87有很多细节.n如以y与Y命令为例yy 复制当前行;(*)nyw复制从当前字符开始的n个字;(*)ny$复制从当前字符开始的n行字符; (*)Y与y$同义;y)复制到下一句的开始:y复制到下一段的开始;nyy复制从当前行开始的n行;(*)y 回车复制两行;(*)88光标的定位 或k向上移一行 或j向下移一行 或h左移一个字符 或l右移一个字符CTRL+f 向前(上)移动一满屏幕(forward)CTRL+b 向
43、后(下)移动一满屏幕(backward)CTRL+d 向前(上)移动半屏幕(down)CTRL+u 向后(下)移动半屏幕(up)0 移到当前行的开始$移到当前行的结尾回车符移到下一行的开始可在命令前加入数字n作为前缀,使相应命令执行n次。89光标的定位nG使光标定位在第n行。gg光标移动到文件的开头G光标移动到文件的结尾:0光标移动到文件的第1行:n光标移动到文件的第n行: $光标移动到文件的最后一行90回顾n如何由编辑模式进入一般模式?-按ESCn如何移动到一行的开始和结尾?-在一般模式下按0和$n如何移动到文档的开头和结尾?-移动到开头gg或:1-移动到结尾G或:$91回顾n如何向前或向后
44、翻一页?-Page Down/Page Up-Ctrl+f/Ctrl+bn检索和替换的命令格式?-:addrs/s1/s2/optionn如何undo和redo-u,ctrl+r92参考文献n入门学习Vim Tutor(运行vimtutor命令)n最快捷的帮助Online HelpnDoc:-Vim User ManualnWebsites:-VIM homepagehttp:/www.vim.org-水木社区VIM版93谢谢 谢谢 !94Welcome!Linux 下的C/C+编译器主讲老师:邓耀华95GCC编译器96示例great.c#includevoid main(void)print
45、f(“hello,how are youn”);vicknec gcc-lab$ gcc o hello hello.cgreat.c:In functionmain:great.c:3:warning:return type of main is not int97GCC nGCC是什么? -GCC:GNU Compiler Collection; -GCC支持多种硬件平台和操作系统,能编译多种语言 (C,C+,Java,Ada95,Objective C, .ect);-GCC与G+的关系:GCC用于编译多种语言编写的程序,主要是C;G+用于编译C+程序,以GCC为基础,编译过程中加入了C
46、+的支持库,参数与GCC基本一致;可以利用GCC编译C+程序,但是需要在参数中加入引用的C+库,比如;libstdc+(如gcc o out -lstdc+ main.cc)。98编译器与库PreprocessorCompiler前端前端后端后端OptimizerAssemblerLinker.o.sa.out.cC预处理预处理汇编汇编优化优化语法语义分析语法语义分析代码生成代码生成链接链接GCC编译C源码步骤:预处理- 编译 - 汇编 - 链接99后缀n.c C源代码n.hC头文件n.o目标代码(obj)n.s汇编代码文件nC+文件-file.hh,file.HC+头文件-file.C,fi
47、le.cc,file.cxx等C+源文件100选项n-E输出预处理结果(输出终端)n-S 输出汇编代码(great.s)n-c输出目标代码(great.o)n-o file 输出名为file的可执行文件名 (缺省为a.out)n-O O2 优化编译n-g: 产生可用于调试的输出101示例ngcc o main I./include -DDebug g main.c 输出文件输出文件 头文件搜索目录头文件搜索目录 定义宏定义宏 用于调试用于调试 源文件源文件102预处理(Pre-processing)n在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”
48、-E”进行查看。n用法:#gcc -E hello.c -o hello.in作用:将hello.c预处理输出hello.i文件。103nroot# gcc -E hello.c -o hello.iroot# lshello.c hello.iroot# vi hello.in# 1 hello.c# 1 # 1 # 1 hello.c# 1 /usr/include/stdlib.h 1 3# 25 /usr/include/stdlib.h 3# 1 /usr/include/features.h 1 3# 291 /usr/include/features.h 3# 1 /usr/in
49、clude/sys/cdefs.h 1 3# 292 /usr/include/features.h 2 3# 314 /usr/include/features.h 3# 1 /usr/include/gnu/stubs.h 1 3# 315 /usr/include/features.h 2 3# 26 /usr/include/stdlib.h 2 3# 3 hello.c 2nvoid main(void) printf(hello world!rn);104编译阶段(Compiling) n第二步进行的是编译阶段,在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代
50、码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。n用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码 n用法:root# gcc S hello.i o hello.sn作用:将预处理输出文件hello.i汇编成hello.s文件 105nrootrichard hello-gcc# lsnhello.c hello.i hello.sn如下为hello.s汇编代码nrootrichard hello-gcc# vi hello.s n.file hello.c.section .rodata.LC0:.string hello world!rn.te