一. 编辑器 vi
Linux中的一种文本编辑器, 相对来说较小 , vim是vi的高级版本 兼容vi 功能更强大
vim 文件名 进入 ~ 代表空的行
离开vim: :q 退出
:q! 不保存强制退出
:wq 保存并退出 = :x
在插入模式和底行模式下 用 ESC 切换到 命令行模式
1. 命令行模式 进入时 默认的模式
编辑命令 i 在光标前输入文本
I 在当前行输入开始文本 shift i = I
a 在光标后输入文本
A 在当前行末尾输入文本
o 在当前行后输入下一行
O 在当前行后输入下一行
光标移动命令 b 移动到当前单词开始
e 移动到当前单词结尾
h j k l =上下左右
删除命令 x 删除光标所在字符
nx 删除光标后n个字符
dw 删除光标所在单词
d$ 删除光标至结尾的字符 = D
dd 删除当前行
ndd 删除当前行后的n行
改变与替换指令 r 替换光标所在的字符
R 替换字符序列
cw 替换一个单词 =ce
c$ 替换自光标位置至行尾的所有字符 =C
cc 替换当前行
拷贝和粘贴命令 yw 将光标所在单词复制到粘贴板
y$ 将光标至行尾的字符复制到粘贴板 =Y
yy 将当前行复制到粘贴板
nyy 将当前行后的n行复制到粘贴板
P 将粘贴板中的内容粘贴在光标前
p 将粘贴板中的内容粘贴在光标后
其他命令 nG 跳到第n行
u 撤销
. 重做
ctrl + b #向前移动一页
ctrl + f #向后移动一页
zz #将当前行置于屏幕中央
gg #移动到第一行行首
G #移动到最后一行行首
n+ #向后跳转n行
n- #向前跳转n行
n↑↓←→ #向上下左右跳转n次
2.底行模式 全局配置文件在/etc/vimrc 可自己设置
设置vi :set number(nu) 显示行号
: set nonumber(nonu) 隐藏行号
:set autoindent 智能缩进
:set mouse=a 开启鼠标
文件的保存和退出 :q 不保存退出
:q! 不保存强制性退出
:w 保存编辑
:w filename 另存为文件 filename
:wq 保存退出 = :x = :ZZ
查询命令 /abc 向后查询abc
?abc 向前查询abc
n 向后继续查询
N 向前继续查询
替换查找 :s/old/new 替换该行第一个old为new
:s/old/new/g 可以替换全行中所有的old为new
:#,#s/old/new/g 替换两行之间出现的old为new,#,#为两行的行号
:%s/old/new/g 替换全文的old为new
:%s/old/new/gc 全文替换前需确认
二. 编译器 gcc (GNU CCompiler)
.c为后缀的文件,c语言源代码文件;
.h为后缀的文件,是程序包含的头文件;
.i为后缀的文件,是已经预处理过的c源代码文件;
.s为后缀的文件,是汇编语言源代码文件
.o为后缀的文件,是编译后的目标二进制文件;
过程:
1.预处理 根据以字符#开头的命令,修改原始c程序
gcc -E hello.c -o hello.i
2. 编译 将.i文件翻译成.文件 包含一个汇编语言程序
gcc -S hello.i -o hello.s
3. 汇编 将.s文件翻译成机器语言指令 生成.o文件 是二进制文件
gcc -c hello.s -o hello.o
4.链接 生成可执行文件
gcc hello.o -o hello
其他注意事项
(1)gcc example.c -o example #直接生成可执行文件
(2)./example #运行可执行文件
(3)若不使用 -o 则生成可执行文件 a.out
(4)Linux头文件默认放在/usr/include中
三. 调试器 Gdb GNU计划 程序调试工具
gcc -g fun.c -o test 加上-g 才有 -g调试信息 gdb test 进入
常用命令
1、 l(list) #一次列出10行代码(list n,m #列出n~m行)
2、 r(run) #执行程序(未设置断点,将程序执行完毕)
3、 b(break) #b+行号,在该行设置断点
4、 c(continue) #当程序运行时,继续运行程序,直到遇到断点
5、 i b(info break) #查看断点信息
6、 d+编号 #(delete)删除该断点(d删除所有断点)
7、 clear+行号 #删除指定行断点(不加行报错)
8、 p(print) #p+变量名,显示变量的值
9、 s(step) #单步执行(进入调用函数)
10、 n(next) #不进入调用的函数,只在主函数中运行
11、 return/finish #退出step进入的调用函数
12、 q(quit) #退出gdb调试
四. makefile 工程管理器 自动编译管理器
根据文件时间戳 发现更新的文件
缺点: 每次要重新编译
重复输入大量文件名
都写在一个文件里
makefile 是 make 读入的唯一配置文件
1.makefile 基本格式 :target:dependency
(Tab字符)command
make clean
2、makefile中变量的使用
OBJECTS = sum.o sub.o operator.o #定义变量
$(OBJECTS) #使用变量
3、makefile的自动推导(隐晦规则)
可以自动推导文件以及文件依赖关系后面的命令
只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中
五. Shell
Linux中Shell种类众多, 常用bash。 Shell可以事先写在一个文件中,使用时Shlle 读取文件中的命令逐条翻译,这种文件是脚本。
创建 vim 1.sh 不用编译 直接运行 要赋予可执行权限 chmod +x 1.sh 执行 ./1.sh
echo “xx” 显示xx
Shell 就是将一系列Linux命令放在一个文件中执行的应用程序。
格式:
#!/bin/bash
#注释
命令
在“ ”中的字符出$ 反引号 \ 外是普通字符。
变量: 定义 str=“Hello World”
应用 echo $str 或 echo ${str}
消除 unset str
echo “现在的地址是‘pwd’ ” 输出 现在的地址是/root (‘pwd’被解释为命令)
\ 转义字符 用 -e 进行解析 echo -e “a\nd” // \n 自动换行
在字符前利用 / 能阻止 后面的字符解释为特殊字符
单引号内 都是普通字符
常用命令:
echo ${#str} 计算长度
echo ${STR:1:3} #显示第2,3,4个字符
echo “`expr index “$STR” 23`” #在变量STR中23 谁先出现 显示谁位置
数组:
array1=(0 1 2 3 4) #3种定义赋值数组(圆括号)
echo ${array1[0]} #显示数组值
echo ${#array1[@]}或echo ${#array1[*]} #计算数组长度
算数运算:
c=`expr $a + $b` #.sh中的加减乘除
c=`expr $a \* $b` #.sh中的乘法
数值测试可用的操作符包括:
-eq:两个数相等;(=)
-ne:两个数不相等;(!=)
-gt:第一个数大于第二个数;(>)
-lt:第一个数小于第二个数;(<)
-le:第一个数小于等于第二个数;(<=)
-ge:第一个数大于等于第二个数。(>=)
字符串测试的主要操作符包括:
==:两个字符串相等;
!=:两个字符串不等;
-z:字符串为空;
-n:字符串不为空。