一些常用工具

一些常用工具:


一、vi编辑器
vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。
vi有3个模式:插入模式、命令模式、低行模式。
插入模式:在此模式下可以输入字符,按ESC将回到命令模式。
命令模式:可以移动光标、删除字符等。
底行模式:可以保存文件、退出vi、设置vi、查找等功能(底行模式也可以看作是命令模式里的)。


(1)一些vi配置:
配置颜色  
配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用。
后来打开文件发现里面其实已经有一行了,只是用引号注释掉了,只需将syntax on 所在行前面的引号去掉即可。
或者另外独立添加一行:syntax on 也行,另外编辑/etc/profile 增加一行alias vi="vim"就行了。
设置鼠标
使用VI编辑文本时,如果想修文件中改离光标较远的位置,这时候想用鼠标定位,可默认情况下,鼠标是不可用的。如果你想使用鼠标,只需另起一行,写上:set mouse=a 即可
设置自动缩进
默认情况下,VI和VIM都没有缩进的,每换一行,光标均定位在顶格,如果你想自动对齐,请将 set autoindent所在行前面的引号去掉,或者另外添加一行:set autoindent也可。
这与配置颜色类似。这样的设置的结果是按回车后新行与上一行自动对齐。
设置tab的缩进量
设置TAB键缩进量的方法:set shiftwidth=3 你也可以选一 个你自己喜欢的缩进量,比如2,或4。


(2)vi的基本操作
1.进入vi  # vi myfile  
2.切换至插入模式(Insert mode)编辑文件
在命令行模式下按一下字母i就可以进入插入模式,这时候可以开始输入文字了。
3.Insert 的切换
处于插入模式,只能一直输入文字,如果发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到命令行模式再删除文字。在命令行模式下按一下字母i就可以进入插入模式,这时候可以开始输入文字了。进入vi之后,是处于「命令行模式」
4.退出vi及保存文件
在命令行模式下,“shift+:”键进入底行模式:  
: w filename  (以指定的文件名filename保存)  
: wq  (存盘并退出vi)   
: q!  (不存盘强制退出vi)
或者在命令行模式下“shift+zz”键保存并退出


(3)功能键
1. 插入模式
按i切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;
按a进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按o进入插入模式后,是插入新的一行,从行首开始输入文字。
从插入模式切换为命令行模式  按「ESC」键。
2.命令行模式
(删除、恢复字符或行):
x:删除当前字符
nx:删除从光标开始的n个字符
dd :删除当前行
ndd :向下删除当前行在内的n行
u:撤销上一步操作
U:撤销对当前行的所有操作
(复制、粘贴):
yy:将当前行复制到指定区域
nyy:将当前行向下n行复制到指定区域
p:粘贴剪切板里的内容在光标后
P:粘贴剪切板里的内容在光标前
(跳至指定行):
n+:向下跳n行 
n-:向上跳n行 
nG:跳到行号为n的 
G:跳至文件的底部
gg:跳至文件顶部
(搜索):
/vpser:向光标下搜索vpser字符串 
?vpser :向光标上搜索vpser字符串
n:向下搜索前一个搜素动作
N:向上搜索前一个搜索动作
3.底行模式
(打开文件、保存、关闭文件):
:w  //保存文件
:w vpser.net   //保存至vpser.net文件
:q  //退出编辑器,如果文件已修改请使用下面的命令
:q! //退出编辑器,且不保存
:wq //退出编辑器,且保存文件
(设置行号):
:set nu:显示行号
:set nonu:取消显示行号
(替换):
:s/old/new:用new替换行中首次出现的old 
:s/old/new/g:用new替换行中所有的old 
:n,m s/old/new/g:用new替换从n到m行里所有的old 
:%s/old/new/g:用new替换当前文件里所有的old
(编辑其他文件): 
:e otherfilename:编辑文件名为otherfilename的文件。








二、gcc工具链
GCC是GNU Compiler Collection也即是 GNU 编译器家族的意思。
编译指令:gcc test.c -o test
生产test可执行文件
编译过程是分为四个阶段进行:1、预处理(也称预编译,Preprocessing)2、编译(Compilation)3、汇编 (Assembly)4、连接(Linking)
(1)预处理
gcc -E test.c -o test.i 
可以输出test.i文件中存放着test.c经预处理之后的代码。
gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。
(2)编译为汇编代码
gcc -S test.i -o test.s
gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件。
(3)汇编
gcc -c test.s -o test.o
(4)连接
gcc test.o -o test、
多个程序文件的编译:
gcc test1.c test2.c -o test




