vim基本模式
第一次使用vim之前,先输入vim /etc/vimrc查看配置信息
若无以下几项需手动加上
set autoindent 自动缩进
set shiftwidth=4 用于程序中自动缩进所使用的空白长度指示
set tabstop=4 定义tab所等同的空格长度
set number 显示行号
syntax on 设置关键字高亮
1.命令行模式:控制屏幕光标的移动,字符、字或行的删除、复制和粘贴,可进入插入模式和底行模式。
x 每按一次,删除光标所在位置的”后面“一个字符。
#x 删除光标所在位置的”后面“#个字符。
dd 删除(剪切)光标所在行。
#dd 从光标所在行开始删除#行。
yw 将光标所在之处到字尾的字符复制到缓冲区。
#yw 复制#个字到缓冲区。
yy 复制光标所在行到缓冲区。
p 粘贴。
u 撤销。
gg 光标移动到第一行
[shift]+[G] 光标移动到最后一行
2.插入模式:只有在插入模式下,才可以输入文字。
按a/i,然后回车进入插入模式。
按[esc]键可返回命令行模式。
3.底行模式:将文件保存或退出,也可以设置编辑环境,如寻找字符串、列出行号等。
[shift]+[;] 即按“:”进入底行模式。
:行数 然后回车就会跳到该行。
/关键字 查找你想要寻找的字符,按[n]往后寻找,[shifit]+[n]或[N]往前寻找。
%s/想替换的字符/新字符/g 字符替换。
wq 保存并退出。
q! 强制退出。
gcc编译
gcc test.c -o test 将test.c编译并命名为test
编译过程:
1.预处理:头文件展开(所有以#开头的文件展开)。 如:gcc -E test.c -o test.i
2.编译:语法检查,c语言转化为汇编语言。如:gcc -S test.i -o test.s
3.汇编:汇编语言转化为二进制文件。如:gcc -c(小写) test.s -o test.o
4.链接:生成可执行文件。如gcc test.o -o test
make和Makefile
make命令运行时,须要一个 Makefile 文件,以告诉
make命令须要怎么样的去编译和链接程序。
一个Makefile文件包含五个方面的内容:
具体规则
隐含规则
定义变量
指令
注释
1.使用规则
Makefile内容的核心是一系列的规则,这些规则告诉make程序要
做的事以及做这件事所依赖的条件。
规则的基本格式是:
target: dependency
(Tab字符)command
target(目标): 通常是要产生的文件的名称,顶格。
dependency(依赖): 指用来输入从而产生目标的文件。
command(命令): 是make执行的动作,一个规则可以有多条命
令,每个命令占一行。命令行的第一个字符是Tab。
例:编写一个Makefile文件 vim Makefile
Target=hello #定义变量Target
Object=hello.o print.o #定义变量Object
$(Target):$(Object) # 定义Target的生成规则
gcc $(Object) -o $(Target)
.PHONY:clean # 定义clean的规则,删除所有.o文件及hello文件
clean:
rm *.o hello
gdb调试工具
GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点
、单步执行等操作。当程序暂停执行时,可以使用命令查看程序
中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。
被调试的应用程序在编译时最好使用-g参数将调试信息编入
目标文件中:
gcc test.c -o test -g
启动后进入GDB交互界面,可以输入GDB的命令开始调试,常用命令如下,通常直接回车就是重复上一条命令
list(简写l): 列出程序的源代码,默认每次显示10行。
run(简写r): 运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。 continue(简写c): 继续执行,到下一个断点处(或运行结束) 。
next(简写n): 单步跟踪程序,当遇到函数调用时,直接调用,不进入此函数体。
step(简写s): 单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 。
return(简写 ret):从当前函数返回。
break n(简写b n): 在第n行处设置断点 。
print 表达式(简记为 p) ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调 试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函 数调用。
info program: 来查看程序的是否在运行,进程号,被暂停的原因。
quit:(简记为 q) 退出gdb。
quit:(简记为 q) 退出gdb。
Shell使用基础
Shell是命令解析器,将用户的输入的指令转化为机器可以运行的程序。
1.格式
Shell
脚本的格式是固定的,如下:
#!/
bin/bash
首行中的符号#!告诉系统其后路径所指定的程序即是
解释此脚本文件的Shell程序。
编辑完毕,将脚本存盘为filename.sh,文件名后
缀sh表明这是一个Bash脚本文件。执行脚本的时候,
要先将脚本文件的属性改为可执行的:
chmod a+x filename.sh
执行脚本的方法是:
./filename.sh
2.变量
$#:传入脚本的命令行参数个数
$*:所有命令行的参数值,在各个参数值之间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
#!/bin/sh
echo $#
echo $*
echo $1
echo $2
echo $3
echo $4
运行./s2 1 2 3 4 结果是
1 2 3 4
1
2
3
4
3.for循环
格式:
for 变量名 in 参数
do
程序代码
done
示例:
#!/bin/bash
for dir in $1 $2 $3
do
mkdir $dir
cd $dir
touch $dir
echo "hello $dir" > $dir
cd ..
for dir in $1 $2 $3
do
mkdir $dir
cd $dir
touch $dir
echo "hello $dir" > $dir
cd ..
done
运行
chmod a+x cir.sh
./cir.sh a b c
结果是创建了 a b c三个文件夹,每个文件夹里都创建了一个同名的文件,文件内容是:hello 文件名(a/b/c)
4.if判断语句
path=$1
if [ -z $path ]; 判断路径是否为空
then
echo "ERROR"
exit
fi
if [ -d $path ]; 判断是否是目录
then
echo "DIR"
elif [ -f $path ]; 判断是否是文件
then
echo "FILE"
fi
注:if [空格 空格] 中括号前后要有空格
5.case语句
#!/bin/bash
read key 从键盘输入一个字符
case "${key}" in
[A-Z] ) echo "UpperLetter";; 大写字母
[a-z] ) echo "LowerLetter";; 小写字母
[0-9] ) echo "Number";; 数字
* ) echo "ERROR";; 错误
esac
read key 从键盘输入一个字符
case "${key}" in
[A-Z] ) echo "UpperLetter";; 大写字母
[a-z] ) echo "LowerLetter";; 小写字母
[0-9] ) echo "Number";; 数字
* ) echo "ERROR";; 错误
esac
S
若发现输入小写字母输出为UpperLetter(大写字母),做以下修改:
export LANG = C
6.其它
利用shell将代码快速写入file文件中:
cat > $file << EOF
代码
EOF
gdb
调试工具
困是
gdb
调试工具
make
和
make
和
Makefile
Makefile