一.vim编辑器
vim三种模式:
1.命令行模式
vim打开文件,就是命令行模式
命令行模式指令:
x:删除一个字符 nx:删除n个字符
dd:删除(剪切)一行 ndd:删除(剪切)n行
yy:复制一行 nyy:复制n行
p:粘贴
shift+g:跳到最后一行 gg:跳到第一行
*:查找光标所在的字符串 n:查找下一个
u:撤销
shift+zz:保存退出
2.底行模式
在命令行模式下,按:进入底行模式
底行模式指令:
w:保存 q:退出 wq:保存退出
w!、q!、wq!强制
sp+文件名:打开另一个文件 ctrl+ww:移动光标
/输入字符串进行查找 n:查找下一个 shift+n:查找上一个
:%s/原字符串/新字符串/g:替换全部zifuchuan
:set nonu:关闭行号 :set nu:打开行号
3.插入模式
在命令行模式下,按“a”或者“i”进入插入模式
二.gcc编译器
编译工作过程:
1.预处理
gcc -E hello.c -o hello.i
处理所有以“#”开头的文件,如:(1)头文件(展开)、(2)宏定义(替换)、(3)条件编译
hello.i 是文本文件
注:
#if 0
......
#endif //注释中间内容
2.编译
gcc -S-hello.i -o hello.s
将C代码翻译成汇编代码
3.汇编
gcc -c hello.s -o hello.o
将汇编代码翻译成二进制
4.链接
gcc 所有.o文件 -o hello
链接程序需要用到的其他程序
其他工具
1.gcc -I : 指定头文件路径
例:gcc test.c -o test -I /home
2.gcc -static : 静态链接
例:gcc test.c -o test -static
三.make和Makefile
Makefile程序编写:
Target(目标):dependency(依赖)
1.
hello:hello.c
gcc hello.c -o hello
2 .
Target=hello
Object=hello.o print.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
.PHONY:clean
clean:
rm *.o hello
注:make:执行Makefilewenjian
make clean:清除中间文件
四.gdb调试工具
gcc test.c -o test -g
gdb test
(gdb): l(list)显示代码
l+数字:显示该行的上5行和下5行
r(run):运行程序
b(break)+数字:在该行插入断点
c(continue):继续运行
i(info):查看断点
d(delete) b +数字:删除第几个断点
n(next):执行下一步
s(step):执行下一步,遇到函数会进入
p(print)+变量:打印变量的值
q(quit):退出
五.shell脚本
vim hello.sh
#!/bin/bash
echo "helloworld!"
echo "123456" > hello.txt
cat /mnt/hgfs/share/hello.c >>hello.txt
TMP="helloworld!"
echo ${TMP} //(echo $TMP)
echo "第一个参数是:$1"
echo "第二个参数是:$2"
echo $*
echo $# //显示几个参数
运行脚本文件:./hello.c
脚本循环程序:
circle.sh
1.
#!/bin/bash
for((i=0;i<5;i++))
do
echo "helloworld!"
down
2 .
for i in aaa bbb ccc ddd
do
echo $i
done
3 .
for i in $1 $2 $3 $4
do
mkdir $i
cd $i
echo > $i.c "
#include <stdio.h>
int main()
{
printf(\"helloworld!\\n\");
return 0;
}"
cd ..
done
判断数字大小
#!/bin/bash
if [ $1 -eq 0]; then
echo"第一个参数等于0"
fi
if [ $2 -gt 0];then
echo"第二个参数大于0"
elif [ $2 -lt 0];then
echo"第二个参数小于0"
else
echo"第二个参数等于0"
fi
判断目录/文件
#!/bin/bash
if [ -d $3 ];then
echo"第三个参数是目录"
elif [ -f $3 ];then
echo"第三个参数是文件"
fi