gcc常用指令
-c:只是编译不链接,生成目标文件“.o”
-S:只是编译不汇编,生成汇编代码
-E:只进行预编译,不做其他处理
-g:在可执行程序中包含标准调试信息
-o file:把输出文件输出到file里
-v:打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir:在头文件的搜索路径列表中添加dir目录
-L dir:在库文件的搜索路径列表中添加dir目录
(需要注意的是,“-I dir”和“-L dir”都只是指定了路径,而没有指定文件,因此不能在路径中包含文件名。)
-static:链接静态库
-l library :连接名为library的库文件








Make和Makefile


make命令运行时,须要一个 Makefile 文件,以告诉make命令须要怎么样的去编译和链接程序。
一个Makefile文件包含五个方面的内容:1、具体规则 2、隐含规则 3、定义变量 4、指令 5、注释 
Makefile内容的核心是一系列的规则,这些规则告诉make程序要做的事以及做这件事所依赖的条件。
规则的基本格式是:
target: dependency
(Tab字符)command 
target(目标): 通常是要产生的文件的名称 
dependency(依赖): 指用来输入从而产生目标的文件 
command(命令): 是make执行的动作,一个规则可以有多条命令,每个命令占一行。命令行的第一个字符是Tab。


Makefile示例说明:
game : $(objects)   # 定义game的生成规则
$(CC) -o edit $(objects)
main.o : defs.h   # 定义main.o的规则,包含隐含规则
mouse.o : defs.h command.h  # 定义mouse.o的规则,包含隐含规则
command.o : defs.h command.h
display.o : defs.h buffer.h
.PHONY : clean
clean :            # 定义clean的规则,无依赖
$(RM) edit $(objects)
game的生成规则包含了规则的三个基本要素:目标、依赖、命令;main.o等规则没有命令,属于隐含规则(implicit rule)。clean规则没有依赖,不属于编译的内容,只是完成一个指定的动作。
隐含规则能够告诉make使用传统的标准方法完成任务
例如,生成一个目标文件的方法是使用C编译器编译C语言源程序,这个步骤所用到的命令基本都是相同的。
使用隐含规则就无须详细指定这些命令,而make能按照文件名的后缀的变化,决定所采用的规则。


make工具的基本用法如下:
make [-C dir] [-f file] [target ...]
-C dir:执行时进入dir目录,默认是当前目录
-f file:使用file作为Makefile
target:要完成的目标,目标在Makefile中定义,默认是定义的第1个目标








gdb调试工具
GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。当程序暂停执行时,可以使用命令查看程序中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。
被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:
gcc -g app.c -o app
用以下命令启动对程序app的调试:
gdb app
如果程序app运行时需要参数,则用以下命令:
gdb --args app arg1 arg2    #arg1和arg2被视为app的参数,而不是gdb的参数 


启动后进入GDB交互界面,可以输入GDB的命令开始调试,常用命令如下,通常直接回车就是重复上一条命令。
list(l):列出源码
break(b):设置断点
run(r):从头开始运行程序
continue(c):从停止处继续运行程序
next(n):向前执行一句(不进入被调用函数中)
step(s):向前执行一句(可进入被调用函数中)
return(ret):从当前函数返回
print(p):显示变量或表达式的值
x(x):显示内存值
backtrace(bt):显示调用栈
quit(q):退出gdb
aymbol-file(sy):从可执行文件中加载符号表










shell使用基础
Shell是命令解析器,将用户的输入的指令转化为机器可以运行的程序。
Linux的Shell种类众多,不同的Shell语言的语法有所不同,所以不能交换使用。
我们关注的重点是Bash,在一般情况下,人们并不区分 Bourne Shell和Bourne Again Shell,所以,在下面的文字中,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。
利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
#!/bin/sh
#comments
Your commands go here
首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序
编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。执行脚本的时候,要先将脚本文件的属性改为可执行的:
chmod 777 filename.sh
执行脚本的方法是:
./filename.sh


echo:输出 +变量
默认变量:
$#:传入脚本的命令行参数个数
$*:所有命令行的参数值,在各个参数值之间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
echo "xxx" > 文件名 # 将xxx覆盖文件
echo "xx" >> 文件名 # 将xx添加到文件中,不覆盖
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值