您好,欢迎访问三七文档
1二linux基础命令1、创建用户,以自己的姓名缩写创建用户名,并设置密码;useraddmingzipasswdmingzi敲回车输入密码;2、显示当前系统进程列表;结束gnome-screensaver并显示效果;LL显示当前文件,LS-L一行输出一个文件;kill-9+进程号杀死一个进程;3、查看磁盘分区情况;fdisk-l;4、切换当前用户为David并携带环境变量,并查看当前目录和文件信息;su-David切换用户,并携带环境变量。pwd查看当前目录;ll查看文件信息5、在David目录下创建多级目录hello/my,并查看当前目录路径;mkdir-p./hello/my创建多级目录;6、在my目录下继续创建子目录why,设置目录访问权限777;mkdir-m777./why7、使用cat将键盘输入的字符传到单个文件abc中,依此方法创建另一个文件def;将abc的内容覆盖def;将abc的内容追加到def;将def的内容显示在shell中;将def的内容按行号显示;将def的内容逆序显示;catabc回车123456ctrl+z创建文件abc并向里面输入123456内容;moreabc查看文件里面的内容;catabcdef用abc里面的内容覆盖def里面的内容;catabcdef将abc里面的内容追加到def中;catdef在屏幕上输出def里面的内容;cat-ndef带行号的显示def里面的内容;tacdef逆序显示;8、将def文件拷贝到上级目录;并重命名为d;将d文件剪切回my目录;将my目录拷贝到hello目录中;将hello目录中拷贝的my目录强制删除;cpdef../将def文件复制到上一级目录;mvdefd重命名为d;mv-i./home/David/hello/d/home/David/hello/my移动,剪回;cp-rf复制;rm-rfmy删除;29、将abc的文件所有者和用户组都改为自己姓名对应的组名;将abc的文件所有者权限设置为r--,其他权限设置为r-wr--;chownxingmingabc修改文件所有者和组名chgrpxingmingabc改变文件的组所有权chmod464abc第一位是创建者,第二位是同组,第三位是其他组(见书上28页)10、使用grep和管道只显示gnome-terminal进程;11、在/在使用find按照文件名查找abc文件;使用locate快速查找abc文件;find-nameabclocateabc12、将abc文件压缩,然后解压;tar-zcvfabc.tar.gzabc压缩tar-zxvfabc.tar.gzabc压缩13、将David目录进行打包;然后解压linux-2.6.18-tar.bz2文件(在第2章页面中可下载)如果解压*.tar.gz用什么命令;tar-jcvflinux-2.6.18-tar.bz2linux压缩tar-jxvflinux-2.6.18-tar.bz2linux解压回答问题:1、解释X-window是什么?X-window是一个图形化得显示界面,在linux里面以一个图形化显示软件存在。2、普通用户和超级用户区别何在?普通用户与超级用户的区别在对文件的操作权限上,超级用户可以给普通用户开通相应的操作权限,如果超级用户不给普通用户相应的权限,普通用户则无法执行相应功能。33、解释chmod命令的作用,并说明目录访问权限776是什么意思?chmod是更改拥有者对文件的执行权限的命令,7的意思是r+w+x=7,其中r=4,w=2,x=1,776代表着,拥有者及拥有者所在的小组内成员对问价拥有读写执行的权限,而小组外的成员对文件仅能进行读写,不能进习执行权限。4、解释ln的作用以及包括的类型;它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接它就可以,不必重复的占用磁盘空间5、解释什么是用户登录模式;用户登录模式是root账户下的子账户登录,往往我们用root账户来修改系统,用用户账户来使用系统,即root拥有无限大的权利,可以杀死自己,而用户账户则可以在一定约束下使用系统。6、解释如何修改系统服务自启动的级别?如果需要自启动某些服务,只需使用chkconfig服务名on即可,若想关闭,将on改为off在默认情况下,chkconfig会自启动2345这四个级别,如果想自定义可以加上--level选项我们先将sshd服务的所有启动级别关闭,然后使用--level选项启动自定义级别。4第三章1.vi(1)在“/root”目录下建一个名为“vi”的目录。(2)进入“vi”目录。(3)将文件“/etc/inittab”复制到“vi”目录下。(4)使用vi打开“vi”目录下的inittab。viinittab;(5)设定行号,指出设定initdefault(类似于“id:5:initdefault”的所在行号。)在特权模式下输入:setnu;setnonu,取消行号;/initdefault在光标之后查找名为initdefault的字符串;?initdefault在光标之前。(在第十八行找到字符串)(6)将光标移到该行。18G光标移动到十八行(7)复制该行内容。插入模式下1yyoesc模式下p粘贴nyy复制光标所在行的向下的n行;5(8)将光标移到最后一行行首。ESC直接输入G最后一行行首ESC直接输入gg移动到文件开头(9)粘贴复制行的内容。(10)撤消第9步的动作。ESC(u恢复前一个动作)(11)将光标移动到最后一行的行尾。特权模式下使用G$光标所在行的尾部;(13)光标移到“si::sysinit:/etc/rc.d/rc.sysinit行号G(14)删除该行。(dd)(15)存盘但不退出。:w(16)将光标移到首行。gg(19)向下查找字符串“0:wait”。(/0:wait)(20)再向上查找字符串“halt”。(?halt)(21)强制退出vi,不存盘:q!2.用gdb调试程序的Bug(1)在工作目录上新建文件greet.c,并用vi启动:vigreet.c。(2)在vi中输入以上代码。(3)在vi中保存并退出,使用命令“:wq”。(4)用gcc编译:gcc-ggreet.c-ogreet。6(5)运行greet,使用命令“./greet”输出为:TheoriginalstringisEmbeddedLinuxThestringafterwardis(6)启动gdb调试:gdbgreet。(7)查看源代码,使用命令“l”。(8)在20行(for循环处)设置断点,使用命令“b20”。(10)查看断点设置情况,使用命令“infob”。(11)运行代码,使用命令“r”。(运行到了第一个断点处)(12)单步运行代码,使用命令“n”。(运行完一次for循环)s进入函数体单步运行(13)查看暂停点变量值,使用命令pstring2[size-i]有可能是ASCII值(15)继续程序的运行,使用命令“c”。(16)程序在printf前停止运行,此时依次查看string2[0]、string2[1]…,发现string[0]没有被正确赋值,而后面的赋值都是正确的,这时,定位程序第31行,发现程序运行结果错误的原因在于“size-1”于i只能增到“size-1”这样string2[0]就永远不能被赋值而保持NULL,故不能输出任何结果。(17)退出gdb,使用命令“q”。(18)重新编辑greet.c,把其中的“string2[size-i]=string1[i]”改为“string2[size–i-1]=string1[i];”即可。(19)使用gcc重新编译:gcc-ggreet.c-ogreet。(20)查看运行结果:./greetTheoriginalstringisEmbeddedLinuxThestringafterwardisxuniLdeddedbmE这时,输出结果正确。3.编写包含多文件的makefile(1)用vi打开上述两个代码文件“hello.c”和“hello.h”。(2)在shell命令行中用gcc尝试编译,使用命令:gcchello.c–ohello”并运行,./hello可执行文件查看结果。(3)删除此次编译的可执行文件:rmhello。(4)用vi编辑makefile,如下所示:hello:hello.chello.h(一定是一个制表位的空档)gcchello.c-ohello(5)退出保存,在shell中键入:make,查看结果。(6)再次用vi打开makefile,用变量进行替换,如下所示:OBJS:=hello.oCC:=gcchello:$(OBJS)$(CC)$^-o$@(7)退出保存,在shell中键入make,查看结果。7(8)用vi编辑makefile1,如下所示:hello:hello.ogcchello.o-ohellohello.o:hello.chello.hgcc-chello.c-ohello.o(9)退出保存,在shell中键入:make-fmakefile1,查看结果。(10)再次用vi编辑makefile1,如下所示:OBJS1:=hello.oOBJS2:=hello.chello.hCC:=gcchello:$(OBJS1)$(CC)$^-o$@$(OBJS1):$(OBJS2)$(CC)-c$-o$@在这里请注意区别“$^”和“$”。(11)退出保存,在shell中键入make-fmakefile1,查看结果。4.使用autotools生成包含多文件的makefile(1)在原目录下新建文件夹auto。(2)将上例的两个代码文件“hello.c”和“hello.h”复制到该目录下。(3)使用autoscan生成configure.scan。(4)编辑configure.scan,修改相关内容,并将其重命名为8configure.in。(5)使用aclocal生成aclocal.m4。(6)使用autoconf生成configure。(7)使用autoheader生成config.h.in。(8)编辑makefile.am。(9)使用automake生成makefile.in。9(10)使用configure生成makefile。(11)使用make生成hello可执行文件,并在当前目录下运行hello查看结果。(12)使用makeinstall将hello安装到系统目录下,并运行,查看结果。(13)使用makedist生成hello压缩包。10(14)解压hello压缩包。(15)进入解压目录。(16)在该目录下安装hello软件。5.根据已知三个源文件编写静态库和动态库,并调试运行出正确结果;静态库11动态库12错误:错误提示,找不到动态库文件libadd.so。程序在运行时,会在/san/ku和/ku等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。我们将文件libadd.so复制到目录/ku中,再试试。6.有一个计算阶乘的源程序,可以运行出结果,但是结果不对,请使用gdb找出错误并改正错误。13运行结果:错误.下面进行调试:分别在第6,7,9行设置了断点:然后进行单步调试,发现问题出现在断点9处出现问题,J的值出现错误:修改结果:147.实现汉诺塔游戏,要求:汉诺塔的层数由键盘输入,最少3层,程序执行结果要把移动盘子的步骤显示出来。(gcc和gdb综合应用)15第六章:linux下文件I/O编程1、根据视频改写copy_file.c,以只写方式打开目标文件,权限742;将源文件读写指针移动到距离文件开头5KB处,每次读写2KB,并用自己的话描述读写函数功能;16172、fcntl()给文件上锁需要执行几次,为什么?回答fcnt
本文标题:linux复习
链接地址:https://www.777doc.com/doc-4752951 .html