Linux 系统编程基础考试复习总结Word格式.docx
- 文档编号:17652474
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:34
- 大小:818.16KB
Linux 系统编程基础考试复习总结Word格式.docx
《Linux 系统编程基础考试复习总结Word格式.docx》由会员分享,可在线阅读,更多相关《Linux 系统编程基础考试复习总结Word格式.docx(34页珍藏版)》请在冰豆网上搜索。
ln在文件间建立连接
ln[options]源文件[目标文件]
ln[options]源文件…目录
mkdir:
建立用户目录,-p选项,命令将会自动建立不存在的中间目录
chmod:
改变文件或目录的许可权限
chmod[options]文件名…
u代表用户自己,即文件的所有者
g代表本人所在的组,组成员
o系统中其他的用户
a所有用户
+增加权限
-减少权限
=使存储权限等于
r读权限
w写权限
x执行权限
touch:
创建一个空文件或者改变文件的时间参数
find:
搜索特定文件find[路径…][表达式]
grep:
在文件中搜索匹配行并输出
cat:
连接文件并输出cat[options][file…]
磁盘管理的命令
文件备份和压缩命令
备份:
cp
Tar:
打包备份文件
-c创建文件
-z使用gzip压缩
-f指定文件
-r把要存档的文件追加到档案文件的未尾;
t列出档案文件的内容,查看已经备份了哪些文件
u更新文件
x从档案文件中释放文件。
Tar-czf*.Tar.gz
gzip:
压缩文件gzip[options][文件名…]
-c将输出写到标准输出上,并保留原有文件。
-d将压缩文件解压。
-l对每个压缩文件,显示下列字段:
压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名字
-r递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t测试,检查压缩文件是否完整。
-v对每一个压缩和解压的文件,显示文件名和压缩比。
-num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。
系统缺省值为6。
Unzip:
解扩展名为.zip的压缩文件。
-x文件列表解压缩文件,但不包括指定的file文件。
-v查看压缩文件目录,但不解压。
-t测试文件有无损坏,但不解压。
-d目录把压缩文件解到指定目录下。
-z只显示压缩文件的注解。
-n不覆盖已经存在的文件。
-o覆盖已存在的文件且不要求用户确认。
-j不重建文档的目录结构,把所有文件解压到同一目录下
gunzip解压缩文件gunzip[options][文件名…
总结:
Man获取帮助信息
Linux系统管理命令
系统启动和关闭命令
只有超级用户才有权执行关机命令。
关闭系统可分为三种情形:
关机并切断电源、不关电源只关机、重新引导;
命令:
shutdown:
shutdown[-fFhknrc(参数名称)][-t秒数]时间[警告信息]
立即关机重启:
shutdown–rnow
立即关机:
shutdown–hnow
Halt:
相当于shutdown–h
Reboot:
关机后引发系统重启。
用户管理命令
Linux系统中的用户三种类型:
●超级用户:
root,拥有最大权限
●普通用户:
自定义用户,拥有部分权限
●特殊用户:
在Linux系统中还存在一些特殊的与系统和程序服务相关的用户。
用户管理的信息包括:
●用户账号(user)的增加、修改和删除。
●组账号(group)的增加、修改和删除。
●用户账号属性信息的修改,包括登录shell,用户主目录,用户注释信息等。
●组账号属性信息的修改,包括组内用户、组ID等
●
用户和组账号密码的设置与修改,包括密码有效期、更改密码等。
Useradd:
使用useradd命令可以添加用户,语法格式:
useradd[options]username
示例:
useraddtom
注意:
使用useradd命令添加用户后,如果不使用passwd命
令为用户设置密码,此用户将无法登录。
usermod
使用usermod命令可以改变用户属性,语法格式:
usermod[-options][arguments]username
usermod-gusertom或usermod-d/home/testtom
设备管理命令
mkfs:
将硬盘分区后,使用mkfs(MakeFilesystem,创建文件系统)命令可对其进行格式化。
基本的命令格式如下所示:
mkfs-t文件系统类型分区设备
mkfs-text3/dev/sdb1等同于执行如下命令:
mkfs.ext3/dev/sdb1
df命令功能是检查文件系统的磁盘空间占用情况。
du统计目录(或文件)所占磁盘空间的大小。
存储设备的挂载与卸载
挂载设备:
mount命令可以实现对存储设备的挂载,语法格式:
mount[-t文件系统类型]存储设备挂载点
挂载u盘设备(假设u盘标识为sdb1)到/mnt/usb目录:
mount/dev/sdb1/mnt/usb
卸载设备:
umount命令可以用来把已经mount上的文件系统卸载,停止已经建立的挂载关系:
umount挂载点
umount/dev/sdb1或umount/mnt/usb
进程管理命令:
Ps查看正在运行的进程Top显示系统当前的进程和其他状况Kill杀死一个正在运行的进程
管理用户帐号的权限的命令
Linux编程环境
GCC使用介绍
●GNUComplilerCollection)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。
●gcc编译器能将C、Fortran、C++、java语言源程序、汇编程序编译、连接成可执行文件。
GCC的编译选项
-c:
只编译,不连接成为可执行文件。
-ooutput_filename:
确定输出文件的名称。
如果不给出这个选项,gcc就给出默认的可执行文件a.out。
-g:
产生符号调试工具(GNU的gdb)所必要的调试信息,要使用gdb对源代码进行调试,就必须加入这个选项。
-O:
对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2:
比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
-Idirname:
将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。
C程序中的头文件包含两种情况:
1、#include<
stdio.h>
2、#include“myinc.h”
其中,第一类使用尖括号<
>
,第二类使用双引号“”。
对于第一类类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,
而对于第二类,gcc首先当前目录中搜寻头文件,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。
库(Library)就是一组已经写好了的函数和变量、经过编译后形成库文件,能够提高开发效率和运行效率。
库分为静态库(StaticLibrary)和动态库(Sharedlibrary)两类。
Linux系统中静态库文件的扩展名是.a,共享库文件的扩展名是.so。
静态库是指每个用到该库的应用程序都拥有一份自己的库拷贝;
应用程序编译的时候已经将库内容包含在运行文件中,运行的时候不再需要库文件。
动态库是应用程序在运行时动态加载库文件。
GCC静态编译:
(见书)gcc-Iinc-cfunc1.c–ofucn1.o
gcc-Iinc-cfunc2.c–ofucn2.o
arcrlibmylib.afunc1.ofucn2.o
gcc-Iincmain.clibmylib.a–omain
GDB简介
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
GDB主要帮忙你完成下面四个方面的功能:
启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
让被调试的程序在你所指定的调置的断点处停住。
(断点可以是条件表达式)
当程序被停住时,可以检查此时你的程序中所发生的事。
动态的改变你程序的执行环境。
file:
载入程序。
quit:
退出GDB
Run:
运行程序
list:
列出源程序
break:
设置断点
watch:
设置监视点
print:
打印表达式的值
单步执行:
stepnext
continue:
继续执行指令
finish:
结束调试
Make工具见书P202
Shell编程
在Linux操作系统中,shell是用户与操作系统内核打交道的接口
Linux中的shell类型:
Bourneshell(sh)、Cshell(csh)和Kornshell(ksh)
1.
shell执行过程
2标准输入/输出和重定向
(1)标准输入/输出
(2)输入重定向
输入重定向的一般形式为:
command[参数]<
文件名
3)输出重定向
输出重定向的一般形式为:
command[参数]>
3)输出重定向追加
>
command[选项]2>
错误文件名
(4)避免文件重写
Shell提供了一种称为noclobber的功能,该功能可防止重定向时不经意地重写了已存在的文件。
3.管道
●Shell使用管道将一个命令的输出直接作为另一个命令的输入。
●通过使用管道符“|”来建立一个管道,语法格式为:
●command_a[参数]|command_b[参数]
4.特殊字符
通配符用于模式匹配,如文件名匹配、路径名搜索、字符串查找等。
常用的通配符有*、?
和括在方括号[]中的字符序列。
1)*代表任何字符串(包括0个)。
例如:
“f*”匹配以f打头的任意字符串。
2)?
代表任何单个字符。
3)[]代表指定的一个字符范围,只要文件名中[]位置处的字符在[]中指定的范围之内,那么这个文件名就与这个模式串匹配。
(2)引号
单引号(‘):
由单引号括起来的字符都作为普通字符出现。
特殊字符用单引号括起来以后也会失去原有意义,而只作为普通字符解释。
双引号(”):
由双引号括起来的字符,除“$”、“\”、“’”、和“””这几个字符仍是特殊字符并保留其特殊功能外,其余字符作为普通字符对待。
反引号(`):
括起来的字符串被shell解释为命令,在执行时,shell首先执行该命令,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
(3)注释符:
在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。
在Shell中以字符“#”开头的正文行表示注释行
5、别名
●命令别名通常是其他命令的缩写,用来减少键盘输入。
命令格式为:
aliasalias-name=’original-command’
●Eg:
$aliascdir='
cd/home/user/dir'
●如果想取消别名,在bash提示符下键入如下命令:
$unalisascdir
●不加参数的alias命令执行结果将显示当前系统中定义的所有命令别名。
示例
6、命令历史:
Linux系统的bash提供了命令历史的功能,用history命令可以对当前系统中执行过的所有shell命令进行显示。
●若想重复执行命令历史中指定的命令,可使用如下格式:
!
命令编号eg:
5
●环境变量HISTSIZE的值保存历史命令记录的总行数,该值的范围正常情况下是100~1000,当从shell中退出时,最近执行的命令将保存在HISTFILE变量指定的文件中。
●环境变量HISTFILE指定存放命令历史的文件名称
第3节shell脚本
1.什么是Shell脚本
●Shell脚本是使用shell命令编写的文件,也称为shellscript。
●与结构化程序不同,shell不需要编译成目标程序,也不需要链接成可执行的目标码,shell是按行一条接着一条地解释并执行shell脚本中的命令。
2.shell脚本执行方式
有3种方式可以执行一个bash脚本。
(1)为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行。
(2)shshell脚本名
(3).shell脚本名
第4节shell变量
1.用户自定义变量
用户自定义变量的格式:
Variable-name=value
如果字符串里包含空格,就必须用引号把它们括起来。
还要注意在等号两边不能有空格。
无论何时想要获取变量内容,必须在它前面加$字符。
清除变量
设置的变量不需要时可以清除,清除变量格式如下:
unsetvariable-name
2环境变量
当一个shell脚本程序开始执行时,一些变量会根据环境设置中的值进行初始化,这就是环境变量
它决定了用户的工作环境,通常用大写字母作为变量名,以便把它们和用户在脚本程序里定义的变量区分开来。
环境变量的值在系统的配置文件中设置,用户可对其进行修改
常用环境变量:
用命令:
env可以查看环境变量;
3.位置变量
●如果脚本程序在执行时带有参数,就会创建一些额外的变量,这些额外的变量因跟变量所在命令行位置有关,因此被称为位置变量或位置参数。
●shell提供的位置变量有$0、$1、$2、$3、$4、$5、$6、$7、$8、$9。
●这10个位置变量在shell脚本执行时用于存放shell脚本名及参数。
其中位置变量$0存放脚本名,$1、$2、$3、$4、$5、$6、$7、$8、$9存放从左至右的命令行上的参数。
当命令行上命令参数超过9个时,shell提供shift命令可以把所有参数变量左移一个位置,使$2变成$1,$3变成$2,依此类推。
使用格式如下:
shift[n]其中n表示向左移动参数的个数,默认值为1。
4.特殊变量
shell中有一些变量是系统定义的,有特殊的含义,变量值由系统指定,被称之为特殊变量:
●$#:
表示传递给脚本的实际参数个数。
●$$:
当前shell脚本的进程号。
●$*:
位置参数的值,各个参数之间用环境变量IFS中定义的字符分隔开。
●$@:
也表示位置参数的值,它不使用IFS环境变量,所以当IFS为空时,参数值不会结合在一起。
●$!
:
上一个后台命令的进程号。
●$?
执行最后一条命令的退出状态。
第5节shell编程基础
1)输入命令:
使用read命令来将用户的输入赋值给一个变量。
命令格式如下:
readvariable-name1[variable-name2……]
2)输出命令:
echo默认情况下是换行标准输出语句。
echo输出多个空格时必须用单引号括起
3)export命令:
export命令可将在shell脚本中定义的变量导出到子shell中,并使之在子shell中有效。
Shell其他实例详细的见书:
3.Shell的算术运算
bash提供了3种方法对数值数据进行算术运算:
(1)使用expr命令:
expr命令将它的参数当作一个表达式来求值。
语法格式:
exprexpression
在使用expr时,运算符前后要有空格,且乘法要用“\”转义,即“\*”的形式。
(2)使用shell扩展$((expression)):
该命令用于计算一个expression并返回它的值
这与x=$(...)命令不同,两对圆括号用于算术替换,而我们之前见到的一对圆括号用于命令的执行和获取输出
(3)使用let命令
用来求算术表达式的值,如果最后表达式的值为0,let命令返回1;
否则返回0。
语法格式为:
letexpression
使用let命令时,变量前的$不是必须的,乘法也不需转义使用。
#!
/bin/bash
#Thisisascripttomakesumaboutthenumber
sum=0
forpin$*
do
sum=$((sum+p))
done
echo"
thetotalis$sum"
#end
第6节shell控制结构{见书P169}
第7节shell函数{P179}
Linux文件IO编程
●“一切都是文件”是linux的基本哲学思想;
●这里的“一切”确确实实意味着一切。
硬盘,硬盘分区,设备接口,网络连接,所有这些都是文件。
甚至目录也是文件。
●除了标准的文件和目录,Linux还可以辨识很多别的类型的文件。
注意这里说的文件类型不是文件内容的类型:
不论是PNG图象,二进制文件还是其他什么,文件就是一串数据流。
通过内容区分文件类型是留给应用程序的任务。
文件的操作途径:
●shell命令
●系统调用(openwrite等直接陷入内核的函数)
●C函数(C函数库等不直接陷入内核的函数)
Linux文件主要分为四种:
普通文件、设备文件、目录文件、链接文件;
文件描述符:
当打开一个文件时,内核就会分配给你一个非负整数,通过这个整数便可读写文件;
当一个进程启动时,系统会自动分配三个文件描述符,分别是:
●标准输入:
文件描述为0STDIN_FILENO
●标准输出:
文件描述为1STDOUT_FILENO(每一次在内核组织好,一次性送出来)
●标准错误输出:
文件描述符为2STDERR_FILENO(每一次都进内核,以最快速度反馈给用户)
Linux中文件访问的IO函数分为两类:
不带缓冲的I/O,直接去找系统调用,速度快。
(openreadwritelseekclose),这些函数不是ANSIC的组成部分,是POSIX的一部分。
带缓冲的I/O,在系统调用前采用一定的策略,速度慢,比不带缓冲的I/O安全。
(fopenfreadfwrite)
open()函数是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
注:
mode_t是系统进行的宏定义,其类型为unsingedint型、类似的还有size_t等;
功能:
打开一个文件
参数:
@pathname路径(文件名字符串)@flags打开的方式
O_RDONLYO_WRONLYO_RDWR
O_TRUNC(若文件已经存在,那么打开文件时先删去文件中原有数据,并设置文件大小为0)。
O_APPEND(以添加方式打开文件【文件尾】)
O_CREAT(若该文件不存在则创建该文件,并以第三个参数mode指定其权限【勿掉权限】)
O_EXCL如果使用O_CREAT时文件存在,则可返回错误消息。
这一参数可以测试文件是否存在。
此时open是原子操作,防止多个进程同时创建同一个文件。
1.这些宏可以用"
|"
在一起组合使用2.有O_CREAT参数需要通过第三个参数来指定权限
@mode指定新建文件的权限
注意:
通过open创建的文件,实际权限求法:
mode&
~umask;
在终端通过umask命令可以查看该值;
返回值:
成功返回最小未使用的文件描述符(fd,int类型),【不一定是按顺序返回,返回的是最小未使用的文件描述符,其中0(标准输出stdout),1(标准输入stdin),2(标准出错stderr)已占用】失败返回-1
w"
->
O_WRONLY|O_CREAT|O_TRUNC,0666
"
w+"
O_RDWR|O_CREAT|O_TRUNC,0666
r"
O_RDONLY
r+"
O_RDWR
a"
O_WRONLY|O_APPEND|O_CREAT,0666
a+"
O_RDWR|O_APPEND|O_CREAT,0666
close函数
intclose(intfd);
fd:
文件描述符
成功关闭返回0;
失败返回-1;
(fclose失败返回EOF)C语言用errno进行错误处理;
(3)读写//读
ssize_tread(intfd,void*buf,size_tcount);
注:
size_t是系统定义的宏类型,它是int型
功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统编程基础考试复习总结 系统 编程 基础 考试 复习 总结