- vim的基本用法
vim可以打开编辑文件
如果后边跟的名字的文件不存在则创建该空文件
```
vim +(n) filename: 打开时光标处于文件的第n行
vim +/pattren filename:打开时光标处于pattern所匹配的位置
```
- vim模式转换
```
输入模式==》命令模式
esc
命令模式==》末行模式
:
末行模式==》命令模式
esc
```
- 命令模式==》输入模式
```
i:光标所在的前面插入
I:光标所在的行首
a:光标所在的后面
A:光标所在行的行尾
o:光标所在行的下方开一个新行
O:光标所在行的上方开一个新行
```
- 输入模式下可以随意输入字符
末行模式下的基本操作
```
:q 退出
:q!强行退出
:w 保存
:wq 保存退出
:x 保存退出
:w /path保存在指定文件中
```
- 光标跳转:
```
h左
j下
k上
l右
```
备注(n)h/j/k/l 向方向跳n个字符
```
w一个单词一个单词的跳转
b和w同意
e一个单词一个单词反方向跳转
```
备注(n)w/e/b向方向跳转几个单词
```
^ 行首(非空的)
0 行首(绝对)
$ 行尾
```
- 行跳转
```
(n)G 跳转到文件的第n行
G 跳转到文件的最后一行
1G或gg跳转到文件的首行
```
段落间的移动
```
{ 向前面段落移动
} 向后面段落移动
```
命令模式下vim的编辑
删除命令
```
x:删除光标处字符
(n)x:删除光标处几个字符
dd:删除光标所在一整行
(n)dd:删除光标所在的几行
```
粘贴命令
```
p:缓冲区若存的为整行则粘贴时在光标的行的下方开一行
若存的不是整行则在光标的后面
P(大写):与小写P相反
```
复制命令
```
y:工作机制和d相同
```
改变命令
```
c:同d
但是执行完c后会直接转入输入模式
```
替换命令
```
r:替换字符
```
可视化模式:类似于win模式的选中
```
V:直接圈整行
v:按字符选定光标所在的位置
备注v经常结合dyc使用
```
撤销命令
u:撤销一次
(n)u:撤销几次
Ctrl + r 反撤销
U:直接撤销至操作前
- ### 脚本编程入门
-
- 变量的种类
```
本地变量:生效范围为当前bash
环境变量:生效范围是当前bash及其子进程
命令 或export生命环境变量
局部变量:生效范围为当前bash中的某个代码片段
位置变量:一般用$1,$2..代表,用于脚本在脚本调用中通过命令行传递给他的参数
特殊变量:类似$?,$0等在bash中表示特殊意义的变量
```
- 变量的赋值方式:name=‘value’
> 1.可以是字符 name=“username”
> 2.可以是变量引用 name=“$username” 3.可以是命令的执行结果 name=`CMD `
> 或者name=$(CMD)
> 变量引用方式:${name} 大多数情况下可以省略
> {当变量名和后边的内容不容易分清时,需要加花括号}
- 查看变量
> set查看所有变量
> unset name 取消本地变量
- 环境变量的声明
> export a=name 声明环境变量a
> dclear -x name=abc
- 显示环境变量
```
export
env
printenv
```
- 变量命名法则
```
1 不能使用程序中的保留字
2 变量名只能使用数字,字母,下划线且不能使用数字揩油
3 尽量做到见名知意。
4 可以用驼峰法则
```
只读变量不能被改变值不能被终止只能等bash结束后自动消失
位置变量
用于脚本在脚本调用中通过命令行传递给他的参数
$1,$2,$3..对应调用的第1,2,个命令
- bash的配置文件
```
1.全局配置:/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
2.个人配置:home/.bash_profile
/.bashrc
```
profile类的:是为交互式shell提供配置
```
使用su - 登录的
功用:用于定义环境变量
命令运行或脚本
读取顺序:/etc/profile--> /etc/profile.d/*.sh--> ~/.bashrc_profile-->~/.bashrc-->/etc/bashrc
```
后面的会覆盖前面的内容,所以靠后的生效
bashrc类的::为非交互式登录提供配置
```
1使用 su 登录的
2图形界面打开终端
3执行脚本时
功用:定义别名
定义本地变量
读取顺序 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
```
- #### 算数运算
```
1.let var=算数表达式
2.var=$[算数表达式]
3.var=$((算数表达式))
4.var=$(expr arg1 arg2 arg3 ...)
```
条件判断
```
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
```
备注:中括号两边必须有空格
数值判断
```
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
```
字符串判断
==:等于
> :大于(ASICI)
<:小于(ASICA)
!=:不等于
=~:是否能被PATTERN匹配
-z:是否为空
-n:是否不空
备注:字符串比较式都用该用引号
shell自定义退出状态码
> exit [n] 脚本中一旦遇到exit则脚本立即终止,终止状态取决于脚本后面的数字
> 如果未指定状态码,则脚本退出状态码取决于最后一个参数执行成功与否
存在性测试
```
-a FILE:同-e
-e FILE: 文件存在性测试,存在为真,否则为假
```
存在性及类别测试
```
-b FILE:是否存在且为块设备文件
-c FILE:是否存在且为字符设备文件
-d FILE:是否存在且为目录文件
-f FILE:是否存在且为普通文件
-h FILE 或 -L FILE:存在且为符号链接文件
-p FILE:是否存在且为命名管道文件
-S FILE:是否存在且为套接字文件
```
文件权限测试:
```
-r FILE:是否存在且可读
-w FILE: 是否存在且可写
-x FILE: 是否存在且可执行
```
文件特殊权限测试:
```
-u FILE:是否存在且拥有suid权限
-g FILE:是否存在且拥有sgid权限
-k FILE:是否存在且拥有sticky权限
```
vim可以打开编辑文件
如果后边跟的名字的文件不存在则创建该空文件
```
vim +(n) filename: 打开时光标处于文件的第n行
vim +/pattren filename:打开时光标处于pattern所匹配的位置
```
- vim模式转换
```
输入模式==》命令模式
esc
命令模式==》末行模式
:
末行模式==》命令模式
esc
```
- 命令模式==》输入模式
```
i:光标所在的前面插入
I:光标所在的行首
a:光标所在的后面
A:光标所在行的行尾
o:光标所在行的下方开一个新行
O:光标所在行的上方开一个新行
```
- 输入模式下可以随意输入字符
末行模式下的基本操作
```
:q 退出
:q!强行退出
:w 保存
:wq 保存退出
:x 保存退出
:w /path保存在指定文件中
```
- 光标跳转:
```
h左
j下
k上
l右
```
备注(n)h/j/k/l 向方向跳n个字符
```
w一个单词一个单词的跳转
b和w同意
e一个单词一个单词反方向跳转
```
备注(n)w/e/b向方向跳转几个单词
```
^ 行首(非空的)
0 行首(绝对)
$ 行尾
```
- 行跳转
```
(n)G 跳转到文件的第n行
G 跳转到文件的最后一行
1G或gg跳转到文件的首行
```
段落间的移动
```
{ 向前面段落移动
} 向后面段落移动
```
命令模式下vim的编辑
删除命令
```
x:删除光标处字符
(n)x:删除光标处几个字符
dd:删除光标所在一整行
(n)dd:删除光标所在的几行
```
粘贴命令
```
p:缓冲区若存的为整行则粘贴时在光标的行的下方开一行
若存的不是整行则在光标的后面
P(大写):与小写P相反
```
复制命令
```
y:工作机制和d相同
```
改变命令
```
c:同d
但是执行完c后会直接转入输入模式
```
替换命令
```
r:替换字符
```
可视化模式:类似于win模式的选中
```
V:直接圈整行
v:按字符选定光标所在的位置
备注v经常结合dyc使用
```
撤销命令
u:撤销一次
(n)u:撤销几次
Ctrl + r 反撤销
U:直接撤销至操作前
- ### 脚本编程入门
-
- 变量的种类
```
本地变量:生效范围为当前bash
环境变量:生效范围是当前bash及其子进程
命令 或export生命环境变量
局部变量:生效范围为当前bash中的某个代码片段
位置变量:一般用$1,$2..代表,用于脚本在脚本调用中通过命令行传递给他的参数
特殊变量:类似$?,$0等在bash中表示特殊意义的变量
```
- 变量的赋值方式:name=‘value’
> 1.可以是字符 name=“username”
> 2.可以是变量引用 name=“$username” 3.可以是命令的执行结果 name=`CMD `
> 或者name=$(CMD)
> 变量引用方式:${name} 大多数情况下可以省略
> {当变量名和后边的内容不容易分清时,需要加花括号}
- 查看变量
> set查看所有变量
> unset name 取消本地变量
- 环境变量的声明
> export a=name 声明环境变量a
> dclear -x name=abc
- 显示环境变量
```
export
env
printenv
```
- 变量命名法则
```
1 不能使用程序中的保留字
2 变量名只能使用数字,字母,下划线且不能使用数字揩油
3 尽量做到见名知意。
4 可以用驼峰法则
```
只读变量不能被改变值不能被终止只能等bash结束后自动消失
位置变量
用于脚本在脚本调用中通过命令行传递给他的参数
$1,$2,$3..对应调用的第1,2,个命令
- bash的配置文件
```
1.全局配置:/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
2.个人配置:home/.bash_profile
/.bashrc
```
profile类的:是为交互式shell提供配置
```
使用su - 登录的
功用:用于定义环境变量
命令运行或脚本
读取顺序:/etc/profile--> /etc/profile.d/*.sh--> ~/.bashrc_profile-->~/.bashrc-->/etc/bashrc
```
后面的会覆盖前面的内容,所以靠后的生效
bashrc类的::为非交互式登录提供配置
```
1使用 su 登录的
2图形界面打开终端
3执行脚本时
功用:定义别名
定义本地变量
读取顺序 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
```
- #### 算数运算
```
1.let var=算数表达式
2.var=$[算数表达式]
3.var=$((算数表达式))
4.var=$(expr arg1 arg2 arg3 ...)
```
条件判断
```
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
```
备注:中括号两边必须有空格
数值判断
```
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
```
字符串判断
==:等于
> :大于(ASICI)
<:小于(ASICA)
!=:不等于
=~:是否能被PATTERN匹配
-z:是否为空
-n:是否不空
备注:字符串比较式都用该用引号
shell自定义退出状态码
> exit [n] 脚本中一旦遇到exit则脚本立即终止,终止状态取决于脚本后面的数字
> 如果未指定状态码,则脚本退出状态码取决于最后一个参数执行成功与否
存在性测试
```
-a FILE:同-e
-e FILE: 文件存在性测试,存在为真,否则为假
```
存在性及类别测试
```
-b FILE:是否存在且为块设备文件
-c FILE:是否存在且为字符设备文件
-d FILE:是否存在且为目录文件
-f FILE:是否存在且为普通文件
-h FILE 或 -L FILE:存在且为符号链接文件
-p FILE:是否存在且为命名管道文件
-S FILE:是否存在且为套接字文件
```
文件权限测试:
```
-r FILE:是否存在且可读
-w FILE: 是否存在且可写
-x FILE: 是否存在且可执行
```
文件特殊权限测试:
```
-u FILE:是否存在且拥有suid权限
-g FILE:是否存在且拥有sgid权限
-k FILE:是否存在且拥有sticky权限
```