经常使用命令总结linux
man -k k1 | grep k2 | grep 2git
搜索同时含有k1和k2,且属于系统调用。vim
最后的数字意味着帮助手册中的区段,man手册共有8个区段,最经常使用的是123,含义以下:安全
1.Linux
2.系统调用
3.c语言编辑器
可是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的:函数
man 3 printf
即查找c语言中printf的用法。工具
这条语句能够用来查找关键字,全文搜索,而且能够直接查找文件内的内容。其中:学习
n:为显示行号
r:为递归查找
例如,若是想查找某个宏,咱们已知宏保存在include文件夹中,因此可使用下列语句:ui
grep -nr XXX /usr/include(XXX为所要找的宏)命令行
cheat是很是好用的“打小抄”搜索工具,可以方便的告诉你你想要的内容。
将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
参数:
m:将几个排序好的文件进行合并。
n:依照数值的大小排序
Linux Bash中,ls . | sort 命令的功能是(显示当前目录内容并排序)
经常使用工具
vim是一种很是好用的编辑器,总共有六种基本模式,最经常使用的是普通模式、插入模式和命令行模式。须要熟悉这三种模式之间的切换方式:
普通→插入: i 或 a 插入→普通: Esc 或 Ctrl + [ 普通→命令行: : 命令行→普通:Esc 或 Ctrl + [
经常使用的进入、保存和退出指令:
进入:vim 文件名 保存:命令行模式 :w 退出:命令行模式 :q
经常使用动做:
删除:dd删除整行 复制:yy复制整行 粘贴:p
经常使用选项
-c 只编译不连接,生成目标文件.o -S 只编译不汇编,生成汇编代码 -E 只进行预编译,不作其余处理 -g 在可执行程序中包含标准调试信息 -o file 将file文件指定为输出文件 -v 打印出编译器内部编译各过程的命令行信息和编译器的版本 -I dir 在头文件的搜索路径列表中添加dir目录
编译过程
预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调用ccl 翻译成汇编文件 汇 编:gcc –c hello.s –o hello.o; gcc -c 调用as 翻译成可重定位目标文件 链 接:gcc hello.o –o hello ; gcc -o 调用ld** 建立可执行目标文件
-o后面是接的你给生成的文件指定的名字,若是不指定,则默认为a.out
在命令行上运行这个可执行目标文件须要输入它的名字:
./a.out
其中./表明当前目录。
注意:使用GCC编译时要加“-g”参数,而后才可以用gdb调试
GDB最基本的命令有:
gdb programm(启动GDB) l 查看所载入的文件 b 设断点 info b 查看断点状况 run 开始运行程序 bt 打印函数调用堆栈 p 查看变量值 c 从当前断点继续运行到下一个断点 n 单步运行(不进入) s 单步运行(进入) quit 退出GDB
四种断点:
1.行断点 b [行数或函数名] <条件表达式> 2.函数断点 b [函数名] <条件表达式> 3.条件断点 b [行数或函数名] <if表达式> 4.临时断点 tbreak [行数或函数名] <条件表达式>
静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文 件);连接阶段,选择静态库,后缀名为“.a”;选择动态库,后缀名为“.so”。
静态连接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o
静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx//连接到静态库
注意:
-L:在库文件的搜索路径列表中添加dir目录
-l:在头文件的搜索路径列表中添加dir目录
共享库的生成:
gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
共享库的使用:gcc -o main main.c -L. -lxxx
注册共享库的方法:将库文件直接复制到/lib或者/usr/lib目录下: cp (lib+name).so /lib
本学期学习Linux有不少收获的,学到了在Linux中使用命令行来完成一些操做,而且真正对于git有了了解和使用,发现git确实很好用,对于上传的每一个代码均可以作详细的注释,在之后的使用中会更加方便。
对于Linux的一些基本命令还不是很熟悉,这些东西不常常用很容易忘掉,还有就是书上的内容不少时候每章的后半部分都是草草略过,毕竟想要把每章100多页的东西彻底理解透彻仍是须要必定时间的。
我以为学了半学期让我最有收获的仍是前两周我作的缓冲区溢出实验,虽然刚开始作这个实验时仍是具备必定的目的性的,可是作到后面时我确实对这个实验产生了很大的兴趣,越作越以为这个东西学起来颇有意思,最后,不只让我了解了掌握了关于这个实验方面的知识,还在作实验的过程当中不断的复习了不少Linux的基本操做,因此我以为实践才是最好的学习方法。可是,我认为老师在给同窗们布置实验时应该给出大概的实验过程和有关的一些资料,让同窗们从资料中去了解学习,而后根据给出的大概过程去不断地完善,最后不只能很大几率的作出实验,还不会让同窗们以为只有一个题目而不知从何下手。