资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,陈英梁建武主编中国水利水电出版社,*,Linux,基础及应用,第,1,章,Linux,入门,4/21/2025,1.1 Linux,基础知识,Linux,是专门为个人计算机所设计的操作系统。它最早是由,Linus Torvalds,设计的。,Linux,是在,Internet,开放环境中开发的,它由世界各地的程序员不断完善,而且免费供用户使用。,4/21/2025,Linux,具有以下主要特性:,开放性,多用户,多任务,良好的用户界面,设备独立性,提供了丰富的网络功能,4/21/2025,可靠的系统安全,良好的可移植性,支持多种文件系统,4/21/2025,需解决的问题:,企业级技术支持;,更多应用程序支持;微软的,Windows,系列产品之所以能取得今天的市场地位,是与其上拥有众多的应用软件分不开的。在,Linux,产品中也必须装有先进的应用软件,在这方面,进展虽有,但太过缓慢。如果没有足够的需求,销售商们不会采用,Linux,,而如果没有足够的应用程序,就不会有需求。因此,应用程序这一关攻不下来,,Linux,就难以为继。,标准化;,UNIX,最初也是一个自由软件,但发展到今天,已被各大厂商把持,版本繁多,互不兼容,这实际上阻碍了,UNIX,的发展。,4/21/2025,1.2 Linux,系统安装,做好安装前的准备工作:,安装类型,所需空间,个人桌面,包括图形化桌面环境,至少需要,1.78G,空闲空间。若兼选,GNOME,和,KDE,桌面环境,则至少需要,1.8GB,的空闲空间,工作站,工作站安装,包括图形化桌面环境和软件开发工具,至少需要,2.1GB,的空闲空间。兼选,GNOME,和,KDE,桌面环境至少需要,2.2GB,空闲空间,服务器,最基本的没有,X,(图形化环境)的服务器安装需要,850GB,空闲空间;若要安装除,X,以外的所有软件包组,需要,1.5GB,空闲空间;若要安装包括,GNOME,和,KDE,桌面环境的所有软件包,至少需要,5.0GB,空闲空间,定制,基本的定制安装需要,475MB,,如果选择了全部软件包,则至少需要,5.0GB,空闲空间,4/21/2025,Linux,的分区规定:,(,1,)设备管理,Linux,把各种,IDE,设备分配了一个由,hd,前缀组成的文件;而对于各种,SCSI,设备,则分配了一个由,sd,前缀组成的文件。例如,第一个,IDE,设备,,Linux,就定义为,hda,;第二个,IDE,设备就定义为,hdb,;下面以此类推。而,SCSI、,SATA、USB,设备就应该是,sda,、,sdb,、,sdc,等。,4/21/2025,(,2,)分区数量,对于每一个硬盘(,IDE,或,SCSI,)设备,,Linux,分配了一个,1,到,16,的序列号码,这就代表了这块硬盘上面的分区号码。例如,第一个,IDE,硬盘的第一个分区,在,Linux,下面映射的就是,hda1,,第二个分区就称作是,hda2,。对于,SCSI,、,SATA、USB,硬盘则是,sda1,、,sdb1,等。,(,3,)各分区的作用,Linux,规定了主分区(或者扩展分区)占用,1,至,16,号码中的前,4,个号码。以第一个,IDE,硬盘为例说明,主分区(或者扩展分区)占用了,hda1,、,hda2,、,hda3,、,hda4,,而逻辑分区占用了,hda5,到,hda16,等,12,个号码。因此,,Linux,下面每一个硬盘总共最多有,16,个分区。,4/21/2025,安装,Fedora Core Linux,1,要完成Fedora Linux在本地计算机上的安装,需要准备一张Fedora的安装盘或者自行下载32位或者64位的Fedora系统iso文件,本文安装的是Fedora22 KDE桌面版,操作步骤如下:,4/21/2025,(1)插入资源光盘,从光盘引导后会见到如图1-1所示的安装界面。,4/21/2025,2,选择语言,4/21/2025,(3)进入用户界面安装信息摘要界面。,4/21/2025,(4),配置键盘。,4/21/2025,(5)配置时区。,4/21/2025,(6)设置主机名称。,4/21/2025,(7)设置磁盘分区。,选择自动分区,4/21/2025,选择自定义分区方案,4/21/2025,4/21/2025,4/21/2025,(8)安装配置界面。,4/21/2025,(9)为root用户设置密码。,(10)创建用户。,4/21/2025,(11)安装完成,(12)选择支持的语言,(13)选择键盘布局或其他输入方式。,4/21/2025,(14)设置隐私。,(15)配置完成。,4/21/2025,1.3 Linux,文件及文件系统,Linux,中常见的文件类型,1,系统文件,4/21/2025,2,编程和脚本文件,4/21/2025,3,常见的媒体文件,4/21/2025,文件扩展名,说明,.au,音频文件,.gif,GIF,图像文件,.swf,Flash,动画文件,.html/htm,HTML,文件,.xml,XML,文件,.bmp,位图文件,.jpg,图像文件,.pdf,PDF,文档的电子映像,代表,Portable Document Format,(可移植文档格式),.png,图像文件,PNG,(,Portable Network Graphic,,可移植网络图形),.ps,PostScript,文件,为打印而格式化过的文件,.txt,纯,ASCII,文本文件,.wav,音频文件,.xpm,图像文件,4,压缩和归档文件,4/21/2025,Linux,文件系统,文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。,Linux,是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。,4/21/2025,Linux,支持多种文件系统。下面是最重要的几个:,1,minix,2,xia,3,ext2,4,ext3,5.ext4,6,nfs,7,sysv,4/21/2025,Linux,基础及应用,第,2,章,Linux,基础命令,2.1,系统基本操作,1,系统登录,(,1,),root,用户:超级用户账号,使用这个账号可以在系统中做任何事情。,(,2,)普通用户:只能进行有限的操作。,用户登录分两步进行:第一步,输入用户的登录名,系统根据该登录名来识别用户;第二步,输入用户的口令,该口令是用户自己选择的一个字符串,对其他用户是保密的,是在登录时系统用来辨别真假用户的关键字。,2,系统退出,不论是超级用户,还是普通用户,需要退出系统时,在,shell,提示符下,键入,exit,命令即可。,3,重启和关闭系统,修改口令,:,Linux,允许不同的用户通过控制口令来保障信息的安全,用户只有通过正确的口令才能登录系统,,Linux,系统下用户通过,passwd,命令来修改口令。,Linux,用户包括超级用户和普通用户,超级用户具有最高权限,可以修改所有用户的口令,而普通用户只能修改自己的口令。,passwd,命令一般格式:,passwd,选项,账户名称,2.2 Linux,常用操作命令,2.2.1,文件和目录的基本概念:,1,文件与文件名,文件名是文件的标识,它由字母、数字、下划线和圆点组成的字符串来构成。用户应该选择有意义的文件名。,Linux,要求文件名的长度限制在,255,个字符以内。,2,文件的类型,Linux,系统中有三种基本的文件类型,:,:普通文件、目录文件和设备文件。,普通文件是用户最经常面对的文件,它又分为文本文件和二进制文件。,目录文件的主要目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。目录文件往往简称为目录。,Linux,系统把每一个,I/O,设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对,I/O,设备的使用和一般文件的使用一样,不必了解,I/O,设备的细节。设备文件可以细分为块设备文件和字符设备文件。,3,树型目录结构,Linux,系统通过目录将系统中所有的文件分级、分层组织在一起,形成了,Linux,文件系统的树型层次结构。以根目录为起点,所有其他的目录都由根目录派生而来。一个典型的,Linux,系统的树型目录结构:,4,工作目录、用户主目录与路径,从逻辑上讲,用户在登录到,Linux,系统中之后,每时每刻都处在某个目录之中,此目录被称作工作目录或当前目录(,Working Directory,)。,工作目录用,“,.,”,表示,其父目录用,“,.,”,表示。,用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。,路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用,“,/,”,分开。任一文件在文件系统中的位置都是由相应的路径决定的。,用户在对文件进行访问时,要给出文件所在的路径。路径又分相对路径和绝对路径。绝对路径是指从根目录开始的路径,也称为完全路径;相对路径是从用户工作目录开始的路径。,2.2.2,文件和目录命令,1,cat,命令,cat,命令用于将文件内容在标准输出设备上显示出来,它类似于,DOS,下的,type,命令。,cat,命令除了显示文件功能外,还可用来连接两个或多个文件。,cat,命令用于显示文件内容的格式:,cat,选项,文件名,1,文件名,2,文件名,N,命令主要选项含义:,-n,:由,1,开始对文件所有输出的行数编号。,-b,:和,-n,相似,只不过对于空白行编号。,-s,:当遇到有连续两行以上的空白行,就代换为一行的空白行。,-v,:显示非打印字符。,2,more,命令,more,命令用来对内容比较多的文件进行分页显示。,more,命令的格式:,more,选项,文件名,该命令一次显示一屏,显示一屏后暂停,并在底部显示,More-,,同时还显示已经显示的内容占整个内容的百分比。按,Enter,键可以向后移动一行;按空格键可以向后移动一页;,按,Ctrl+B,或,b,键显示上一屏内容,;按,Q,键退出。,3,cp,命令,cp,命令用于复制文件或目录,它相当于,DOS,中的,copy,命令。,cp,命令的格式:,cp,选项,源文件或目录 目标文件或目录,该命令把指定的源文件复制到目标文件,或者把指定目录下的多个文件复制到目标目录中。如果指定的目标文件名存在,用,cp,命令拷贝文件后,默认情况下这个文件就会被新文件覆盖。,4,pwd,命令,pwd,命令用于显示当前所处目录。,pwd,命令的格式:,pwd,此命令不带任何参数,用于显示当前目录的绝对路径。,5,ls,命令,ls,命令用于查看目录的内容。,ls,命令的格式:,ls,选项,目录或文件,该命令列出指定目录的内容,默认情况下,输出条目按字母顺序排列。,6,cd,命令,cd,命令用于更改目录。,cd,命令的格式:,cd,目录名,该命令将当前目录改变至指定的目录。若没有指定的目录,则回到用户的个人目录。该命令要求用户必须拥有对指定目录的执行和读权限。要进入上一级目录,直接执行,”,cd.,”,命令即可。,7,mkdir,命令,mkdir,命令用于创建目录。,mkdir,命令的格式:,mkdir,选项,目录名,该命令创建目录时,要求创建目录的用户在当前目录中具有写权限,并且所创建的目录名不是当前目录下已有的目录或文件名。,8,rmdir,命令,rmdir,命令用于删除空的目录。,rmdir,命令的格式:,rmdir,选项,目录名,该命令从当前目录下删除一个或多个子目录,被删除的目录必须是空目录。,9,rm,命令,rm,命令用于删除文件或目录。,rm,命令的格式:,rm,选项,文件名或目录名,该命令删除一个或多个文件(目录),它可以将某个目录及其下的所有文件和子目录均删除。如要删除目录必须加上参数,“,-r,”,,否则只删除文件而不删除目录。,10,mv,命令,mv,命令用于移动或更名现有的文件或目录。,mv,命令的格式:,mv,选项,源文件或目录 目标文件或目录,该命令根据第二个参数的类型是文件或者目录来选择是执行重命名还是移动操作。当第二个参数是文件时,执行重命名操作,此时,源文件或目录只有一个;当第二个参数是已存在的目录时,源文件或目录可以有多个,执行移动操作。,11,grep,、,fgrep,和,egrep,命令,这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。,grep,命令一次只能搜索一个指定的模式;,egrep,命令检索扩展的正则表达式(包括表达式组和可选项);,fgrep,命令检索固定字符串,它不识别正则表达式,是快速搜索命令。,语法:,grep,选项,查找模式,文件名,1,,文件名,2,,,egrep,选项,查找模式,文件名,1,,文件名,2,,,fgrep,选项,查找模式,文件名,1,,文件名,2,,,12,find,功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。,语法:,find,起始目录 寻找条件 操作,13,locate,命令,locate,命令用于查找文件,它比,find,命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(,crontab,)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。,该命令的一般形式为:,locate,相关字,14,wc,命令,wc,命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。,语法:,wc,选项,文件,说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。,wc,同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。,该命令各选项含义如下:,-c,统计字节数。,-l,统计行数。,-w,统计字数。,15,ln,命令,该命令在文件之间创建链接。,语法:,ln,选项,目标,链接名,ln,选项,目标 目录,16,sort,命令,sort,命令的功能是对文件中的各行进行排序。实际上,,sort,命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。,语法:,sort,选项,文件,17,uniq,命令,文件经过处理后在它的输出文件中可能会出现重复的行。这时可以使用,uniq,命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。,语法:,uniq,选项,文件,18,修改文件权限,文件或目录的访问权限分为只读,只写和可执行三种。用户也可根据需要把访问权限设置为需要的任何组合。,有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户、其他用户。,用户可以利用,Linux,系统提供的,chmod,命令来重新设定不同的访问权限。也可以利用,chown,命令来更改某个文件或目录的所有者。利用,chgrp,命令来更改某个文件或目录的用户组。,19,comm,命令,命令功能是可以用来比较两个文件内容的差别。但只对两个有序的文件进行比较,排序可以使用,sort,命令。,语法:,comm-123 file1 file2,2.2.3,进程管理命令,1,进程及作业的概念,Linux,系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。,Linux,操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。,交互进程,由一个,shell,启动的进程。交互进程既可以在前台运行,也可以在后台运行。,批处理进程,这种进程和终端没有联系,是一个进程序列。,监控进程(也称守护进程),Linux,系统启动时启动的进程,并在后台运行。,2,启动进程,启动一个进程有两个主要途径:手工启动和调度启动。,(,1,)手工启动,由用户输入命令,直接启动一个进程便是手工启动进程。但手工启动进程又可以分为很多种,根据启动的进程类型不同、性质不同,实际结果也不一样。,(,2,)调度启动,有时候需要对系统进行一些比较费时而且占用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。,3,进程控制命令,(,1,),who,命令,该命令主要用于查看当前在线上的用户情况。,(,2,),w,命令,该命令也用于显示登录到系统的用户情况,但是与,who,不同的是,,w,命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,(,3,),ps,命令,ps,命令用于查看,Linux,系统的进程状态。,(,4,),top,命令,top,命令和,ps,命令的基本作用是相同的,显示系统当前的进程和其他状况;但是,top,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。,(,5,),kill,命令,当需要中断一个前台进程的时候,通常是使用,Ctrl+C,组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于,kill,命令。该命令可以终止后台进程。,2.2.4,文件压缩命令,1,gzip,命令,gzip,命令用于对文件进行压缩和解压缩。,一般格式为:,gzip,选项,压缩文件名,/,解压缩文件名,2,unzip,命令,unzip,命令用于解压,winzip,格式的压缩文件。,一般格式为:,unzip,选项,压缩文件名,.zip,3,tar,命令,tar,命令主要对文件和目录进行打包。,一般格式为:,tar,选项,文件或目录名,2.2.5,网络命令,1,ping,命令,ping,命令用于测试本机与目标主机是否连通。,一般格式为:,ping,选项,主机名(,IP,地址),该命令使用,ICMP,传输协议,发出要求回应的信息,若目标主机的网络功能没问题,就会回应该信息,因而得知和目标主机的连接正常。,2,ifconfig,命令,ifconfig,命令用于显示或设置网络设备。,一般格式为:,ifconfig,网卡号,选项,IP,地址,该命令可设置网络设备的状态,或是显示当前网络状态。,3,netstat,命令,netstat,命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。,一般格式为:,netstat,选项,4,traceroute,命令,traceroute,命令用于显示本机到目标主机的路由路径。,一般格式为:,traceroute,目标主机名或,IP,地址,5,finger,命令,finger,命令用于显示主机系统中用户的信息。,一般格式为:,finger,选项,账号名称,单独执行,finger,命令,它会显示本地主机所有用户的登录信息,包括账号名称、真实姓名、登录的终端、空闲时间、登录时间以及地址和电话。,2.2.6,联机帮助命令,1,man,命令,man,命令用于显示某一命令的帮助手册。,一般格式为:,man,选项,命令名,2,help,命令,help,命令用于查看所有,shell,命令的帮助信息。,一般格式为:,help,命令名,2.2.7,操作要点,1,Linux,是大小写敏感的系统。,2,文件名最多可以有,256,个字符,可以包含数字,点号,”,.,”,,下划线,”,_,”,,横杆,”,-,”,,加上其他一些不被建议使用的字符。,3,文件名前面带,”,.,”,的文件在输入,”,ls,”,或者,”,dir,”,命令时一般不显示。可以把这些文件看作是隐含文件,可以使用命令,”,ls,a,”,来显示这些文件。,4,“,/,”,对等于,DOS,下的,”,”,(,根目录,意味着所有其他目录的父目录,或者是在目录之间和目录和文件之间的一个间隔符号,),5,在,Linux,系统下,所有的目录显示在单一目录树下(有别于,DOS,系统的驱动器标识)。,6,在配置文件里,以,#,打头的行是注释行。,7,Linux,是继承性的多用户操作系统。,8,整个系统范围的设定一般放在目录,/etc,下。,9,和其他的多用户操作系统类似,在,Linux,下,文件和目录有自己的拥有者和访问权限。,10,命令参数选项一般由,”,-,”,引导,后面跟一个字符(或者,”,-,“,当选项超过一个字符时)。举个例子,输入命令,rm-help,。,2.3 Linux,启动过程详解,启动,GRUB/LILO,GRUB(GRand Unified Bootloader),是一个将引导装载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来装载一个,GRUB,菜单或是,GRUB,的命令环境。,目前 GRUB 分成 GRUB,legacy(以前称GRUB)和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB legacy,从 1.x 开始的就称为 GRUB 2,。,LILO(Linux Loader),是一个优秀的开机启动管理程序,它的最大的好处就是独立于文件系统,可以启动各种操作系统:从,Microsoft,、,OS/2,、,SCO Unix,、,Unixware,、,PC-DOS,到,Linux,等等。,2,加载内核,内核映像是一个压缩过的内核映像。在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压,然后将其放入内存中。该例程会调用内核,并开始启动内核引导的过程。,执行,init,进程,init,进程,(Sysv init启动系统),是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载,init,程序,它的进程号是,1,。,4,通过,/etc/inittab,文件进行初始化,init,的工作是根据,/etc/inittab,来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等等,2.4 Linux,系统服务,系统服务的作用,Linux,系统服务主要有以下作用:,(,1,)启动、停止、暂停、恢复或禁用远程和本地计算机服务。,(,2,)管理本地和远程计算机上的服务。,(,3,)设置服务失败时的故障恢复操作。,(,4,)为特定的硬件配置文件启用或禁用服务。,(,5,)查看每个服务的状态和描述。,2 Linux,系统服务,Linux,在启动时要启动很多系统服务,它们向本地和网络用户提供了,Linux,的系统功能接口,直接面向应用程序和用户。,2.5,系统安全性,1,系统管理员安全,安全管理主要分为四个方面:,防止未授权存取,防止泄密,防止用户拒绝系统的管理,防止丢失信息,2,文件系统安全,文件系统概述,设备文件,/etc/mknod,命令,安装和拆卸文件系统,系统目录和文件,/etc/passwd,文件,/etc/passwd,文件是,Linux,安全的关键文件之一。该文件用于用户登录时校验用户的口令,当然应当仅对,root,可写。文件中每行的一般格式为:,LOGNAM,:,PASSWORD,:,UID,:,GID,:,USERINFO,:,HOME,:,SHELL,4 /etc/group,文件,/etc/group,文件含有关于小组的信息,,/etc/passwd,中的每个,G I D,在本文件中应当有相应的入口项,入口项中列出了小组名和小组中的用户。这样可方便地了解每个小组的用户,否则必须根据,GID,在,/etc/passwd,文件中从头至尾地寻找同组用户。,增加和删除用户,增加用户有三个过程:,在,/etc/passwd,文件中写入新用户的入口项。,为新登录用户建立一个,HOME,目录。,在,/etc/group,中为新用户增加一个入口项。,6,系统检查命令,(,1,),du,报告在层次目录结构(当前工作目录或指定目录起)中各目录占用的磁盘块数。,(,2,),df,报告整个文件系统当前的空间使用情况。(,3,),ps,检查当前系统中正在运行的所有进程。对于用了大量,CPU,时间的进程、同时运行了许多进程的用户、运行了很长时间但用了很少,CPU,时间的用户进程应当深入检查。还可以查出运行了一个无限循环的后台进程的用户,未注销帐户就关闭终端的用户(一般发生在直接连线的终端)。,(,4,),who,可以告诉系统管理员系统中工作的进展情况等等许多信息,检查用户的登录时间,登录终端。,(,5,),su,每当用户试图使用,su,命令进入系统用户时,命令将在,/usr/adm/sulog,文件中写一条信息。,(,6,),login,在一些系统中,,login,程序记录了无效的登录企图,Linux,基础及应用,第,3,章,Linux,下的,C,编程基础,3.1 Linux,下,C,语言编程概述,3.1.1 C,语言简单回顾,C,语言的特点:,(,1,)简洁紧凑、灵活方便,(,2,)运算符丰富,(,3,)数据结构丰富,(,4,),C,是结构式语言,(,5,),C,语法限制不太严格,程序设计自由度大,(,6,),C,语言允许直接访问物理地址,可以直接对硬件进行操作,(,7,),C,语言程序生成代码质量高,程序执行效率高,(,8,),C,语言适用范围大,可移植性好,3.1.2 Linux,下,C,语言编程环境概述,(,1,)编辑器,Linux,下的编辑器就如,Windows,下的,word,、记事本等一样,完成对所录入文字的编辑功能。,Linux,中最常用的编辑器有,Vi,(,Vim,)和,Emacs,,它们功能强大,使用方便,广受编程爱好者的喜爱。,(,2,)编译器,编译是指源代码转化生成可执行代码的过程。可见,在编译过程是非常复杂的,它包括词法、语法和语义的分析、中间代码的生成和优化、符号表的管理和出错处理等。在,Linux,中,最常用的编译器是,Gcc,编译器。,(,3,)调试器,Gdb,是绝大多数,Linux,开发人员所使用的调试器,它可以方便地设置断点、单步跟踪等,足以满足开发人员的需要。,(,4,)项目管理器,Linux,中的项目管理器,“,Make,”,有些类似于,Windows,中,Visual C+,里的,“,工程,”,,它是一种控制编译或者重复编译软件的工具。,3.2 vi,编辑器,3.2.1 vi,的工作模式,1,命令模式,当用户启动,vi,后,,vi,就处于命令模式。此时输入的任何字符都被当作编辑命令。如,i,表示插入命令、,r,表示替换命令等。不管在什么时候,只要按一下,Esc,键,,vi,就会回到命令模式。,2,插入模式,在命令模式下,按字母,i,、,a,、,o,、,r,等命令就可以切换到插入模式。,3,末行模式,在插入模式下,按,Esc,键回到命令模式,再按冒号(:)键,就会转换到末行模式,此时光标停留在状态行上,并等待用户输入所需的末行模式的命令。用户可以用它来保存文件、装入另外的文件或退出,vi,。,3.2.2 vi,的启动和退出,1,启动,vi,在系统提示符下输入,vi,及文件名称后,就进入,vi,全屏幕编辑界面。,2,退出,vi,当编辑完文件后,准备返回到,shell,状态时,需执行退出,vi,的命令。在命令行模式下,按一下冒号(:)键进入末行模式。,(,1,),:wq,保存文件内容并退出编辑器,回到,shell,状态。,(,2,),:q!,不保存内容强制退出,vi,。,(,3,),:ZZ,仅当编辑的内容做过修改时,才将将缓冲区的内容保存到文件。,(,4,),:x,与,:ZZ,功能相同。,3.2.3,文本输入,1,插入命令,(,1,),i,在,i,命令之后输入的内容都插在光标位置之前,光标后的文本相应向后移动。如按,Enter,键,就插入新的一行或者换行。,(,2,),I,输入,I,命令后,光标移动到该行的行首,输入相应文本则插入到行首相应位置。,2,附加命令,(,1,),a,在,a,命令之后输入的内容都插在光标位置之后。,(,2,),A,输入,A,命令后,光标移动到该行的行尾,输入相应文本则插入到行尾相应位置。,3,打开命令,(,1,),o,在光标所在行的下面新开辟一行,输入的文本就插入该行。,(,2,),O,在光标所在行的上面新开辟一行,输入的文本就插入该行。,4,移动光标,3.2.4,文本修改,删除与替换,(,1,)删除,在插入模式下,用,Backspace,键来删除前面的字符,还可以用,Delete,键来删除当前字符。,也可在,vi,的命令模式下用一些命令来删除一个字符、一个单词或者整行内容等,(,2,)替换,在,vi,的命令模式下还提供了一些命令来替换字符、单词或者进行整行替换,2.,复制、粘贴和剪切,(,1,)复制,在,vi,编辑器中复制的方式有两种:鼠标方式和命令方式。鼠标方式同,windows,操作系统的复制操作类似,,vi,提供的复制命令见表,(,2,)粘贴,与复制一样,,vi,编辑器中粘贴的方式也有两种,且不同的复制方式对应不同的粘贴方式。,粘贴方式同,windows,操作系统的粘贴操作类似,,vi,提供的粘贴命令很简单,有以下两种形式。,1,),p,:在当前光标后面粘贴。,2,),P,:在当前光标前面粘贴。,(,3,)剪切,在,vi,编辑器中,所有的删除命令也是剪切命令,因为删除的内容都被送到剪贴板中。,如果用户用剪切命令剪切,可将剪切的内容使用粘贴命令粘贴。,3.,撤销,使用撤销命令可撤销用户最后一次的操作。撤销命令很简单,有以下两种形式。,u:,取消上次的操作,U:,可以恢复对光标所在行的所有改变。,4.,查找,vi,提供字符串查找功能,包括向前查找、向后查找、继续上一次查找等。当,vi,向前查找,从光标当前位置向前查找,当找到文本的开头时,它就到文本的末尾继续查找;当,vi,向后查找,从光标当前位置向后查找,当找到文本的最后时,它就到文本的开头继续查找。,3.2.5,文件操作,打开文件,(,1,)打开一个文件,在命令模式下,使用命令:,vi file,。其中,file,是指定路径的文件,如果没有指定路径,就默认为当前目录。,例如,输入,vi test,就可以打开当前目录下的,test,文件,此时按字母,i,或,a,就可以切换到插入模式进行文本输入。,(,2,)打开多个文件,vi,能一次打开多个文件,使用命令:,vi file1 file2,。其中,file1,file2,是指定路径的两个文件,如果没有指定路径,就默认为当前目录。,例如,输入,vi test main.c,就可以打开当前目录下的,test,、,main.c,文件。,2.,保存文件,(,1,),:w,将缓冲区的内容保存到当前文件中。,(,2,),:w file,将缓冲区的内容保存到名为,file,的文件中。如果用户另存为的,file,文件已经存在,则使用该命令保存时状态行会出现,“,File exists,(,add!to override,),”,的提示,即需使用,“,:w!file,”,命令来强制覆盖。,(,3,),:w!file,强制将缓冲区的内容保存到名为,file,的文件中。,3.3 Emacs,3.3.1 Emacs,的基本操作,1,启动,Emacs,在系统提示符下直接输入,emacs,命令,则进入,emacs,的欢迎界面,2,使用,Emacs,(,1,)复制、剪切和粘贴,(,2,)查找文本,(,3,)移动光标,(,4,)打开、保存和退出文件,3.3.2 Emacs,的编译概述,Emacs,不仅仅是个强大的编译器,它还是一个集编译、调试等于一体的工作环境。,1,Emacs,中的模式,Emacs,中并没有像,Vi,中那样的,“,命令行,”,、,“,编辑,”,模式,只有一种编辑模式。,Emacs,的,“,模式,”,,是指,Emacs,里的各种辅助环境。,2,Emacs,编译调试程序,Emacs,默认的编辑命令是对一个,make,的调用。用户可以打开,“,tool,”,下的,“,Compile,”,进行查看。,Emacs,可以支持大量的工程项目,以方便程序员的开发。,另外,,Emacs,为,Gdb,调试器提供了一个功能齐全的接口。在,Emacs,中使用,Gdb,的时候,程序员不仅能够获得,Gdb,用其他任何方式运行时所具有的全部标准特性,还可以通过接口增强而获得的其他性能。,3.4 Gcc,编译器,3.4.1 Gcc,简介,GCC,是,GNU,公社的一个项目,是一个用于编程开发的自由编译器。,Gcc,编译器能将,C,、,C+,语言源程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,,Gcc,将生成一个名为,a.out,的文件。,3.4.2 Gcc,的基本用法和选项,Gcc,最基本的用法是:,gcc,选项,文件名,常用的选项如下:,-c,:只编译,不连接成为可执行文件,编译器只是由输入的,.c,等源代码文件生成,.o,为后缀的目标文件,通常用于编译不包含主程序的子程序文件。,-o output_filename,:确定输出文件的名称为,output_filename,,同时这个名称不能和源文件同名。如果不给出这个选项,,gcc,就给出预设的可执行文件,a.out,。,-E:预处理后即停止,不进行编译、汇编及连接,。,-g,:产生符号调试工具(,GNU,的,gdb,)所必要的符号信息,要想对源代码进行调试,必须加入这个选项。,-O,:对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。,3.4.3,编译多个源文件,许多重要的程序都是由多个源代码文件组成,并且执行最后的链接之前,各个源文件都必须编译成目标文件。为此,要向,gcc,传递要编译的每个源代码文件名。可以使用如下,gcc,命令来编译多个源文件:,rootlocalhost root#gcc file1.c file2.c file3.c,o program,gcc,将创建,file1.o,、,file2.o,和,file3.o,,然后把它们链接在一起创建,program,目标文件,3.5 Gdb,调试器,GDB,四个方面的功能:,(,1,)启动程序,可以按照自定义的要求随心所欲的运行程序。,(,2,)可让被调试的程序在所指定断点处停住。,(,3,)当程序被停住时,可以检查此时程序中所发生的事。,(,4,)动态的改变程序的执行环境。,3.5.1,启动,Gdb,启动,GDB,的方法有以下几种:,(,1,),gdb program,program,也就是执行文件,一般在当前目录下。,(,2,),gdb core,用,gdb,同时调试一个运行程序和,core,文件,,core,是程序非法执行,core dump,后产生的文件。,(,3,),gdb pid,如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程,ID,,,gdb,会自动进行调试。,3.5.2,设置断点,Gdb,中使用,break,命令来设置断点,该命令有如下四种形式:,break line-number,:使程序恰好在执行给定行之前停止。,break function-name,:使程序恰好在进入指定的函数之前停止。,break line-or-function if condition,:如果,condition,(条件)是真,程序到达指定行或函数时停止。,break routine-name,:在指定例程的入口处设置断点,3.6 Make,工程管理器,Make,工程管理器也是个,“,自动编译管理器,”,,这里的,“,自动,”,是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入,Makefile,文件的内容来执行大量的编译工作。,3.6.1 Makefile,基本概
展开阅读全文