




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux程序设计内容Linux程序设计根底Shell程序设计Linux文件与内存管理Linux进程管理Linux网络程序设计Linux数据库编程课时及成绩评定总共40学时讲课28学时实验12学时平时:50%(考勤+实验)期末:50%(卷考或机考或大作业)使用教材参考书目鸟哥的Linux私房菜〔两本:根底篇和应用效劳器篇〕科学出版社Linux应用程序开发〔第二版〕LinuxapplicationdevelopmentMichaelK.Jonhenson著武延军郭松柳
LinuxC/C++入门与进阶科学出版社第1章Linux程序设计根底Linux操作系统概述Shell命令GNUC开发环境Unix/Linux的开展Unix-likeOSsUNIXTTSVersion1..10KenThompsonDennisRitchieSystemIII,VHP-UX11v2AIX(IBM)5.3UnixWare(Univel/SCO)7.14IRIX(SGI)6.5.30SystemIII&VFamilyBSD(BerkeleySoftwareDistribution)1970198019902000timeSunOS(Stanford)Solaris(SUN)10Mach(CMU)FreeBSD7.0NetBSD4.0OpenBSD4.2NextStepMacOS10.4.6XenixOS(MS/SCO)GNUProjectLinux2.6.**MinixBSDFamilyBillJoyRichardStallmanLinuxTorvalsUnix的产生与开展1968年,由通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名为Multics的操作系统,使用户可通过线接入远程终端,对随后的操作系统,特别是Unix的成功有着巨大的影响。1969-1970年,AT&T的贝尔实验室研究人员KenTompson和DennisRitchie在Multics根底上用C语言开发出Unix系统。当时,AT&T公司以低廉的价格甚至免费将Unix源码授权给学术机构用于研究和教学。Unix的产生与开展贝尔实验室AT&T从1983年发行了第一个商业版本,名systemⅢ,后来被具有良好商用软件支持的SystemⅤ所替代。1978年伯克利大学在第六版本的根底上进行了修改,增加了新的功能,发布了BSD。形成了SystemV和BSD两大系列。Systemv系列名称厂家基于的版本AIXInternationalBussinessMachinesAT&TSystemVIrixSiliconGraphicsAT&TSystemVSolarisSunMicrosystemsAT&TSystemVUnicosCrayAT&TSystemVUnixWareNovellAT&TSystemVXENIXMicrosoftAT&TSystemIIIBSD系列名称提供者DynixSequentSunOSSunMicrosystemsUltrixDigitalEquipmentCorporationFreeBSD支持intel、AMD和SunUltraSPARC,基于4.4BSD-Lite架构NetBSD支持Alpha,DraCo和Shark等多种硬件,基于4.3BSDLite架构OpenBSD衍生自NetBSD,支持DECAlpha和Intel等多种硬件UNIX的相关标准ANSIC/ISOC:C语言的相关语法和语义标准,以及一个标准库,包括字符类型,错误码和标准IO等。POSIX:Portableoperatingsysteminterfaceforcomputingsystems.标准了操作系统的应用编程接口,使应用程序源代码移植到多种UNIX操作系统。SVID:是SYSTEMV的标准,是POSIX的超集。GNU与GPL/LGPL
GNU:(1983)旨在消除对计算机软件拷贝、分发、修改的限制。GNU的目的是开发一个自由的类Unix的完整操作系统,任何人可自由使用、学习、复制、修改和发布。到1990年,emacs,gcc,glibc,bash等。GPL:GNUGeneralPublicLicense,通用公共许可证,协议规定用户可自由使用、复制、修改和发布自由软件,协议要求在对软件进行修改后,如果要再次发布,需将已修改的局部同时发布出来。许可证协议LGPL:LesserGeneralPublicLicense,放宽了GPL,允许源代码以链接库的形式提供给商业开发。BSD:BERKEYSOFTWAREDISTRIBUTION,更灵活的开源协议,但要两个条件〔1〕复制权必需被保存〔2〕在没有原作者允许的情况下,软件不能进行商业应用。Linux的诞生1987年荷兰籍的AndrewTanenbaum开发出基于PC机的类UNIX操作系统Minix,采用C和汇编写成。相关源码可以下载。Linux由芬兰赫尔辛基大学的LinusTorvalds创立LINUX0.01内核。1991年10月,Linux第一个公开版0.02版发布1994年3月,Linux1.0版发布。Linus的标志是可爱的企鹅,取自芬兰的桔祥物Linux的开展Linux赢得了大型数据库软件公司支持。IBM大型机全面预装Linux操作系统,HP、SUN公司也将推出自己的桌面发行版本。全球巨型机中,有相当一局部使用Linux操作系统。Linux版本号的命名规那么Linux的内核版本由3局部组成主版本号次版本号末版本号主版本号次版本号末版本号发行版本号Linux内核的两种版本号
版本号的第二位数字,可以确定Linux内核版本的类型开发版本:第二位数字是奇数稳定版本:第二位数字是偶数奇数偶数Linux系统Linux系统由Linux内核和一系列GNU库及程序组成。从内向外依次分为:内核、运行库\系统程序、shell、实用工具程序四个层次,见图1-2。外层向内层提出相关请求,递归调用到内核完成外部硬件管理或计算命令,然后将结果逐级返回到外部调用程序。Linux系统结构著名的Linux的发行版本
Linux发行版特点网址RedHat易用,易维护,专业,应用广泛Debian非商业组织维护,功能强大Mandrake容易安装与使用Novell/SuSE欧洲大陆的LinuxUbuntu易于使用,版本更新快/GentooLinux使用了由RHEL提供的源码资源/Linux系统的商业运营模式1.多种产品线2.技术效劳型3.软、硬件一体化4.附属品Shell命令内容提要Shell命令概述目录和文件操作用户和用户组管理文件的权限管理进程管理Linux的备份与恢复Linux应用软件包管理输入输出重定向和管道元字符与正那么表达式Shell命令概述文件的路径1.用户主目录2.当前目录3.绝对路径4.相对路径目录的组织结构根目录:用“/〞表示当前目录:用“.〞表示父目录:用“..〞表示目录的组织结构反斜杠的使用规那么用户主目录:登录到系统后的目录/home/username绝对路径:/usr/src/linux-2.6相对路径:../usr/src/linux-2.6目录的组织结构Linux根文件系统目录结构目录名内容描述/bin所有用户可使用的可执行文件/sbin系统管理员使用的执行文件/boot Linux内核映像文件和与引导加载有关的文件/dev所有设备文件,包括字符设备和块设备/etc系统配置文件/lib共享库文件,供/bin和/sbin下的文件使用/mnt挂载点,常用于挂载文件系统/proc基于内存的文件系统,用于显示内核信息。/usr/usr/bin用户命令工具/usr/includeC头文件/usr/lib函数库/usr/src/源代码目录/usr/sbin系统命令工具Linux命令的语法结构$命令名[选项][参数列表]$为提示符,提示符可通过环境变量重新设置命令名代表命令的名称选项表示用户对功能的特定要求,
-f和-zxvf为短选项格式,
--filesize=512为长选项格式;参数列表表示要操作的对象列表,对象可以是文件、目录、用户和用户组等,对象的性质由命令决定。Shell命令分类1.内部命令内部命令由Shell实现,具有较高的执行效率,运行于当前进程;可通过命令type判断是否为外部命令。例如:$type-tls#判断命令ls是否为内部命令2.外部命令外部命令是指存储于文件系统中的可执行二进制映像文件,Shell通过创立子进程,在子进程中加载并执行外部命令。可通过file命令查看外部命令的信息。例如:$filecp#查看外部命令cp的相关信息$ls-l/home命令提示符命令字命令选项命令组成局部间用空格进行分隔命令参数命令格式举例使用man命令阅读手册页$manls使用info命令阅读信息页$infols$ls--help获得命令帮助目录和文件操作目录操作命令lspwdcdmkdirrmdir文件操作命令filetouchcprmmvfind文本文件查看命令catmorelessheadtail文件、目录操作命令命令功能ls显示指定目录和文件的信息pwd显示当前目录名称cd进入指定的目录mkdir创建指定名称的目录rmdir删除指定名称的目录目录操作命令列目录$ls$ls-l显示当前目录名称$pwd更改当前目录$cd/etc$cd../bin建立和删除目录$mkdirmydir$rmdirmydir目录命令实例命令功能file显示指定文件的类型touch建立指定名称的文件或更新文件时间cp复制文件或目录rm删除文件或目录mv移动文件或目录,文件或目录重命名find在指定目录查找符合条件的文件文件操作命令检测文件类型$file/etc/passwd建立空文件$touchtfile文件查找按文件名进行查找$find.-namefile*按文件属主进行查找$find.-userteacher复制和删除文件$cpfileafileb$rmfilea文件移动与重命名$mvfileafileb$mvfileadira/文件命令实例命令功能cat显示文本文件内容more分页显示文本文件内容less分页显示文本文件内容,并可方便反复浏览head显示文件首部内容tail显示文件尾部内容文本文件查看命令显示文本$cat/etc/passwd分页显示文本$more/etc/passwd分页文本浏览$less/etc/passwd显示文件首$head-5/etc/passwd显示文件尾$tail-5/etc/passwd文本查看实例链接文件硬链接和软链接硬链接:文件系统中的每一个文件都有它自己的i-结点,每个i-结点都保存了一个文件的属性和它在硬盘上的位置,当两个不同的文件名代表同一个文件的时候,就可以建立一个硬链接,硬链接文件和原始文件具有同样的i-结点,,每当建立一个硬链接,“链接计数器〞增加一个值。不同分区上的两个文件之间不能建立硬链接,这是因为硬链接是通过i-结点向原始文件的,而文件i-结点在不同的文件系统中可能会不同。例如:Lnexamole1examole2软链接又叫符号链接,与通过i-结点指向某个文件的硬链接不一样,符号链接是通过文件名指向另外一个文件的.这就允许符号链接指向定位于其他分区,甚至是其他网络硬盘的某个文件.例如:Ln-sexample1example2用户和用户组管理在Linux系统中,所有用户都有一个唯一的标识UID,从用户的角度,每个用户都有一个名字,例如:超级用户rootLinux系统为了方便用户使用,在用户名和UID之间建立一对一的关系。用户和用户组管理Linux系统将用户分为超级用户、虚拟用户和普通用户。超级用户:超级用户一般用于系统管理,可不加限制地使用系统资源,具有所有权限,用户名为root,UID为0。2.虚拟用户:与超级用户不同,虚拟用户是一种受限用户,为满足系统进程对文件资源的访问控制而建立,虚拟用户不能用来登录。例如,bin、daemon、adm和lp等都是虚拟用户,用户UID一般为1~499。3.普通用户:与虚拟用户一样,普通用户也是受限用户,建立普通用户的目的是为了让使用者登录系统,分享Linux系统的软硬件资源,用户的UID在500~60000之间。用户和用户组管理用户组是由假设干相关用户构成的集合,属于该组的用户对某些文件具有相同的存取权限一个用户组可包含多个用户,一个用户也可属于多个用户组,在这多个用户组中,必须有一个是主用户组,其他那么为附加用户组。创立文件的用户成为该文件的属主用户,该用户的主用户组那么成为该文件的属组,每个文件的属主用户和属组是唯一的。命令功能adduser添加用户帐号passwd设置(更改)用户登录口令userdel删除用户帐号(及宿主目录)usermod设置用户属性用户管理命令建立用户帐号#adduserst01设置用户口令#passwdst01设置用户帐号属性锁定用户帐号禁止登录#usermod-Lst01删除用户帐号#userdel-rst01用户帐号管理用户帐号信息保存在passwd文件中/etc/passwd用户的加密口令保存在shadow文件中/etc/shadow保存用户组信息/etc/group用户username的用户主目录/home/username用户帐号相关文件和目录命令功能groupadd添加指定名称的用户组帐号groupdel删除指定名称的用户组帐号文件功能/etc/group保存用户组帐号信息用户组管理命令及文件添加用户组#groupaddclass1在建立用户时指定用户组#adduser-gclass1st03更改用户的组帐号#usermod-gclass1st01删除用户组#groupdelclass1用户组帐号管理文件权限管理文件权限管理通过ls命令,并配合-l选项可实现对文件属性的查询,ls-l如图2-2所示。其中,第1个字符用于表示文件类型,第2至10共9个字符表示文件的操作权限,连接数表示文件被引用的次数,用户名和用户组名分别代表文件所属的用户和组,文件权限的显示文件类型前缀类型前缀类型—普通文件l链接(link)文件b块(block)设备文件p命名管道(pipe)文件c字符(character)设备文件s本地套接口(socket)d目录(directory)权限管理文件三种访问权限字符含义八进制表示rread:读,可以显示该文件的内容22=4wwrite:写,可以编辑或删除它21=2xexcute:执行,如果是程序的话20=1-rwxrw-r-xugo类型一个文件由1个类型和9个权限位来描述,9个权限位分为3组,每组3个权限位,具体表示如下所示:u:user,文件的属主g:group,文件的属主所在的组,属组o:other,其他的用户a:all,以上三种人权限的定义权限项读写执行读写执行读写执行字符表示r(w)xx)rwxrwx数字表示421421421权限分配文件所有者文件所属组用户其他用户文件与目录的权限权限文件目录r(读)查看文件内容浏览目录内容w(写)修改文件内容在目录中创建文件或目录x(执行)将文件投入运行进入目录扩展权限的定义(1)Set-user-ID位(2)Set-group-ID(3)Sticky位扩展权限的显示权限
特殊位的含义-rwSr--r--SUID被设置,但所属用户的执行权没被设置-rwsr-xr-xSUID和所属用户的执行权被设置-rw-r-Sr--SGID被设置,但所属用户组的执行权没被设置-rwxr-sr-xSGID和所属用户组的执行权被设置drwxrw-r-TSticky位被设置,但其他用户的执行权没被设置drwxrw-r-tSticky位和其他用户的执行权被设置权限的修改chmod命令语法一语法chmod[ugoa][+-=][rwxst]文件列表语法二chmod八进制权限值文件列表功能更改文件的访问权限chmod命令选项选项功能选项功能a所有用户=赋值权限u属主用户r读权限g属主用户组w写权限o其他用户x执行权限+添加权限sSUID位/SGID位-删除权限tSticky位实例分析假设文件demo的初始权限为"rwxrwxrwx",$chmoda-xdemo #结果为rw-rw-rw- $chmodgo-wdemo #结果为rw-r--r-- $chmodg+wdemo #结果为rw-rw-r-- $chmoda=demo #结果为--------- $chmod+tdemo #结果为--------T $chmodu+sdemo #结果为--S-----T $chmodu+rxdemo #结果为r-s-----T $chmodg+rwsdemo #结果为r-srwS-T $chmodu-sdemo #结果为r-SrwS-T 实例分析$chmod666demo #结果为rw-rw-rw-$chmod644demo #结果为rw-r--r--$chmod700demo #结果为rwx------$chmod4666demo #结果为rwSrw-rw-$chmod1111demo #结果为--x-x--t权限掩码umask是进程的一个属性,目的是为进程创立的文件或目录定义默认权限,它是进程运行环境的一局部。
umask命令语法umasknnn功能修改权限掩码。其中,nnn为权限掩码的值,取值范围为0000-0777。权限掩码以掩码值002为例,说明如何根据umask的值计算新建文件或目录的默认权限,002用二进制标识为000000010,共9位,前三位用于控制用户的权限,中间三位用于控制用户组的权限,后三位用于控制其他用户的权限这三组中的三位依次代表读、写和执行三种权限。假设掩码中某位的值为1,那么在创立文件和目录时,相应位的权限被屏蔽,但除了新建文件各组的执行权,也就是说,无论掩码中执行权的值是否为1,创立文件时,各组都不赋予执行权。进程管理进程管理程序是保存在磁盘可执行映像中的机器代码指令和数据的集合。进程可以被认为是执行中的计算机程序。
Linux是多进程操作系统,每个程序启动时,可以创立一个或几个进程,与其他程序创立的进程共同运行在Linux内核空间。
会话概念Linux使用会话和进程组管理多用户进程,当用户在某个终端上登录时,系统创立一个新的会话,以会话ID的形式记录在进程中。同一终端上派生的所有进程通常具有相同的会话ID,但不同终端上派生进程的会话ID不同。一个会话中有一个领头进程和终端相连,负责从终端上接收输入。进程组概念将完成某种作业的相关进程定义为进程组,以进程组ID的形式记录在进程中。同组进程的进程组ID相同,属于不同组的进程拥有不同的进程组ID,一个进程组至少包含一个进程,每个进程组中包含一个领头进程,领头进程的进程ID等于进程组ID,一个终端会话可包含多个进程组,根据进程运行方式的不同,可将进程分为前台进程和后台进程。作业概念前台进程和后台进程都称为作业,当进程在前台运行时,从键盘上按下Ctrl+z,这样可使前台进程挂起。因此,作业有前台、后台和挂起三种状态。Shell可使作业在这三种状态之间迁移。控制终端概念终端用于系统与用户间的交互,键盘作为终端的输入,终端显示器作为终端的输出。当会话的领头进程翻开一个终端之后,该终端就成为会话的控制终端。一个会话只能有一个控制终端,一个控制终端也只能控制一个会话,控制进程属于前台进程组,后台进程组不拥有控制终端。见图2-3会话、进程组和终端的关系命令功能pstree通过树形结构显示进程间的继承关系ps显示当前系统中进程运行情况Kill结束系统进程sleep使当前进程睡眠一段时间bg前台程序调入后台fg后台程序调入前台Shutdown/init0关闭系统进程相关命令pstree命令init─┬─anacron├─apmd├─atd├─bdflush├─crond├─dhclient├─gpm├─kapmd├─keventd├─2*[kjournald]├─klogd├─kscand/DMA├─kscand/HighMem├─kscand/Normal├─ksoftirqd_CPU0├─kswapd├─kupdated├─login───bash───pstree├─mdrecoveryd├─5*[mingetty]├─portmap├─rpc.statd├─2*[sendmail]├─sshd├─syslogd└─xinetdps命令选项含义-a显示终端上的所有进程,包括其他用户的进程-r只显示正在运行的进程-x显示没有控制终端的进程。-u打印用户格式,显示用户名-l长列表方式-e显示所有进程-f全格式-j按作业格式输出语法ps[选项]功能显示系统中进程的状态和属性。ps命令显示字段定义字段名含义USER进程所有者PID进程ID%CPUCPU占用率%MEM内存占用率VSZ进程的内存映像所占的空间RSS进程运行在用户空间中所占的物理字节大小TTY进程执行所在的终端STAT进程的状态START进程开始运行时间TIME进程占有CPU的时间,以分和秒表示COMMAND启动命令的命令行进程状态的定义状态含义S可中断的睡眠状态D不可中断的睡眠状态R正在运行Z僵死状态,进程已终止,但进程描述符存在T停止状态进程的启动手工启动前台启动:直接输入命名启动程序后台启动:在命令后输入“&〞操作符 #cpoldfile/backup/newfile&调度启动at:在指定时刻执行指定的命令序列crontab:周期性执行指定程序改变进程的运行方式把命令程序调到后台 使用bg命令把前台程序调入后台把后台命令调回前台来
使用fg命令把后台进程调入前台调整进程的优先级
使用renice命令调整进程优先级终止进程
使用kill命令中止进程运行关闭系统init0init6shutdown-hnowshutdown+10shutdown-cshutdown-r+10reboot[Ctrl+Alt+Del]Kill命令语法kill[-s信号代码]进程PID功能根据PID向进程发送信号,常用于结束进程。Kill命令$kill-l #列出所有信号$kill-9323 发送信号9(KILL)终止pid为323的进程#kill-9-1223#杀死进程组号为1223中的所有进程$kill-lTERM0#发送信号TERM给当前进程组中的所有进程$kill-9-1#发送信号KILL给所有进程标识大于1的进程Linux的备份与恢复Linux的备份与恢复备份与恢复是一对互逆的数据处理技术,分成三个层次面向文件的备份面向文件系统的备份面向设备的备份面向文件的备份与恢复1.归档归档是将多个文件或目录打包为一个目标文件的过程,该目标文件称为归档文件。这样,便于归档文件在网络上进行传输,便于对归档文件进行管理。2.压缩压缩是通过某种算法将一批数据以更小体积存储的一种技术。有时,为了减少归档文件的体积,配合使用压缩软件,对归档文件进行压缩。这样,可减少归档文件在文件系统中占用的空间,也提高了传输效率。tar命令tar命令语法tar[选项]文件或目录功能将文件或目录归档至存储设备或文件,或将归档文件恢复至目录。tar命令$tar-cf/dev/fd0.#将当前目录下的所有文件归档至软盘$tar-cfbak.tar/home#归档目录/home为bak.tar$tar-czvf/home#将目录/home归档,然后用gzip压缩$tar-xzvf#先用gzip解压,然后复原归档文件参见书上29页gzip命令语法gzip]选项]文件名功能
GNU的压缩程序。只对单个文件进行压缩。$gzipfilename#压缩后文件名变成filename.gz$gzip-dfilename.gz#解压缩文件filename.gzbzip2命令语法bzip2[选项]文件名称功能压缩与解压缩工具$bzip2filename压缩后文件名变为filename.bz2$bzip2-dfilename.bz2#解压缩文件ilename.bzLinux应用软件包管理应用软件包的分类RPM〔RedHatPackageManagement〕RPM是由RedHat公司推出的软件包管理器。RPM软件包的命名packagename_version_arch.rpm,APT〔AdvancedPackageTool)APT是Debian软件包管理工具。APT软件包的命名规那么与RPM相同,只是后缀名为deb。rpm命令
语法rpm[选项]软件包名或文件名功能RPM软件包管理工具,负责安装、升级、查询和卸载RPM软件包。rpm命令选项选项功能选项功能-i安装软件包-a查询所有已安装的软件包-q查询软件包-h显示安装进度-e卸载软件包--v验证软件包-u升级软件包l查询包中的文件列表-f查询包含有文件的软件包i查询详细信息-s显示包含有文件的软件包p查询软件包文件实例分析(1)安装软件包,显示安装进度。$rpm-ivh(2)查询系统中已安装的软件包bash的信息。$rpm-qibash(3)查询指定RPM软件包文件的信息$rpm-qpl(4)删除已安装RPM软件包vim-enhanced。$rpm-evim-enhanced(5)升级软件包软件包的安装目录文件类型安装目录普通执行程序文件/usr/bin服务器执行程序文件和管理程序文件/usr/sbin应用程序配置文件/etc应用程序文档文件/usr/share/doc应用程序手册页文件/usr/share/man输入输出重定向输入输出重定向输入重定向 将本因从标准输入设备接收的数据改变为从其他文件中输入的技术,称为输入重定向输出重定向 将本因从标准输出设备输出的数据改变输出至其他文件的技术,称为输出重定向每个由shell创立的Linux进程都会翻开3个文件用来处理程序的输入输出。文件文件描述符默认设备输入文件:标准输入0键盘输出文件:标准输出1屏幕错误输出文件:标准错误输出2屏幕标准驶入输出设备类别操作符说明输入重定向<输入重定向是将命令中接收输入的途径由默认的键盘更改(重定向)为指定的文件输出重定向>将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上>>将命令执行的结果重定向并追加到指定文件的末尾保存错误重定向2>清空指定文件的内容,并保存标准错误输出的内容到指定文件中2>>向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容输出与错误组合重定向&>将标准输出与错误输出的内容全部重定向到指定文件重定向操作符实例分析将标准输出重定向到文件$ls/etc/>etcdir将标准输出重定向追加到文件$ls/etc/sysconfig/>>etcdir将错误输出重定向到文件$nocmd2>errfile将标准输出和错误输出重定向到文件$lsafilebfile&>errfile管道pipe管道pipe管道是实现进程间通信的方法之一,它将两个进程的标准输入输出相连接,将一个进程的标准输出作为另一个进程的标准输入。根据使用管道的方法,管道可分为无名管道和命名管道。
无名管道语法命令1|命令2|...[命令n]功能将命令1的标准输入作为命令2的标准输入,接着,将命令2的标准输出作为命令3的标准输入,依次类推。$catfile|grep‘pipe’|more命名管道命名管道通过在文件系统建立特殊的命名管道文件,用户通过对命名管道文件的读写,实现进程通信。mkfifo命令语法mkfifo[选项]文件名功能创立命名管道文件命名管道实例分析$mkfifo-m644myfifo#建立权限为644的命名管道文件myfifo$mkfifo-mg-w,o-rwfifo#建立命名管道文件fifo$mkfifoa=rwdemofifo#建立命名管道文件demofifo,权限为666prw-rw-rw-1tomuser0Nov2718:30demofifo$catcore.c>demofifo向命名管道文件中写入core.c$cat<demofifo#从命名管道文件myfifo中读取内容元字符与正那么表达式元字符元字符用于表达某些特定而非自身含义的特殊字符,它定一种匹配字符的模式语言,元字符的定义与语言环境有关,在不同的Shell版本以及一些文本处理程序中对元字符的定义不尽相同。通配符元字符含义?匹配任意一个字符*匹配任意数量的字符[abc]匹配方括号中的任意一个字符[a-z]匹配方括号中表示字符范围内的任意一个字符[!a-z]匹配除了方括号中表示范围内的字符屏蔽元字符的特定含义1.在包含元字符的字符串两边加单引号或双引号。2.在元字符前使用反斜杠“\〞。查找文件名为"ab*cd"的文件$ls"ab*cd"查找文件"abc*def"$lsabc\*def正那么表达式正那么表达式是一个字符模板,用在文本处理程序中,用于搜索匹配的字符。这些文本处理程序包括ed,ex,vi,grep,egrep,sed和awk等。grep命令
语法grep[选项]正那么表达式文本文件列表功能从文本文件中搜索匹配指定正那么表达式的所有行。grep命令支持的常用元字符元字符匹配字符^行首$行尾\char转义后面的字符[^]不匹配方括号中的任意字符\<单词的开始\>单词的结尾()or\(\)标记后面用到的匹配字符|or\| 分组x\{m\}重复"x"字符m次x\{m,\}重复"x"字符至少m次x\{m,n\}重复"x"字符m次到nn次.所有的单个字符实例分析1.在文件textfile中搜索以字符"n"开头的所有行$grep'^n'textfile2.在文件textfile中搜索以".00"结尾的所有行$grep'\.00$'textfile3.在文件textfile中搜索包含数字5,后面紧接字符".",再后面是任意一个字符的所有行$grep'5\..'textfile4.在文件textfile中搜索以字符"w"和"y"开始的所有行$grep'^[wy]'textfileGNUC开发环境内容提要GNUC编译器工程管理工具:GNUmake创立和使用函数库GNUC函数库:glibc编译与链接过程GNUC编译器GNUC编译器GCC概述GCC(GNUCompilerCollection)是GNU下编译器及其相关工具的集合。GCC原名为GNUC语言编译器,因为它原本只能处理C语言,随着GCC的开展,在功能上得到了不断扩展,目前,它具有以下特点:(1)支持多种高级语言(2)支持多种硬件处理器(3)支持多种操作系统平台GNUC编译器gcc命令语法gcc[选项]目标文件源文件功能将C语言编译为目标代码或可执行文件。gcc命令选项选项功能描述Wall打印警告信息g添加调试信息到输出文件Oo0o1o2优化选项,若有多个,则最后一个有效i指定头文件搜索路径,若有多个则从前往后搜索L指定库搜索路径,若有多个,则从前往后搜索D给所编译文件定义一个宏,其值为1l指定引用的库,从当前位置向后搜索static使用静态链接shared使用动态链接E输出预处理后的文件S编译生成的汇编文件(.s)c编译生成的目标文件(.o)o指定输出文件名Wl 告诉gcc/g++传送参数至linkerfPIC告诉gcc创建地址独立的目标文件工程管理工具:GNUmake工程管理工具:GNUmake概念当开发规模较大的软件,需要编译和链接多个目标文件时,用户只需将具体的操作步骤按一定的语法规那么以命令的方式写入文本文件,一般命名为Makefile,此后,用户只需在命令提示符下输入make命令,make工具会根据Makefile文件中的定义自动执行一系列编译和链接工作.当某个文件被修改,make工具只执行依赖于该文件的一系列规那么。Makefile文件的语法结构Makefile文件由一系列规那么构成,每条规那么的语法结构为:目标1目标2...目标n:依赖文件列表<tab>命令1<tab>命令2......<tab>命令n实例分析实例分析#script5-2_makefileappexam:main.oapp.omod.olib.o gcc-oappexammain.oapp.omod.olib.omain.o:main.capp.h gcc-cmain.capp.o:app.capp.h gcc-capp.cmod.o:mod.c gcc-cmod.clib.o:lib.clib.h gcc-clib.cclean: rm-f*.oMakefile中的变量1.自定义变量语法变量名=字符串功能将'字符串'赋给'变量名',在makefile中变量无数据类型。引用:$(变量名)2.环境变量
Make在运行过程中,将环境变量转化为同名同值的make变量,用户也可在Makefile中对这些变量进行重新定义。Makefile中的变量预定义变量名含义默认值AR归档程序arAS汇编器asCCC语言编译器ccCXXC++编译器g++CPP带有标准输出的C语言预处理程序$(CC)–ERM删除文件的命令rm–r3.预定义变量Makefile中的变量变量功能描述$^所有的依赖文件,以空格分开,以出现的先后为序$<第一个依赖文件的名称$?所有的依赖文件,以空格分开,它们的修改日期比目标的创建日期晚$*不包含扩展名的目标文件名称$@目标的完整名称4.自动变量自动变量由make工具预先定义,具有特定的含义,它的值与规那么中的目标和依赖对象有关。实例分析#script5-5_makefileOBJS=main.oapp.omod.olib.oappexam:$(OBJS) $(CC)-o$@$^main.o:main.capp.h $(CC)-c-o$@$<app.o:app.capp.h $(CC)-c-o$@$<mod.o:mod.c $(CC)-c-o$@$<lib.o:lib.clib.h $(CC)-c-o$@$<clean: rm-f*.oMakefile文件中的潜规那么1.隐含规那么GNUmake定义了了内置的隐含规那么,在不给出产生目标的命令时,由make自动添加。例如,demo.o:demo.cmake自动添加以下规那么: $(CC)$(CFLAGS)$(CPPFLAGS)$(TARGET_ARCH)-c$<-o$@Makefile文件中的潜规那么2.后缀规那么后缀规那么定义了将一个具有某个后缀的文件(例如,.c文件)转换为具有另外一种后缀的文件(例如,.o文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑照明设计案例分析
- 中华优传统文化 课件 第一章 中国传统文化概述
- 创建平安年终工作总结
- 2025西安交通大学辅导员考试试题及答案
- 2025辽宁建筑职业学院辅导员考试试题及答案
- 中国美食教案设计
- 2025福建农林大学金山学院辅导员考试试题及答案
- 幼儿园天气主题活动设计
- 江西报业传媒集团有限责任公司招聘笔试题库2025
- 字母ABC基础教学设计
- 2025年软件设计师考试模拟题大全试题及答案
- 和二手车合作协议书
- 商会授权运营协议书
- 石膏砂浆抹灰施工工艺流程及操作要点
- 学习公共关系2025年重要试题及答案
- 2025高考北京卷作文命题趋势分析及范文
- 运维自动化流程设计-全面剖析
- 人工智能AI创业计划书
- 二级注册计量师题库附答案2025
- 南科大的机试题及答案
- 武汉理工大学建筑信息模型(BIM)期末复习题
评论
0/150
提交评论