0.帮助文档
man man —— 查看帮助文档首页
注:帮助文档具体章节
第一章 —— 可执行程序或shell命令(如ls、cd、date)
第二章 —— 系统调用(内核提供函数,如open)
第三掌 —— 库调用(程序库的函数,如C语言中的fopen)
第四章 —— 特殊文件(通常位于 /dev)
第五章 —— 文件格式和规范( 如 /etc/passwd)
第六章 —— 游戏
第七章 —— 杂项(包括宏包和规范,如man(7),grof(7))
第八章 —— 系统管理命令(通常只指针root用户)
第九章 —— 内核标准
1.1清空窗口
clear
CTRL + L
1.2终端翻页
SHIFT + pageup —— 向上翻页
SHIFT + pagedown —— 向下翻页
1.3设置行号
:set nu —— 设置行号
:set nonu —— 取消行号
2.vim文本编辑器(命令模式)
vi/vim hello.txt —— 创建/打开hello文件(默认开始时便自动进入命令模式)(可同时打开多个文件):
移动操作:
H —— 光标向左移动
J —— 光标向下移动
K —— 光标向上移动
L —— 光标向右移动
0 —— 光标移动到行首
SHIFT + 4($) —— 光标移动到行尾
gg —— 光标移动到第一行行首
SHIFT + g(G) —— 光标移动到最后一行行首
n + G —— 光标移动到第n行行首
删除操作(本质是剪切操作):
x —— 删除光标后的字母
SHIFT + x(X) —— 删除光标前的字母
u —— 恢复上一步操作
d + w —— 删除光标后的一个单词
d + 0 —— 删除光标之前一行的全部单词
SHIFT + d(D)—— 删除光标之后一行的全部单词
dd —— 删除光标所在行的全部单词
n + dd —— 删除从光标开始之后n行的内容
粘贴操作:
p —— 在光标下一行粘贴
复制操作:
n + yy —— 复制n行
可视模式:(可视模式下复制为y,删除为d,粘贴为p)
v —— 进行可视模式,字符选择,光标经过地方进行反白选择
V —— 进行可视模式,行选择,光标经过地方进行反白选择
CTRL+ v —— 进行可视模式,矩形选择,光标经过地方进行反白选择
查找操作:
/查找内容 —— 查找操作(n向下翻,N向上翻)
?查找内容 —— 查找操作
替换操作:
r + 单个字符 —— 替代单个字符
缩进操作:
SHIFT + >(双击) —— 向右缩进
SHIFT + < (双击) —— 向左缩进
帮助操作:
SHIFT + k —— 查找光标所在命令的用法
3.vim文本辑器(文本模式)
a —— 从命令模式跳转到文本模式,从光标后开始编辑
SHIFT + a(A) —— 从命令模式跳转到文本模式,从光标所在行的行尾开始编辑
i —— 从命令模式跳转到文本模式,从光标前开始编辑
SHIFT + i(I) —— 从命令模式跳转到文本模式,从光标所在行的行首开始编辑
o —— 从命令模式跳转到文本模式,从光标所在行下面创建新一行,新一行开始编辑
SHIFT + o(O) —— 从命令模式跳转到文本模式,从光标所在行上面创建新一行,新一行开始编辑
s —— 从命令模式跳转到文本模式,删除光标后一个字符,开始编辑
SHIFT + s(S) —— 从命令模式跳转到文本模式,删除光标所在行的单词,开始编辑
SHIFT + r(R) —— 一直替换光标所在字符
4.vim文本编辑器(末行模式)
:+ n —— 编辑下一个文件
:+ N —— 编辑上一个文件
:+ s/xxx/yyy —— 将光标后的xxx替换成yyy(只能替换一个
:+ s/xxx/yyy/g —— 将光标后的xxx替换成yyy(替换当前行所有xxx
:+ %s/xxx/yyy —— 将所有xxx替换成yyy(只替换每行第一个xxx
:+ %s/xxx/yyy/g —— 将所有xxx替换成yyy
:+ n1 + n2 + s/xxx/yyy/g —— 将第n1行到第n2行的xxx替换成yyy
:/xxx —— 查找命令xxx
:esc(双击) —— 回到命令模式
:+ w —— 保存文件
:+ wq —— 保存并退出vim编辑器
: +q! —— 不保存并退出vim编辑器
5.vim编辑器三种模式转换
6.vim编辑器分屏
sp —— 水平分屏
CTRL + W(双击) —— 切换屏幕
:+ q —— 退出分屏
:+ w —— 保存内容
:+ wqall —— 保存所有并退出分屏
vsp —— 水平分屏
vsp + 文件名 —— 分屏,并在新屏幕打开文件
6.gcc编译的四个阶段
7.gcc编译参数
gcc xxx.c -o xxx —— 将xxx文件直接生成可执行文件
注意:.c文件中包含的头文件若不是系统文件,而是自己写的,则应该放在.c文件同级目录下,否则:
gcc xxx.c -o xxx -I 指定头文件或目录 —— 指定头文件目录后再编辑文件
gcc xxx.c -o xxx -D 宏名字 —— 编译时定义宏
gcc xxx.c -o xxx -O1/2/3 —— 将程序优化后再编译文件
gcc xxx.c -o xxx -Wall —— 编译文件时提示警告信息;
gcc xxx.c -o xxx -g —— 在可执行文件里添加调试信息
8.静态库
静态库名字
lib + 库名 + .a 如libmytest.a
制作步骤
(1)生成对应的.o文件;
(2)将生成的.o文件打包( ar rcs + 静态库名字(libmytest.a) + 生成的所有的.o)
(3)发布和使用静态库
包括静态库和头文件
gcc xxx.c -c xxx.o -L 库文件或目录 —— 指定库目录或文件
gcc xxx.c -c xxx.o -l 库名字(去掉lib和.a) —— 指定库名字
静态库优点:
1.包含库的应用程序发布时,不需要提供对应库;
2.加载库的速度快;
静态库缺点:
1.库打包到应用程序中,导致程序体积大;
2.库发生改变时,需要重新编译程序。
9.动态库
lib + 库名 + .so 如libmytest.so
制作步骤:
1.生成与位置无关的代码(生成与位置无关的.o)
gcc -fPIC xxx.c -c xxx.o
2.将.o打包成共享库
gcc -shared -o 共享库名字.so 所有.o文件
3.使用动态库
1)跟静态库类似
2)gcc main.c libMytest.so -o main.o
注:若使用动态库,在执行程序报错:error loading shared libraries:libMycalc.so: cannot open shared object file : No such file or directory时,可以采取以下三种措施:
第一种(暂时性、测试使用):
export LD_LIBRARY_PATH= + 包含动态库的目录 —— 将目录加入lib目录
第二种(不常用):
(1) 在家目录中打开.bashrc文件,然后将以下命令写入文件中的最后一行
#export LD_LIBRARY_PATH= + 包含动态库的目录(绝对路径)
(2)重启终端
sudo ldconfig
第三种:
(1)需要找动态链接器的配置文件
vi /etc/ld.so.conf
(2)动态库的路径写道配置文件中
(3)更新
sudo ldconfig