Linux学习阶段性总结
2011-09-10 21:11
274 查看
一、linux基础
最近学linux下的C编程,就又从新装了Fedora。学过就是好捡,在总结一下熟悉的知识点吧,看看有没有不会的。
1、linux系统相关知识:linux是个开源的系统,有不同的版本,安装在\ 目录下,存储格式为ext3。
2、文件管理命令:进入、退出、建立、删除、查看、更改文件
3、VI编辑器:yy复制、p粘贴、:wq退出、a后移一位输入、i当前位输入
4、基本指令: linux 指令熟悉
who 察看有谁登陆,以及控制终端号。
tar -cvf a.tar.gz photoes 将photoes 打包为a.tar.gz
tar -xvf a.tar.gz 把文件解压到当前目录下
sync 数据同步写入磁盘。
chattr +i a 赋予a隐藏属性,使a不可删除与更改。去掉的方法 chattr -i a。lsattr显示文件的隐藏属性。
top 动态显示变化的进程。
5、用户和权限管理: Linux 添加用户 ,帐号管理 ,群组管理 详解
所有用户的ID都存放在/etc/passwd 中 例如
fsy:x:500:500:Fedora:/home/fsy:/bin/bash
信息内容依次为:用户名、密码(一个形式)、UID(UID为0时为root权限)、GID、用户信息说明栏、家目录、Shell。用户登陆的过程是这样的:首先在/etc/passwd中寻找是否有相应的帐号,如果没有则跳出,如果有的话则将该账号对应的UID 与GID 读出来,另外,该账号的家目录与shell 设定也一并读出。然后核对在/etc/shadow对应帐号的密码。最终进入shall。shadow的文件内容是这样:
fsy:$1$giEMo6.Y$rY2i/S7K2UXHTvxJ.VuEL.:15201:0:99999:7:::
其中前两项为帐户名和密码。
useradd 添加用户、passwd更改密码、userdel 删除用户、usermod更改用户。
6、SHELL编程:具体参考
shell编程1 shell编程2
unset name 取消变量的定义
$?:命令执行后返回的状态(0为正确执行;非0为出错) 可用于检查上一个命令执行是否正确
$$:当前进程的进程号
$#:位置参数的数量,$1表示第一个自变量
$0:当前执行的进程名
$1-$9:脚本参数
$*:所有位置参数的内容
shell中的引号:
1、单引号(‘):单引号括起来的字符(包括特殊字符)都作为普通字符。
2、双引号:由双引号括起来的字符,除$、\、’、和”这几个字符仍是特殊字符并保留其特殊功能,其余字符仍作为普通字符对待。
[注]:
$:用其后指定的变量值来代替这个变量
\:转义字符,其后面的字符为普通字符。通常需要加\的只有4个字符, $、\、’、和”。
对于”号,如果没加\,则与前一个“号匹配
3、反引号(`): 与键盘上的~同一个键上的符号。反引号括起来的字符串被shell解释为命令行,执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。
二、C 语 言
1、 sizeof用法和分析
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。其返回值类型为size_t,在头文件stddef.h中定义。在32位系统中:
char的sizeof值为1,char是我们编程能用的最小数据类型。
short的sizeof值为2;
int、float、long为4;
double为8;
所有的指针的sizeof值都为4。
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前
int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''\0''结尾的
char q[]="abc";
char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
结果是 4 3 3 2
2、笔试题strcpy写法
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL))
throw "Invalid argument(s)";
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
3、
C语言基础知识
+++的问题。
int i =1;
int j =2;
int k = i+++j;
printf("%d" ,k);
输出k为3。
编译原理有关编译器在词法解析的时候,对于运算符,总是查找最大的匹配也就是说,i+++j,编译器在找到+的时候,它不立即理解为+而是继续下一个字符,下一个字符仍然是+,可以组成++, 再往下的话便是+++,不成立了。所以i+++j会解析为(i++)+j 。另外i++是后自增,所以k=1+2=3,i再自增。++是所有的都算完了,再增加。
4、类型转换
unsigned int a =6;
int b=-20;
char c;
(a+b>6)?(c=1):(c=0);
printf("%d" ,c);
unsigned int 类型的数据与 int 类型的数据相运算后,自动转化为unsigned int类型。因此 a+b的值不是-14,而是一个unsingned int 类型的数424967382。因此返回值为1。
5、a和b比较大小,不许用if、?:、switch 。
int max=(a + b + abs ( a-b ) ) /2
a和b交换:
方案1:
a=a+b
b=a-b
a=a-b
方案2:
a=a^b
b=a^b
a=a^b
三、linux系统编程
1、gcc、gdb、makefile 学习和用法
2、通过patch实现生成使用补丁
3、系统调用的方式访问文件
最近学linux下的C编程,就又从新装了Fedora。学过就是好捡,在总结一下熟悉的知识点吧,看看有没有不会的。
1、linux系统相关知识:linux是个开源的系统,有不同的版本,安装在\ 目录下,存储格式为ext3。
2、文件管理命令:进入、退出、建立、删除、查看、更改文件
3、VI编辑器:yy复制、p粘贴、:wq退出、a后移一位输入、i当前位输入
4、基本指令: linux 指令熟悉
who 察看有谁登陆,以及控制终端号。
tar -cvf a.tar.gz photoes 将photoes 打包为a.tar.gz
tar -xvf a.tar.gz 把文件解压到当前目录下
sync 数据同步写入磁盘。
chattr +i a 赋予a隐藏属性,使a不可删除与更改。去掉的方法 chattr -i a。lsattr显示文件的隐藏属性。
top 动态显示变化的进程。
5、用户和权限管理: Linux 添加用户 ,帐号管理 ,群组管理 详解
所有用户的ID都存放在/etc/passwd 中 例如
fsy:x:500:500:Fedora:/home/fsy:/bin/bash
信息内容依次为:用户名、密码(一个形式)、UID(UID为0时为root权限)、GID、用户信息说明栏、家目录、Shell。用户登陆的过程是这样的:首先在/etc/passwd中寻找是否有相应的帐号,如果没有则跳出,如果有的话则将该账号对应的UID 与GID 读出来,另外,该账号的家目录与shell 设定也一并读出。然后核对在/etc/shadow对应帐号的密码。最终进入shall。shadow的文件内容是这样:
fsy:$1$giEMo6.Y$rY2i/S7K2UXHTvxJ.VuEL.:15201:0:99999:7:::
其中前两项为帐户名和密码。
useradd 添加用户、passwd更改密码、userdel 删除用户、usermod更改用户。
6、SHELL编程:具体参考
shell编程1 shell编程2
unset name 取消变量的定义
$?:命令执行后返回的状态(0为正确执行;非0为出错) 可用于检查上一个命令执行是否正确
$$:当前进程的进程号
$#:位置参数的数量,$1表示第一个自变量
$0:当前执行的进程名
$1-$9:脚本参数
$*:所有位置参数的内容
shell中的引号:
1、单引号(‘):单引号括起来的字符(包括特殊字符)都作为普通字符。
2、双引号:由双引号括起来的字符,除$、\、’、和”这几个字符仍是特殊字符并保留其特殊功能,其余字符仍作为普通字符对待。
[注]:
$:用其后指定的变量值来代替这个变量
\:转义字符,其后面的字符为普通字符。通常需要加\的只有4个字符, $、\、’、和”。
对于”号,如果没加\,则与前一个“号匹配
3、反引号(`): 与键盘上的~同一个键上的符号。反引号括起来的字符串被shell解释为命令行,执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。
二、C 语 言
1、 sizeof用法和分析
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。其返回值类型为size_t,在头文件stddef.h中定义。在32位系统中:
char的sizeof值为1,char是我们编程能用的最小数据类型。
short的sizeof值为2;
int、float、long为4;
double为8;
所有的指针的sizeof值都为4。
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前
int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''\0''结尾的
char q[]="abc";
char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
结果是 4 3 3 2
2、笔试题strcpy写法
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL))
throw "Invalid argument(s)";
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
3、
C语言基础知识
+++的问题。
int i =1;
int j =2;
int k = i+++j;
printf("%d" ,k);
输出k为3。
编译原理有关编译器在词法解析的时候,对于运算符,总是查找最大的匹配也就是说,i+++j,编译器在找到+的时候,它不立即理解为+而是继续下一个字符,下一个字符仍然是+,可以组成++, 再往下的话便是+++,不成立了。所以i+++j会解析为(i++)+j 。另外i++是后自增,所以k=1+2=3,i再自增。++是所有的都算完了,再增加。
4、类型转换
unsigned int a =6;
int b=-20;
char c;
(a+b>6)?(c=1):(c=0);
printf("%d" ,c);
unsigned int 类型的数据与 int 类型的数据相运算后,自动转化为unsigned int类型。因此 a+b的值不是-14,而是一个unsingned int 类型的数424967382。因此返回值为1。
5、a和b比较大小,不许用if、?:、switch 。
int max=(a + b + abs ( a-b ) ) /2
a和b交换:
方案1:
a=a+b
b=a-b
a=a-b
方案2:
a=a^b
b=a^b
a=a^b
三、linux系统编程
1、gcc、gdb、makefile 学习和用法
2、通过patch实现生成使用补丁
3、系统调用的方式访问文件
相关文章推荐
- linux 学习之命令总结(三)
- LINUX学习总结第6篇:搭建FTP服务器
- linux下驱动自动对焦学习总结
- Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
- Linux运维学习笔记-定时任务知识总结
- Linux进程通信学习总结
- (转)备受煎熬的一个月——ARM Linux开发阶段性总结
- Linux学习-常用命令总结
- shell学习五十七天----linux任务管理,针对上一讲的总结和扩展
- linux 学习之命令总结(一)
- Tomcat学习总结(11)——Linux下的Tomcat安全优化
- 基于mini6410的linux驱动学习总结(二 字符设备与块设备的区别)
- Linux进程通信学习总结
- Linux 学习博客总结
- 【Linux入门学习之】Linux关机命令总结
- Linux 学习总结(2)
- 总结四条对学习Linux系统有帮助的方法
- JavaSE视频学习阶段性总结 七(类,域,方法的修饰符)
- Linux信号及信号处理学习总结
- Linux逻辑卷管理LVM学习总结