第四章Linux系统程序设计主要内容:4.1Linux操作系统使用4.2Linux系统常见命令使用方法4.3Linux系统程序设计基础4.4shell程序设计4.5Linux系统下C程序设计方法4.1Linux操作系统使用4.1.1图形界面操作方法Linux操作系统很多发行版已经非常完善,普通用户也可以方便的使用,很多应用程序使用方法与windos差别不大,同学们很容易就能掌握。本章的重点是让大家学习Linux操作系统的字符界面操作方法,也就是通过各种命令来使用操作系统,这是因为在嵌入式系统开发中绝大多数使用命令行方式来控制。这也是学习Linux的必备技能。操作要求:掌握linux操作系统图形界面下基本操作方法。开关机,基本设置修改,常用软件应用。4.1.2.字符界面操作方法Linux命令行操作与图形界面操作相比更加快速高效,也非常有助于深入理解Linux系统结构,所以很多Linux系统的开发者和管理者都采用字符界面操作方式来使用操作系统,字符界面操作方法的核心就是要求使用者熟练掌握各种Linux命令,通过在Linux终端输入各种命令来完成各种工作。1.Linux系统终端的打开方法图形界面下Linux终端打开方法控制台切换方法:ctr+alt+F1……F52.Linux常见命令含义和使用方法在讲述具体命令使用方法之前,先明确Linux系统的一些基本概念,比如Linux系统下把文件夹成为目录,且所有的不同属性的文件为了方便区分,采用不同颜色显示。名称:ls使用权限:所有使用者使用方式:ls[-alrtAFR][name...]说明:显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。-a显示所有档案及目录(ls内定将档案名或目录名称开头为.的视为隐藏档,不会列出)-l除档案名称外,亦将档案型态,权限,拥有者,档案大小等资讯详细列出-r将档案以相反次序显示(原定依英文字母次序)-t将档案依建立时间之先后次序列出-A同-a,但不列出.(目前目录)及..(父目录)-F在列出的档案名称后加一符号;例如可执行档则加*,目录则加/-R若目录下有档案,则以下之档案亦皆依序列出操作实例:(1)#ls列出当前目录下所有内容名称。(2)#ls-l以长格式形式列出当前目录下所有文件的资料。(3)列出目前工作目录下所有名称是s开头的档案,愈新的排愈后面:#lss*(4)#ls???.exe显示当前目录下文件名为三个字符,且后缀为exe的文件/b名称:cd使用权限:所有使用者使用方式:cd[dirName]说明:变换工作目录至dirName。其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的homedirectory(也就是刚login时所在的目录).另外,~也表示为homedirectory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。操作范例:(1)跳到/usr/bin/:#cd/usr/bin(2)跳到自己的homedirectory:#cd~(3)跳到目前目录的上上两层:#cd..pwd:功能查看用户当前所处目录。#pwdmkdir:目录创建命令,相当于windows下的新建文件夹功能。操作实例:#mkdirtjqworkdir在当前所处目录下创建一个名称为tjqworkdir的目录。#mkdir/home/student//在/home目录下创建一个student目录。rmdir:删除空目录操作实例:#rmdir/home/student//删除了/home目录下的student目录。chmod:修改文件目录权限命令操作实例1:#mkdir/home/dir1#cd/home#ls–l#chmoda+xdir1//创建一个dir1目录,修改目录权限,给所有用户添加可执行权限。也可以通过数字形式修改。操作实例2:#chmod777dir1//所有的用户都拥有读写执行权限。7.grep:在指定文件中搜索特定的内容,并将含有这些内容的行标准输出。操作实例:操作练习1:在/home目录下创建一个目录dir1,在dir1目录下创建一个文件file,文件内容输入hello,helloeverybody以及其他内容。1.#grep“hello”/home-r//搜索根目录下以及子目录下文件中的hello字符串。2.#grep“hello”/home-dskip//搜索根目录下文件中的hello字符串,忽略子目录。8.find:在指定目录中搜索文件,它的使用权限是所有用户操作实例1.find./-nameqiong*.c//在当前目录下查找名字以qiong打头的文件。2.fine/etc-nameini*//在根目录下查找名字以ini打头的文件。3.find/etc-size+500000c-and-mtime+1//查找想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and(与)把两个查找参数链接起来组合成一个混合的查找方式。4.find/etc–namein*-and–size-5000000c//查找/etc下以in打头的,文件大小小于5000000字节的文件。9.cp文件拷贝命令。#cp/home/dir1/file1/root将/home/dir1/file1文件拷贝到/root目录下。10.mv:命令来为文件或目录改名或将文件由一个目录移入另一个目录中操作实例:#mv/home/arm/mylinux////将/home/arm/mylinux/目录中的所有文件移动到当前目录中(“.”表示当前目录)。11.cat:在标准输出上显示文件内容。操作实例一:1.#cattest.out//则在屏幕上显示出test.out文件的内容。2.cattest.outtest2.out//在屏幕上依次显示出test.outtest2.out的内容。功能2:连接两个或多个文件说明:cat命令功能之二是用来将两个或多个文件连接起来。#catfile1file2file3这样就把文件file1和文件file2的内容合并起来,放入文件file3中去。12.more功能:在终端屏幕按屏显示文本文件。语法:more[选项]文件说明:该命令一次显示一屏文本内容,显示満之后就停下来,若要显示接下来的内容按下回车键或空格键即可。多屏显示时会在终端底部显示出“--More—”,同时显示出已经显示部分的文本占全文本的百分比。例如:用户如果想用分页的方式显示一个文件的内容,可输入以下命令:moretest.txt而如果想显示一个文件的内容,要求每二十行显示一次,且显示之前先清屏,则应该使用命令:more-c-20test.txt13.less:文件显示命令。#lessinittab可以手动来回翻看!14.ln功能:在文件之间创建链接,给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。语法:ln[选项]目标[链接名]ln[选项]目标目录链接有两种,一种被称为硬链接(HardLink),另一种被称为符号链接(SymbolicLink)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对于符号链接,则不存在这个问题。如果给ln命令加上“-s”选项,则建立符号链接。如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。例如:使用如下命令:#ln-stest.txt/home/arm/test用户为当前目录下的文件test.txt,创建了一个符号链接/home/arm/test。17.rm功能:该命令的功能为删除一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均保持不变。语法:rm[选项]文件常用参数-f--force:略过不存在的文件,不显示任何信息-i--interactive:进行任何删除操作前必须先确认-r/R--recursive:同时删除该目录下的所有目录层操作范例:#rm-i*.rb//删除所有rb语言程序档;删除前逐一询问确认:#rm-rfdir//将Finished子目录及子目录中所有档案删除,并且不用--确认16tar功能:将用户所指定的文件或目录打包成一个文件,不过它并不做压缩。一般Unix上常用的压缩方式是先用tar命令将许多文件打包成一个文件,再以gzip等压缩命令压缩文件。语法:tar[选项]压缩后的文件名要被压缩的文件。操作实例:1.打包文件#tar-cvfdata.tar./*//欲将目录下所有文件打包成data.tar,使用以下命令:2.解包文件#tar–xvfdata.tar//将包文件件释放。3.3.打包压缩文件#tar-czvfdata.tar.gz./file*//将所有文件打包并且调用用gzip压缩。4.解包解压缩文件#tar-xzvfdata.tar.gz//将压缩包解包解压缩。4.如果想查看档案文件内容#tar-tvfdata.tar5.解压缩解包其他类型压缩文件。:#tar–jxvflinux-2.6.25.tar.bz26.使用-Z(大写Z)参数指定以compress命令压缩#tar–cZvfprcture.tar.Z*.tif//欲将该目录下所有.tif打包并命令压缩成.tar.Z文件18.mount:文件系统挂载命令使用mount命令主要通过以下几个步骤:(1)确认是否为Linux可以识别的文件系统,Linux可识别的文件系统有vfat、ntfs、hpfs、ext2、ext3、nfs、iso9660等几种。(2)确定设备的名称,确定设备名称可通过使用命令“fdisk-l”查看。(3)查找挂接点。首先,必须确定挂载点已经存在,也就是在“/mnt”下的相应子目录已经存在,一般建议在“/mnt”下新建几个如“/mnt/windows”,“/mnt/usb”的子目录,现在有些新版本的Linux(如ubuntu、红旗Linux、中软Linux、MandrakeLinux)都可自动挂载文件系统,RedHat仅可自动挂载光驱。(4)挂载文件系统,使用如下命令:#mount-tvfat/dev/hda1/mnt/c或者#mount/dev/cdrom/mnt/cdrom(5)在使用完该设备文件后可使用命令umount将其卸载,如在终端输入:#umount/mnt/c或者#umount/dev/cdrom即可完成磁盘对挂载。19.rpm工具使用rpm查询,删除,安装升级rpm软件包。#rpm-qa//查询当前系统中已经安装的rpm软件包#rpm-ivh*.rpm//强制安装软件包。问题:如何实现文件系统开机自动挂载?20.df功能,查看系统文件系统挂载情况#df–lh//显示当前系统文件系统挂载情况。touch21.fdisk工具使用fdisk功能很多,通过配置不同的参数完成不同的任务。(1)#fdisk–l//查看当前系统内硬盘分区情况,以及硬盘使用的情况。(2)#fdisk/dev/sdb//对硬盘sdb进行分区。通过菜单选择完成新硬盘的分区。问题:对硬盘进行分区后,硬盘能不能使用?22.mkfs工具文件创建工具,和fdisk配合使用,完成硬盘等的分区和文件系统创建。#mkfs-text3/dev/sdb2//将/dev/sdb2格式化为ext3文件系统。注意:常见文件系统有ext3,reiserfs,ext2,fat32,msdos。还有嵌入式文件系统ramfs,jffs等等。说明:mkfs和mkfs.ext3mkfs.reiserfsmkfs.ext2mkfs.msdosmkfs.vfat,mkswap等的关系。23.其他几个常用命令passwd:设置账号密码#passwdroot//修改root的密码。id:显示用户ID、组ID和用户所属的组列表#idroot//