2023年Linux程序设计知识点总结归纳整理1.pdf
《2023年Linux程序设计知识点总结归纳整理1.pdf》由会员分享,可在线阅读,更多相关《2023年Linux程序设计知识点总结归纳整理1.pdf(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习必备 欢迎下载 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,cat 2、进程操作 ps,kill,jobs,fg,bg,nice 3、其它 who,whoami,passwd,su,uname,man 二、Linux工具 编辑工具:vi
2、,emacs 编译、链接:gcc(GNU C Compiler-GNU Compiler Collection)调试:gdb make 命令 版本控制工具:CVS等 三、编程语言 1、High-level Language:C/C+,Java,Fortran 2、ELF binary format:Excutable and Linkable Format(工具接口标准委员会(TIS)选择了正在发展中的 ELF体系上不同操作系统之间可移植的二进制文件格式)四、GCC使用-E:只对源程序进行预处理(调用 cpp 预处理器)-S:只对源程序进行预处理、编译-c:执行预处理、编译、汇编而不链接-o
3、output_file:指定输出文件名-g:产生调试工具必需的符号信息-O/On:在程序编译、链接过程中进行优化处理 学习必备 欢迎下载-Wall:显示所有的警告信息-Idir:指定额外的头文件搜索路径-Ldir:指定额外的库文件搜索路径 -lname:链接时搜索指定的库文件-DMACRO=DEFN:定义 MACRO宏 Gcc过程:预处理、编译、汇编、链接 GDB 使用 设置断点、监视变量值、单步执行、修改变量值 make-f filename targetname Shell 编程 一、Shell 概述 1、Shell 用户和操作系统之间的接口、作为核外程序而存在 体系上不同操作系统之间可移
4、植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 2、Shell 的双重角色 1)、命令解释程序(1)Linux的开机启动过程:加载 BIOS;读取 MBR(Master Boot Record);Boot Loader;加载内核;用户层 init 依据 inittab 文件来设定运行等级;init 进程执行 rc.sysinit;启动内核模块;执行不同运行级别的脚本程序;执行/etc/rc.d/rc.local;执行/bin/login 程序,进入登录状态(2)进
5、程树:进程树是一种进程关系表示方法。由父进程和子进程两部分组成。(3)Shell 的工作步骤:打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令 2)独立的程序设计语言解释器(1)KISS(Keep It Small and Stupid)(2)Reusable tools(3)Redirection and pipe 二、创建和执行 Shell 程序 1、编写脚本文件(注释、退出码(exit 0)2、执行脚本文件 方法 1:$sh script_file 方法 2:chmod+x script_file(chown,chgrp optionally)./script_file 方
6、法 3:source script_file,or.script_file 1、在当前 bash 环境下新建一个子 shell 来执行这个脚本,继承父 Shell 的环境变量,用于执行刚修改的初始化文档,2、这些子 shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。由于是在子 shell 中执行,脚本设置的变量不会影响当前 shell。3、source 的程序主体是 bash,脚本中的$0 变量的值是 bash,而且由于作用于当前 bash 环境,脚本中 set 的变量将直接起效 三、Shell 程序设计的语法 1、变量 1、用户变量:(1)定义:用户在 shell 脚
7、本里定义的变量(2)赋值和使用:var=value echo$var(3)read 命令:(read-p Enter your name:name)read var 或 read REPLY variable(环境变量 REPLY 中包含输入的所有数据,可以像使用其他变量一样在shell 脚本中使用环境变量 REPLY,当然,在引用的时候不要忘记$)体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载-s:默读、在输入密码时用的到-t:计时输入
8、,后接等待秒数(4)引号的用法:双引号作用:$,这些字符的特殊含义还是存在 单引号:忽略所有的特殊字符 2、用户环境(1).bash_profile,.bash_logout,.bashrc files.bash_profile:用户登录时被读取,其中包含的命令被 bash 执行.bashrc:启动一个新的 shell 时读取并执行.bash_logout:登录退出时读取执行(2)Alias:alias别名=指令名称,若不加任何参数,则列出目前所有的别名设置。alias 的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile 或自己的/.bashrc 中设定指令
9、的别名。Unalias 别名(3)环境变量:export-fnp变量名称=变量设置值-f 代表变量名称中为函数名称。-n 删除指定的变量。变量实际上未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的 shell 赋予程序的环境变量。env:显示当前用户的环境变量;set:用 set 命令可以设置各种 shell 选项或者列出 shell 变量-a 标示已修改的变量,以供输出至环境变量。-b 使被中止的后台程序立刻回报执行状态。-C 转向所产生的文件无法覆盖已存在的文件。-d Shell 预设会用杂凑表记忆使用过的指令,以加速指令的执行。-d参数可取消。-e 若指令传回值不等于 0,则
10、立即退出 shell。-f 取消使用通配符。-h 自动记录函数的所在位置。-H Shell 可利用!加的方式来执行 history 中记录的指令。-k 指令所给的参数都会被视为此指令的环境变量。-l 记录 for 循环的变量名称。-m 使用监视模式。-n 只读取指令,而不实际执行。-p 启动优先顺序模式。-P 启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。-t 执行完随后的指令,即退出 shell。-u 当执行时使用到未定义过的变量,则显示错误信息。-v 显示 shell 所读取的输入值。-x 执行指令后,会先显示该指令及所下的参数。+取消某个 set 曾启动的参数。3、环境
11、变量(Shell 环境提供的变量。通常使用大写字母做名字)体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 4、参数变量和内部变量 调用脚本程序时如果带有参数,对应的参数和额外产生的一些变量。2、条件测试 1、字符串比较 2、算数比较 3、与文件有关的条件测试 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令
12、解释学习必备 欢迎下载 4、逻辑操作 5、条件语句(1)形式:(紧凑形式;(同一行上多个命令的分隔符)if expression then statements elif expression then statements elif else statements fi 6、case 语句(1)形式:case str in str1|str2)statements;str3|str4)statements;*)statements;Esac 3、重复语句 1、for 语句:适用于对一系列字符串循环处理(1)形式:for var in list do statements done 例:#!/
13、bin/sh 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 for file in$(ls f*.sh);do lpr$file done exit 0 2、while 语句(1)形式:while condition do statements done 3、until 语句(不推荐使用)(1)形式:until condition do statements done 4、Select 语句:生成菜单列表(1)形式:select ite
14、m in itemlist do statements done 4、命令表业语句块 1、命令表(1)命令组合 分号串联:command1;command2;条件组合:AND命令表:只有在&左边的命令返回真,&右边的命令才会被执行 格式:statement1&statement2&statement3&OR命令表:只有在|左边的命令返回假,|右边的命令才会被执行。格式:statement1|statement2|statement3|2、语句块(1)形式 statement1 statement2 或 statement1;statement2;体系上不同操作系统之间可移植的二进制文件格式四使
15、用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 5、函数(1)形式 function funcname()statements return int (2)局部变量:局部变量只适用于当前 shell,local 关键字(3)函数的调用:func para1 para2 6、其他 1、杂项命令:break:从 for/while/until 循环退出 continue:跳到下一个循环继续执行 exit n:以退出码”n”退出脚本运行 return:函数返回 export:将变量导出到 s
16、hell,使之成为 shell 的环境变量 set:为 shell 设置参数变量 unset:从环境中删除变量或函数 trap:指定在收到操作系统信号后执行的动作“:”(冒号命令):空命令“.”(句点命令)或 source:在当前 shell 中执行命令 2、find 命令(1)形式:find path options tests actions Options Tests 可以用操作符进行组合测试:!(-not);-a(-and);-o(-or)可以用圆括号来强制测试和操作符的优先级,需要用到转义字符 例:find.(-name _*-or-newer while2)-type f prin
17、t-amin、-anewer、-atime-cmin、-cnewer、-ctime-empty、-gid or-group、-pid-name,-iname 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载-size、-type-ipath,-path 路径名符合 p 的文件,ipath 表示忽略大小写 actions 3、grep 命令(用于在文件中查找字符串)(1)形式:grep OPTIONS PATTERN FILES (2)正则表
18、达式:广泛用于 Linux和许多其他编程语言中,基本原理都是一样的 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 注:上表中的括号需要使用转移字符 ,如 grep E a-z10 words2.txt 4、捕获命令输出(1)语法:$(command)command(2)例:#!/bin/sh echo“The current directory is$PWD”echo“The current directory is$(pwd)”exi
19、t 0 5、算数扩展(1)expr 命令(支持的 operator 包括)expr argument operator argument(2)$()扩展 例:x=$($x+1)6、参数扩展#!/bin/sh i=0 while “$i”ne 10;do touch“$i_tmp”i=$($i+1)done exit 0 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 7、即时文档 在 shell 脚本中向一条命令传送输入数据#!/bin/
20、bash cat block15数组(2)Block12-14:间接索引 Block12:b/4 Block13:b/4*b/4 Block14:b/4*b/4*b/4 2、系统调用和库函数 1、比较:相同点:都以 C函数的形式出现 不同点:系统调用:Linux内核的对外接口;用户程序和内核之间唯一的接口;提供最小接口 库函数:依赖于系统调用;提供较复杂功能 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 2、可缓冲和非缓冲的 I/O(1
21、)Unbuffered I/O read/write-System calls File descriptor 不在标准化 C中,但是存在于 POSIX.1和 XPG3(2)Buffered I/O 用标准 I/O 实现 处理很多细节,如缓存分配,以优化长度执行 I/O 等.Stream-a pointer to FILE 3、基本 I/O 系统调用 1、文件描述符:无符号整数表示的句柄 在中定义的:TD _F (),TD T_F (1),TD _F (2)打开文件操作基本流程:open-read/write-lseek-close 2、基本 I/O 操作 3、错误处理(1)采用 UNIX 风
22、格,返回错误代号”errno”,errno变量和错误代码都在头文件/usr/include/errno.h 中定义(2)strerror&perror char*strerror(int errnum);void perror(const char*msg);体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备 欢迎下载 4、open/creat 函数(打开或者有可能创建一个文件)#include#include#include int open(con
23、st char*pathname,int flags);int open(const char*pathname,int flags,mode_t mode);int creat(const char*pathname,mode_t mode);*creat(pathname,mode)等价于 open(pathname,_W _C T _T C,mode)返回值:成功时返回文件的描述符,失败时返回-1 参数:(1)flags(除了 O_RDONLY、O_WRONLY、O_RDWR以外的):O_APPEND:以追加方式打开 O_TRUNC::如果文件已经存在并且是一个普通文件且打开方式允许写操
24、作,则文件长度被截 0 O_CREAT:如果文件不存在则创建 O_EXCL:如果文件已经存在则错误返回(2)mode:如果新文件被创建设置其属性 *umask 机制:新创建文件的权限为:mode&umask 目录默认:777,文件默认:666 5、close 函数#include int close(int fd);返回值:成功则返回 0,失败则返回 1 6、read/write 函数#include 体系上不同操作系统之间可移植的二进制文件格式四使用只对源程序进处理学习必备欢迎下载显示所有的警告信息指定额外的头文件搜索路径之间的接口作为核外程序而存在学习必备欢迎下载的双重角色命令解释学习必备
25、 欢迎下载 ssize_t read(int fd,void*buf,size_t count);返回值:读到的字节数,若已到文件尾为 0,若出错为-1 ssize_t write(int fd,const void*buf,size_t count);返回值:若成功为已写的字节数,若出错为-1 7、lseek 函数:定位文件中的读写位置#include#include off_t lseek(int fildes,off_t offset,int whence);返回值:如果成功则返回地址的偏移量,失败则返回-1 参数 whence:SEEK_SET:从文件开头计算偏移量 SEEK_CUR:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Linux 程序设计 知识点 总结 归纳 整理
限制150内