您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > Linux程序设计知识点整理
Prerequisite一、Linux命令1、文件操作列出目录内容:ls,dir,vdir创建特殊文件:mkdir,mknod,mkfifo文件操作:cp,mv,rm修改文件属性:chmod,chown,chgrp,touch查找文件:locate,find字符串匹配:grep(egrep)其它:pwd,cd,ar,file,grep,tar,more,less,head,tail,cat2、进程操作ps,kill,jobs,fg,bg,nice3、其它who,whoami,passwd,su,uname,…man二、Linux工具编辑工具:vi,emacs编译、链接:gcc(GNUCCompiler-GNUCompilerCollection)调试:gdbmake命令版本控制工具:CVS等三、编程语言1、High-levelLanguage:C/C++,Java,Fortran…2、ELFbinaryformat:ExcutableandLinkableFormat(工具接口标准委员会(TIS)选择了正在发展中的ELF体系上不同操作系统之间可移植的二进制文件格式)四、GCC使用-E:只对源程序进行预处理(调用cpp预处理器)-S:只对源程序进行预处理、编译-c:执行预处理、编译、汇编而不链接-ooutput_file:指定输出文件名-g:产生调试工具必需的符号信息-O/On:在程序编译、链接过程中进行优化处理-Wall:显示所有的警告信息-Idir:指定额外的头文件搜索路径-Ldir:指定额外的库文件搜索路径-lname:链接时搜索指定的库文件-DMACRO[=DEFN]:定义MACRO宏Gcc过程:预处理、编译、汇编、链接GDB使用设置断点、监视变量值、单步执行、修改变量值make[-ffilename][targetname]Shell编程一、Shell概述1、Shell用户和操作系统之间的接口、作为核外程序而存在2、Shell的双重角色1)、命令解释程序(1)Linux的开机启动过程:加载BIOS;读取MBR(MasterBootRecord);BootLoader;加载内核;用户层init依据inittab文件来设定运行等级;init进程执行rc.sysinit;启动内核模块;执行不同运行级别的脚本程序;执行/etc/rc.d/rc.local;执行/bin/login程序,进入登录状态(2)进程树:进程树是一种进程关系表示方法。由父进程和子进程两部分组成。(3)Shell的工作步骤:打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令2)独立的程序设计语言解释器(1)KISS(KeepItSmallandStupid)(2)Reusabletools(3)Redirectionandpipe二、创建和执行Shell程序1、编写脚本文件(注释、退出码(exit0))2、执行脚本文件方法1:$shscript_file方法2:chmod+xscript_file(chown,chgrpoptionally)./script_file方法3:sourcescript_file,or.script_file1、在当前bash环境下新建一个子shell来执行这个脚本,继承父Shell的环境变量,用于执行刚修改的初始化文档,2、这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。由于是在子shell中执行,脚本设置的变量不会影响当前shell。3、source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效三、Shell程序设计的语法1、变量1、用户变量:(1)定义:用户在shell脚本里定义的变量(2)赋值和使用:var=valueecho$var(3)read命令:(read-pEnteryourname:name)readvar或readREPLYvariable(环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY,当然,在引用的时候不要忘记$)-s:默读、在输入密码时用的到-t:计时输入,后接等待秒数(4)引号的用法:双引号作用:$,\,`这些字符的特殊含义还是存在单引号:忽略所有的特殊字符2、用户环境(1).bash_profile,.bash_logout,.bashrcfiles.bash_profile:用户登录时被读取,其中包含的命令被bash执行.bashrc:启动一个新的shell时读取并执行.bash_logout:登录退出时读取执行(2)Alias:alias[别名]=[指令名称],若不加任何参数,则列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。Unalias[别名](3)环境变量:export[-fnp][变量名称]=[变量设置值]-f代表[变量名称]中为函数名称。-n删除指定的变量。变量实际上未删除,只是不会输出到后续指令的执行环境中。-p列出所有的shell赋予程序的环境变量。env:显示当前用户的环境变量;set:用set命令可以设置各种shell选项或者列出shell变量-a标示已修改的变量,以供输出至环境变量。-b使被中止的后台程序立刻回报执行状态。-C转向所产生的文件无法覆盖已存在的文件。-dShell预设会用杂凑表记忆使用过的指令,以加速指令的执行。-d参数可取消。-e若指令传回值不等于0,则立即退出shell。-f取消使用通配符。-h自动记录函数的所在位置。-HShell可利用!加指令编号的方式来执行history中记录的指令。-k指令所给的参数都会被视为此指令的环境变量。-l记录for循环的变量名称。-m使用监视模式。-n只读取指令,而不实际执行。-p启动优先顺序模式。-P启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。-t执行完随后的指令,即退出shell。-u当执行时使用到未定义过的变量,则显示错误信息。-v显示shell所读取的输入值。-x执行指令后,会先显示该指令及所下的参数。+参数取消某个set曾启动的参数。3、环境变量(Shell环境提供的变量。通常使用大写字母做名字)4、参数变量和内部变量调用脚本程序时如果带有参数,对应的参数和额外产生的一些变量。2、条件测试1、字符串比较2、算数比较3、与文件有关的条件测试4、逻辑操作5、条件语句(1)形式:(紧凑形式;(同一行上多个命令的分隔符))if[expression]thenstatementselif[expression]thenstatementselif…elsestatementsfi6、case语句(1)形式:casestrinstr1|str2)statements;;str3|str4)statements;;*)statements;;Esac3、重复语句1、for语句:适用于对一系列字符串循环处理(1)形式:forvarinlistdostatementsdone例:#!/bin/shforfilein$(lsf*.sh);dolpr$filedoneexit02、while语句(1)形式:whileconditiondostatementsdone3、until语句(不推荐使用)(1)形式:untilconditiondostatementsdone4、Select语句:生成菜单列表(1)形式:selectiteminitemlistdostatementsdone4、命令表业语句块1、命令表(1)命令组合分号串联:command1;command2;…条件组合:AND命令表:只有在&&左边的命令返回真,&&右边的命令才会被执行格式:statement1&&statement2&&statement3&&…OR命令表:只有在||左边的命令返回假,||右边的命令才会被执行。格式:statement1||statement2||statement3||…2、语句块(1)形式{statement1statement2…}或{statement1;statement2;…;}5、函数(1)形式[function]funcname(){statements[returnint]}(2)局部变量:局部变量只适用于当前shell,local关键字(3)函数的调用:funcpara1para2…6、其他1、杂项命令:break:从for/while/until循环退出continue:跳到下一个循环继续执行exitn:以退出码”n”退出脚本运行return:函数返回export:将变量导出到shell,使之成为shell的环境变量set:为shell设置参数变量unset:从环境中删除变量或函数trap:指定在收到操作系统信号后执行的动作“:”(冒号命令):空命令“.”(句点命令)或source:在当前shell中执行命令2、find命令(1)形式:find[path][options][tests][actions]OptionsTests可以用操作符进行组合测试:!(-not);-a(-and);-o(-or)可以用圆括号来强制测试和操作符的优先级,需要用到转义字符\例:find.\(-name_*-or-newerwhile2\)-typef–print-aminn、-anewerfile、-atimen-cminn、-cnewerfile、-ctimen-empty、-gidnor-groupname、-pidn-namename,-inamename-sizen单位、-typec-ipathp,-pathp路径名符合p的文件,ipath表示忽略大小写actions3、grep命令(用于在文件中查找字符串)(1)形式:grep[OPTIONS]PATTERN[FILES](2)正则表达式:广泛用于Linux和许多其他编程语言中,基本原理都是一样的注:上表中的括号需要使用转移字符’\’,如grep–E[a-z]\{10\}words2.txt4、捕获命令输出(1)语法:$(command)`command`(2)例:#!/bin/shecho“Thecurrentdirectoryis$PWD”echo“Thecurrentdirectoryis$(pwd)”exit05、算数扩展(1)expr命令(支持的operator包括)exprargumentoperatorargument(2)$((…))扩展例:x=$(($x+1))6、参数扩展#!/bin/shi=0while[“$i”–ne10];dotouch“${i}_tmp”i=$(($i+1))doneexit07、即时文档在shell脚本中向一条命令传送输入数据#!/bin/bashcat!CATINPUT!Hello,thisisaheredocument.!CATINPUT!8、shell脚本调试*sbin/service:它本身是一个shell脚本程序,作用就是获取传递给它的两个参数:$1$2,分别是服务名和对该服务的动作。然后调用/etc/rc.d/init.d/服务名称($1),并给该服务脚本传递你指定的动作($2)。例如:servicehttpdstop本身就是执行:/etc/rc.d/init.d/httpdstop。由httpd脚本去控制httpd服务的停止动作(stop)。文件系统1、文件系统定义1、基本定义文件:一个可以被读写的对象。文件有一定的属性,包括访问权限和类型文件系统:文件和其某一些属性的集合。它为指向文件的序列号提供了一个名空间文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。文件类型:regularfile、c
本文标题:Linux程序设计知识点整理
链接地址:https://www.777doc.com/doc-4620579 .html