知识点总结
第一部分——Linux命令
1、 man命令
· 在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。要查看相应区段的内容,就在 man 后面加上相应区段的数字即可
· man命令通常与管道命令结合使用
man -k k1 | grep k2 | grep 2
· man -k 填空:Linux中显示文件(file )属性(status)的命令是( stat )
数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)
2、grep命令
· 用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,
或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
· -n:在显示符合范本样式的那一列之前,标示出该列的列数编号。
-r:为递归查找
· grep 填空:
~/test 文件夹下有很多c源文件,查找main函数在哪个文件中的命令( grep main .c )
Linux Bash中,使用grep查找当前目录下.c中main函数在那个文件中的命令是( grep main *.c )
查找宏 STDIN_FILENO 的值的命令是(grep -nr XXX /usr/include)
3、cheat命令
· cheat是非常好用的“打小抄”搜索工具,能够方便的告诉你你想要的内容。
· 填空:
To list the content of /path/to/foo.tgz archive using tar ( tar -jtvf /path/to/foo.tgz )
使用du命令对当前目录下的目录或文件按大小排序 的命令是( du -sk *| sort -rn )
一、文件管理类命令:
1 cat命令
· 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出
· 参数:
-n 由 1 开始对所有输出的行数编号
-b 和 -n 相似,只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
· 判断:Linux Bash中,cat -n 和 nl 命令功能等价。对
2 find命令
· 用法 : find
使用说明: 将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
· 范例:
将目前目录及其子目录下所有延伸档名是 c 的档案列出来:# find . -name "*.c"
将目前目录其其下子目录中所有一般档案列出:# find . -ftype f
将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出:# find . -ctime -20
· find 填空:
查找当前目录下所有目录的find命令是(find . -type d)
查找当前目录下2天前被更改过的文件 (find . -mtime +2 -type f -print)
3 locate命令
· 使用方式: locate [-q] [-d ] [--database=]
说明:locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。
二、文档编辑类命令:
1 sort命令
· 将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
· 参数:
-m:将几个排序好的文件进行合并。
-n:依照数值的大小排序
· Linux Bash中,ls . | sort 命令的功能是(显示当前目录内容并排序)
三、磁盘管理类命令
1 du命令
· 显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
· 参数:
-a:显示目录中个别文件的大小。
-b:显示目录或文件大小时,以byte为单位。
-c: 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
· 判断:Linux Bash中,df和 du 命令功能等价。错
2 ls命令
· 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
· 参数:
-a 显示所有档案及目录
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-t 将档案依建立时间之先后次序列出
· 列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : ls -AF
· 填空:
Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)
3 who命令
· 使用方式 : who - [husfV] [user]
说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。
· 参数 :
-h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
第二部分——Linux编程基础
一、vim编辑器
1 vim的三种模式
命令行模式:只能移动光标,删除,复制,粘贴
插入模式:编辑文字
底行模式:文件保存或退出,设置编辑环境
2 操作
· 插入:i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符
· 保存文档:进入命令行模式,输入w回车,保存文档;输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
· 退出vim:进入命令行模式,输入wq回车,保存并退出编辑
3 剪切及粘贴
· 删除:dd删除整行
· 复制:yy复制整行
· 粘贴:p
二、GCC
1 使用GCC编译时要加“-g”参数,然后才能够用gdb调试
2 常用命令
gdb programm(启动GDB)
l 查看所载入的文件
b 设断点
info 查看断点情况
run 开始运行程序
bt 打印函数调用堆栈
p 查看变量值
c 从当前断点继续运行到下一个断点
n 单步运行(不进入)
s 单步运行(进入)
quit 退出GDB
3 四种断点(函数、行、条件、临时)
4 判断: gdb中next和step都可以单步跟踪,根据自顶向下原则应该优先选用step. 错
四、静态库和动态库
1 静态库
· 静态库的生成:ar rcsv libxxx.a xxx.o
· 静态库的使用: gcc -o main main.c -L. -lxxx 注意-L -l 的含义
· 创建它的可执行文件
gcc -02 -c main2.c
gcc -static -o p2 main2.o ./libvector.a
· 参数:
gcc -c只编译,不连接成为可执行文件。
ar -r:在库中插入模块(替换)
-c:创建一个库
-s:写入一个目录文件索引到库中
2 动态库
· 动态库的生成:gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
· 共享库的使用:gcc -o main main.c -L. -lxxx
3 静态库和动态库的区别与联系
· 静态函数库:.a;
利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,
编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。
如果静态函数库改变了,那么你的程序必须重新编译。
· 动态函数库:.so;
动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。
由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。
动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。
收获
经过两个月的学习,让我对计算机有了进一步的了解,包括汇编的知识,存储器的知识,机器进行计算等方面。收获最大的是如何学习。通过小组答疑论坛大家交流出现的问题,能够发现自己在看书时没有注意的细节,能够学习他人的学习态度。通过自己看书,起初是漫无重点的看,渐渐地学会根据老师给出的重点,有侧重点的学,自己的学习态度也逐渐由开始完成任务变成学知识。通过每周检测和博客评比,增加了认真学习的动力。学的知识只是一条条概念,很多时候不理解,但是结合书上的练习就变得容易了。自学应该是一个个人能力问题,而不仅仅是这门课程的学习方式。
不足
教材中的内容吸收的比较慢,知识点也没能好好灵活的运用,以后应该在学习过程中结合教材中的练习变化一下,应该就能更深刻的理解知识点。
课程建议和意见
我觉得这门课程相较于其他课程来讲,充分调动了我们的积极性,把“学习”从“期末突击”转变为了“苟日新,日日新”。不过,对于基础中等的同学来讲,其实我觉得现在的任务量也相当充实了;现在这种因人而异的学习任务更适合我们。
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 30/30 | |
第二周 | 300/500 | 1/3 | 20/50 | |
第三周 | 100/600 | 1/4 | 20/70 | |
第五周 | 300/900 | 1/5 | 30/100 | |
第六周 | 136/1036 | 1/6 | 20/120 | |
第七周 | 124/1160 | 1/7 | 20/140 | |
第八周 | 0/1160 | 3/10 | 20/160 |