第一节、Linux基础
1.Linux命令
- Linux中命令格式为:
command [options] [arguments]
- 选项:是调整命令执行行为的开关,选项不同决定了命令的显示结果不同
- 参数:决定了命令的显示结果不同
例如:
ls .
中.为参数;ls -a
中-a为选项
2.man命令
- 1 Executable programs or shell commands(普通的Linux命令)
- 2 System calls (系统调用,操作系统的提供的服务接口)
- 3 Library calls (库函数, C语言中的函数)
- 4 Special files (指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义)
- 5 File formats and conventions eg /etc/passwd(配置文件帮助)
- 6 Games(给游戏留的,由各个游戏自己定义)
- 7 Miscellaneous (给游戏留的,由各个游戏自己定义), e.g. man(7), groff(7)
- 8 System administration commands (系统管理用的命令,这些命令只能由root使用,如ifconfig)
- 9 Kernel routines [Non standard]
3.man -k命令
- 多关键字查找
man -k key1 | grep key2 | grep key3 | ...
4.cheat命令
cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。 通过cheat安装与学习学习cheat命令。
其他核心命令
- find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个Everything工具和locate类似)
- grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识
- grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识
第二节、Linux下C语言开发基础
vim编辑器
- vim基本操作
h
左移j
下行k
上行l
右移- 欲进入vim编辑器(从命令行提示符),输入vim文件名<回车>
- 退出vim,放弃所有修改: :
q
! <回车> - 退出vim,保存所有修改: :
wq
! <回车> - 正常模式删除字符:
x
- 正常模式插入文本:
i
- 按下回到正常模式
- 欲从当前光标删除至单子、单词末尾:
dw
- 欲从当前光标删除至当前行末尾:
d$
- 欲删除正行:
dd
- 正常模式下一个命令格式:
[number] command object
number - 命令执行的次数 command - 要做的事情,比如d代表删除 object - 代表要操作的对象,比如w代表单子、单词,¥代表到行末。
- 撤销以前的操作:
u
- 撤销在一行中所做的改动:
U
- 撤销以前的撤销命令,恢复以前的操作结果:
CTRL-R
- 重置已经删除的文本内容:
p
- 替换光标所在位置的字符:
r
- 替换当前光标到单词末尾的内容:
cw
- 替换当前光标到行末的内容:
c$
- 更改命令的格式:
[number] c object
- 显示当前光标所在位置和文件状态信息:
CTRL -g
; Shift -G将光标跳转至最后一行,敲入行号后按Shift -G将光标移动至指定行号。 - 在当前编辑文档中向后查找:
/+字符串
- 在当前编辑文档中向前查找:
?+字符串
- 光标当前位置是括号,查找配对括号:
%
- 一行内替换一个字符串:
s/old/new
- 一行内替换所有字符串:
s/old/new/g
- 在两行内替换所有的字符串:
#,#s/old/new/g
- 在文件内替换所有的字符串:
%s/old/new/g
- 进行全文替换时询问用户确认每个替换需添加 c 选项:
%s/old/new/gc
- 执行一个外部命令:
:!command
,如:!dir
用于显示当前目录的内容 - 将当前VIM中正在编辑的文件保存到名为FILENAME的文件中:
w FILENAME
:#,#w FILENAME
可讲当前编辑文件第# 行至第 #行的内容保存到文件FILENAME中:r FILENAME
可提取磁盘文件FILENAME,并将其插入到当前文件的光标位置。- 输入小写的
o
可在光标下方打开新的一行 - 输入大写的
O
可在光标上方打开新的一行 - 输入
a
可在光标所在位置之后插入文本 - 输入
A
可在光标所在行的行末之后插入文本 - 输入大写
R
进入替换模式 /xxx;set ic;set hls is
- vim中的help命令与man命令类似
- :
set nu
显示行号 - :
set ai
自动缩行 - :
set ts=4
设置一个 TAB 键等于几个空格
编译器 gcc的使用
用gcc编译程序
- 在Xfce终端中打开输入
vim
打开vim编译器 - 进入插入模式并输入程序,用命令q保存文件名为hello.c
- 退出vim编译器,并在终端中输入
gcc hello.c -o hello
指令编译程序,成功后输入./hello
执行程序。
gcc编译模块化的程序
通常一个程序都是有很多个源文件组成,相应的就形成了多个编译单元 gcc能够很好的处理这些编译单元,最终形成一个可执行程序
GDB的使用
- 1.启动gdb的方法有以下几种:
a)gdb program也就是执行文件,一般在当前目录下。
b)gdb core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。
c)gdb 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。
- 2.设置断点
(gdb) break func <-------------------- 设置断点,在函数func()入口处。
(gdb) info break <-------------------- 查看断点信息。
(gdb) r <--------------------- 运行程序,run命令简写
(gdb) n <--------------------- 单条语句执行,next命令简写。
(gdb) c <--------------------- 继续运行程序,continue命令简写。
(gdb) p I <--------------------- 打印变量i的值,print命令简写。
(gdb) bt <--------------------- 查看函数堆栈。
(gdb) finish <--------------------- 退出函数。
(gdb) c <--------------------- 继续运行。
(gdb) q <--------------------- 退出gdb。
- 3.其他调试命令有:
display 跟踪变量值的改变 until 跳出循环 finish 跳出函数 help 帮助
Make和Makefile
进去Makefile
$ vim Makefile
1.Makefile 基本规则
1.Makefile的一般写法:
一个Makefile文件主要含有一系列的规则,每条规则包含以下内容:
- 需要由make工具创建的目标体,通常是可执行文件和目标文件,也可以是要执行的动作,如‘clean’;
- 要创建的目标体所依赖的文件,通常是编译目标文件所需要的其他文件。
- 创建每个目标体时需要运行的命令,这一行必须以制表符TAB开头
test(目标文件): prog.o code.o(依赖文件列表) tab(至少一个tab的位置) gcc prog.o code.o -o test(命令) ....... 即: target: dependency_files command
2.Makefile还可以定义和使用宏(也称做变量):
- 定义宏的格式为:macroname = macrotext
- 使用宏的格式为:$(macroname)
3.Makefile的一般写法:
- test(目标文件): prog.o code.o(依赖文件列表)
- tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)