vim指令和常用工具

这里写自定义目录标题

  • linux下常见的指令
  • linux下常用工具
    • 编辑器
    • 编译器
    • makefile
    • gdb

linux下常见的指令

duan@linux:~$:命令提示符
duan:用户名
linux:主机名
~:当前路径 在普通用户 /home/duan
在超级管理员用户 /root
$:当前登录的为 普通用户
#:表示当前登录的为超级管理员用户
*:匹配所有
?:匹配单个字符
tab:自动的补齐 节省时间 防止出错
文件目录操作相关的指令
ls 查看某个目录下的文件的信息
ls -l
ls -ail
cd 切换目录
cd -:回到上一次操作的目录
touch:创建文件
假如文件不存在则创建 假如文件存在则跟新时间戳
cp:拷贝
mv:剪切
rm -rf:强制删除
mkdir :创建目录
mkdir -p:
可以创建多级的目录
假如目录存在则跳过 假如不存在则创建
ln:创建链接文件
ln -s :创建软链接文件 类似于快捷方式
ln:创建硬链接 相当于文件的副本
tar cvf 123.tgz test hello 打压缩包
tar xvf 123.tgz -C /
type:查看可执行程序的位置
chmod :修改文件的权限
数字式 chmod 777 test.c
字母 chmod a+x test.c
a:所有用户
u:文件的所有者
g:同组用户
o:其他用户
chown:更改文件的属主
who:当前登录的用户
进程相关的指令
ps
ps -ef
ps -aux
top
网络相关的
ifconfig:查看网络的状态
/etc/init.d/network-manger restart 重启网络
netstat -an |grep 888 查看888端口的占用情况
ping www.baidu.com 查看到百度的网络通不通
其他的指令
cat :不打开文件查看文件的内容
history 历史命令
echo 回显
软件安装相关的指令
在线安装
apt-get update :更新软件源
apt-get upgrade :更新软件
apt-get install vim :安装软件
apt-get remove vim :卸载
离线安装
dpkg -i 软件包的名字:离线安装
dpkg -r -P 软件包的名字:离线卸载
主函数传参
int main(int argc,char * argv[])
argc:传参的个数 包括可执行程序本身
argv:参数存放的位置

linux下常用工具

编辑器

1:编辑器
1)常用的编辑器
gedit
vim
vscode
notepad++
2)vim编辑器
因为vim编辑器是linux系统标准的自带的编辑
vim编辑器的安装
离线安装
dpkg -i xxx.deb
在线安装vim
sudo apt-get install vim
3)vim的使用
要想打开文件
vim 文件的名字
vim + 行号 文件名
4)vim的工作模式
命令模式 (打开文件默认进入的就是命令模式)
插入模式
底行模式
可视模式
5)命令模式
d0:删除光标前到行首的字符
d$或者D:删除光标所在位置到行尾的字符
(n)x:删除光标所处的位置 n表示往右多少个
(n)X:往光标前删除 n个字符
(n)dd:删除光标所在的行 (重要)
(n)dw:删除一个单词 (鸡肋)
(n)yy:复制n行内容(重要)
p:粘贴
Y:复制光标所在的行
(n)yw:复制n个单词
u:撤销操作
ctrl r:反撤销
ctrl d:向后滚动半屏
ctrl u:向前滚动半屏
ctrl f:向后滚动一屏
ctrl b:向前滚动一屏
n+enter 向下移动n行
0:跳到当前行的行首
$:跳到当前行的行尾
gg:跳到文件的头部
G:跳到文件的尾部
n+G:跳到指定的某一行
6)插入模式
i:在光标所在的位置之前插入内容
I:在行首添加内容
a:在光标所在位置之后追加内容
A:在光标所在行的行尾追加内容
o:在光标所在行的下一行插入内容
O:在光标所在行的上一行插入内容
7)底行模式
由命令行模式进入底行模式 输入 :
有插入模式进入底行模式 需要先切换到命令模式
w:保存 (重点)
q:退出 (重点)
wq:保存并且退出 (重点)
!:强制 (重点)
shift + zz :退出vim编辑器 (重点)
/字符串 :搜索字符串 n:向下查找 N 向上查找
?字符串:搜索字符串 n:向上查找 N 向下查找
%s/源字符串/目标字符串 表示替换当前文件每一行的第一个源字符串为目标字符串
%s/源字符串/目标字符串/g:表示替换文件里的所有的源字符串为目标字符串
8)可视模式
在命令模式下输入v
d:删除
y:复制
x:剪切

