学习内容:编辑器vim,编译器gcc,makefile的编写方式。
得益于班级群里同学的分享,我完整地了解了Linux的几个通配符“*”,“?”,“[]”,“^”,“{}” 的用法,纠正了自己昨天做的一个题目的答案,这个题目是这样的,“删除所有符合d开头、t结尾、且中间包含一个字母的文件。”,我写的答案是“find / -name “d[a-z]t” -delete”,实际上应该是“find / -name “d[a-zA-Z]t” -delete”。
在和我和同学讨论中,我知道了命令grep的正确用法,例如在搜索哪些文件包含某个字符串的时候,应该在grep后加个选项-R表示递归,即在遇到目录时进入再返回。而选项-a
编辑器vim有三种模式,插入,命令,底行模式。
命令模式下
<x> 删除一个字符 <3x>删除3个字符
<dd>删除一行 <3dd>删除3行
<p>在光标下一行粘贴
<yy>复制一行 <3yy>复制3行
<u>撤销
</>查找 </fg>查找fg(fg会高亮,在底行模式下输入noh取消高亮) <n>查找下一个 <N>查找上一个
<ZZ>保存并退出
底行模式下
:w 保存 :q 退出 :wq 保存并退出
:q!放弃修改强制退出 :e! 放弃修改并重载当前文件
:3 光标调到第3行 (在终端中编辑文件时输入vim x.xx +3有同样效果)
:%s 替换 %s/char/int/g 把所有的插入替换为int
:sp xx.xx 在vim里打开其他文件xx.xx ctrl+w 切换当前的操作文件
vim的配置
vim的系统配置文件在/etc/vimrc,常用配置如下,
set auroindent 自动缩进
set shift width=4 自动缩进的宽度
set tabstop=4 tab的宽度
set number 或 set nu 设置行号 set nonu 取消行号
syntax on 语法高亮
编译器gcc
gcc的基本格式为
gcc [option] [filename]
编译共有4个步骤 1.预处理,2.编译,3.汇编,4.链接。
1.预处理:处理所有以#开头的代码,包括
#include 头文件展开(复制替换)
#if 0 条件编译,注释(这一部分代码不编译)
#define 宏替换
命令 gcc -E hello.c -o hello.i (hello.i是一个文本文件)
2.编译:语法检查、把C代码翻译成汇编代码
命令 gcc -S hello.i -o hello.s (hello.s是一个文本文件)
3.汇编:把汇编语言编译成二进制文件。
命令 gcc -c hello.s -o hello.o (hello.o是一个二进制文件)
4.链接:链接程序需要用的库文件。
命令 gcc hello.o -o hello (hello是一个可执行文件)
前三个阶段都只能操作一个文件,第四个阶段能操作多个文件
在编译多个.c文件时可以这样 gcc hello.c print.c -o hello
在使用make时 优先搜索Makefile而后搜索makefile
Makefile的基本格式
Target:dependency
(tab)command
初级版:
hello:hello.c
gcc hello.c -o hello
定义变量表示
Target=hello
Object=hello.c
$(Target):$(Object)
gcc $(Object) -o $(Target)
隐含规则实例
Target =hello
Object =hello.o print.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
(隐)hello.o:hello.c
gcc -c hello.c -o hello.o
print.o:print.c
gcc -c print.c -o print.o
.PHONY:clean//将clean设置成一个伪目标,避免目录下有文件clean导致报错。
clean:
rm *.o hello