一.Linux常用命令
1.man 适用于在Linux手册页上查找相应的指令用法
例:man write 查找write命令的手册页
man z write 查找系统调用write的手册页
man [n] item 其中,n表示节号,一般从1~8;1代表可执行程序,2代表系统调用,3表示C库函数
查找时,字符n表示查找下一个,字符N表示查找上一个
2.find命令
find + 路径 + 文件名(表示按照整个路径查找)
例:find / -name hello*(表示在根目录下查找)
3.chgrp 改变文件的属性,改变文件所属群组
chorp 新的组名 文件名/目录
chown 改变文件的拥有者
chown (-R用于递归)+(xxx用户名)+(文件/目录) 注:把xxx文件/目录改到xxx用户下
4.chmod 改变权限
一种是用数值表示,一种是用字符
例:chmod -R 650 temp(数字6表示用户可读可写,数字5表示的是可读可执行,数值0表示第三方无权限(可读用数字4表示,可写用2表示,可执行用1表示,无权限用0表示))
chmod u = rwx(用户自己可读可写)
chmod og = rw (将第三方和群组的权限改为可读可执行)
chmod a - x(所有的取消执行权限)
5.cd ~ 当前用户的家目录
cd - 前一个工作目录
6.mkdir只能创建一个空的目录子目录需要另行创建
目录和子目录一起床的方法:一次创建abc三个目录:mkdir -p a/b/c
7.rmdir只能删除空目录,目录下不能有文件,用法和上面的mkdir相似
8.rm删除文件的命令
rm -r 文件名(删除制定的文件,会询问是否删除)
rm -f 文件名 (强制删除指定的文件)
rm -r 删除目录
9.PATH搜索路径,查环境变量
echo $path 激昂搜索路径回显到屏幕
PATH = "$PATH":/root(临时增加搜索路径)
10.ls -S按照文件大小排序
-color -never/always/auto
-t 按照时间排序
11.cp 复制命令 -i询问是否覆盖,-f强制覆盖 ,-r递归复制(一般是将文件和目录都复制过去)
-d连文件属性一起复制
-P功能同-d
-r递归 连目录带文件一起复制
-u 更新(根据时间戳自行比较)
-a作用相同于-d和-P和-r的结合
12.mv 移动(相当于剪切);更名
mv ____ __源__ __名字__
13.vim编辑器
cat 从上往下查看
tac 从下往上查看
more(一页页显示) 只能往后翻
less (一页页显示) 能前后翻
head 指定显示文件的几行例:head -n 20 hello(显示hello文件的前20行)
14.压缩文件 tar -cvzf
解压缩文件 tar -xvzf
15.ifconfig 查看虚拟机的IP地址 eth0
16.d1G 删除光标所在行到开头的内容
dG 删除光标所在行到行尾的内容
u 撤销命令
Ctrl+r重复之前的操作
:/ 从光标开始往下 n 查找选定的字符往下跳
:? 从光标开始往上 N查找选定的字符往上跳
:! 调用外部命令 使用 Linux命令
区块的选择:Ctrl+v 用鼠标选择想要的区域
V 选定光标所在的整行
17.vim 文件名1 文件名2
在进入文件名1的命令模式,输入:n往后翻,进入文件名2的命令模式
:file 列出打开的所有文件的文件名
:sp (xxx文件)在vim中分屏打开另一个xxx文件的窗口
Ctrl+wj 往下一个窗口切换
Ctrl+wk 往上一个窗口切换
q 退出其中一个窗口
二.gcc编译器
18.gcc 编译器的使用
gcc +options filename
其中,options 参数设置
19. -o 指定输出文件(即可执行文件)的文件名, 例 gcc mian.c -o mian
生成可执行文件 main
20. -E 生成预处理文件,例 gcc -E -mian.c >mian.i;生成预处理文件 main.i
21. -c 只编译,不生成可执行文件,只会产生目标文件
例 gcc -c mian.c,会生成目标文件 mian.o
22.多文件编译,只有一个主函数
例:gcc add.c hello.c -o hello.out(hello.c文件中有需要用到add.c)
23. -W 把所有的错误进行报警
24. -werror 把所有的程序警告当成错误
25. -w 忽略所有的警告
26. -S 生成汇编程序
27. -g 生成调试程序
28. -O O0没有优化(最低)
O1一级优化
O2二级优化
O3三级优化(最高)
29.D 宏定义
例 gcc mian.c -DPI=3.14
源程序里面没有用定义PI 在编译的时候直接进行宏定义
30.-U取消宏定义
31.-I ;例: -Idirname 将dirname所指的目录加入到程序头文件目录列表中,到该目录下去搜
32. -L: 例: -Ldirname 将dirname 所指的目录加入到库文件中
-l -lname 指出具体的库
三.静态库(静态函数库是.a文件)
33.创建步骤:①gcc -c 源文件.c
②ar rcs + 静态库名 + 目标文件名1 + 目标文件名2
其中;rcs是选项,rc指当静态库不存在时,就该库文件,s是更新库文件,静态库名(格式):libxxxxxx.a
34.使用方法:gcc -o file file.c -L. -lname
其中,file是可执行文件,-L. 是当前目录,-lname 是库名
35.ar -d “库名” 目标文件1,目标文件2……( 删除相应的文件1,文件2…. )
ar -dv “库名” 目标文件1,目标文件2……( 删除相应的文件1,文件2….,但是删之前会询问 )
ar -t “库名” 查看当前库当中的目标文件
ar -x “库名” 文件1,文件2(提取库当中的 文件1,文件2……)
四.动态库(动态函数库是.so文件)
36.动态库的创建
gcc -shared -fPIC -o “库名.so” 源文件.c
37.动态库的使用
gcc 源文件.c ./“库名.so” -o 可执行文件名(.o文件)
五.gdb调试器
38.启动调试程序步骤:①gcc -g test.c -o test
②gdb test
39.设置断点
在main函数处设置断点:break(或b) main
运行程序:run
单步运行:next(或n)
继续运行:continue(或c)
40.l 列表查看代码,一般一次10行;
l + 行号 (从当前行开始向下显示10行)
41.info break (查看断点)
42.print(或p) result (查看循环中某次的result值,其中,这里的result是我的代码中的一个变量)
43.finish 结束当前函数的运行,返回到调用的位置
44.b + 文件名 + 行号 (在某文件的某行设置断点)
45.clear清楚所有的断点
46.q 退出调试模式
小知识点:
1.上节课的补充:
文件名.s .:s 结尾的文件是汇编文件
文件名.i:以.i结尾的文件是预处理之后的文件
ls -l:列出的是长格式的文件,
第一列是文件的属性,第2~4列是用户的权限,第5~7列是群组的权限,第8~10列是第三方权限
d目录文件,p管道文件,c字符文件,b块文件,l 快捷方式文件,s 套接字,- 是普通文件
2.快捷键:
Ctrl + C终止程序运行,Ctrl + d 退出终端,Ctrl + z结束当前进程,Ctrl + l 清屏,Tab快速填充