编译器

编译器的作用
编译代码 用来让机器识别
常用的编译器
gcc 普通的编译器
arm-linux-gcc 交叉编译工具
一个.c文件变成可执行程序要经过的步骤
预处理
处理伪指令和特殊的字符
1)宏定义
2)条件编译
3)头文件的包含
gcc -E xxx.c -o xxx.i
编译
将预处理后的代码进行一系列的语法、词法分析、语义分析
转换成对应的汇编的代码
gcc -S xxx.i -o xxx.s
汇编
将汇编的代码转换成机器可以识别的二进制的代码
as xxx.s -o xxx.o
链接
头文件只包含了函数的声明,函数的具体的实现 是在库里的
链接库文件
gcc xxx.o -o xxx
编译器的选线
-o:指定输出的文件的名字
-c:只编译不链接
-g:加上调试信息

1)什么是库
包含了通用函数的数据和二进制的可执行机器码的文件
2)库的分类
静态库(.a)
动态库(.so)
3)库的有点
移植性
封装性
保护源码
4)静态库的创建
a:准备源码
b:只编译不链接
gcc -c myfunc.c -o myfunc.o
gcc -c func.c -o func.o
c:将功能函数打包生成静态库
ar rc libmyfun.a myfunc.o func.o
d:利用编译出来的库文件编译代码
gcc main.c -o main -lmyfun -L ./
5)动态库的创建
1:准备源码
2:只编译不链接
gcc -fPIC -shared -c myfunc.c -o myfunc.o
gcc -fPIC -shared -c func.c -o func.o
3:打包生成动态库
gcc -fPIC -shared func.o myfunc.o -o libmyfunc.so
4:利用动态库编译程序
gcc main.c -o mains -lmyfunc -L ./
5:运行程序时
先将动态库拷贝到/usr/lib 或者 /lib下
./mains
6)动态库和静态库的区别
1)利用动态库编译出来的可执行程序要比利用静态库编译出来的可执行程序小
2)在程序执行的时候,由于静态库已经编译进可执行程序里了,删除静态库对可执行程序没有影响
动态库则无法运行
7)查看可执行程序依赖的库
ldd 可执行程序的名字

makefile

1)make
用来执行自动化编译的
依赖与makefile
makefile类似与脚本语言
Makefile makefile
指定make使用某一个makefile
用-f来指定
make -f Makefile
2)makefile
作用
告诉make如何动态的编译代码
构成
目标 依赖 规则 注释 宏 伪目标
在规则之前必须有个tab键
makefile的注释
#开头进行注释

$@:目标
$^:所有的依赖的文件
$<:第一个依赖的文件
当makefile里有多个并列的目标的时候
最上边那个目标叫做主目标
下边的目标都叫做次目标
假如直接执行make 会只生成主目标
要想生成次目标必须在make之后 加上次目标的名字
伪目标
.PHONY:clean
.PHONY:all
all:a b c

gdb

因为每个人写代码都有较大的概率出错
如何去调试错误
测试:发现问题
固化:让问题能够重现
定位:定位代码错误的位置
纠正:修改错误的代码
验证:验证修改后的代码有没有问题
如何使用gdb
要想我们的代码支持gdb就必须在代码编译的时候
加入一个选项 -g
gcc main.c -o main -g
使用gdb来启动程序
gdb + 可执行程序的名字
gdb ./main
查看gdb的帮助文档
help
gdb常用的指令
r:让程序运行起来
l:显示源代码
b +行号:在某一行设置断点
cont:继续运行直到下一个断点
info breakpoint:查看所有的断点的信息
d+断点的编号:删除断点
disable 失能断点
enable +断点编号 使能断点
p +变量的名字:查看当前变量的值
启动 按步调试
start :启动按步调试
n:按步调试 假如遇到函数调用 直接执行完
s:按步调试 假如遇到函数 则进入到函数的内部一步步的执行
finish:结束循环 结束函数
quit:退出
在gdb下调试段错误
先编译代码 并且要加上调试信息 -g
先通过gdb调起来程序
让段错误复现
在gdb的调试的终端输入where
gdb就会指明段错误发生的位置

你可能感兴趣的:(vim,php,编辑器)