🔎这里是【Linux】,关注我学习Linux不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️
【Linux】 目前主要更新Linux,一起学习一起进步。
本期主要介绍Linux常用操作命令(三)
vi简介
打开和新建文件
三种工作模式
常用命令查询
在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远程服务器上, 并且使用 vi编辑器 进行简单的编辑即可
需要修改的文件包括
源代码
配置文件
例如: tomcat服务器的配置文件
例如: 网卡信息的配置文件
在没有图形界面的环境下, 要编辑文件, vi是最佳选择 每一个使用linux的程序员,都应该或多或少的学习一些vi的常用命令
vi是 visual interface
的简称, 是linux中最经典的文本编辑器
vi 的核心设计思想
让程序员的手指始终保持在键盘的 核心区域, 就能完成所有的编辑操作
vi的特点
只能是编辑 文本内容, 不能对 字体 段落进行排版
不支持鼠标操作
没有菜单
只有命令
vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
viM 是从vi发展出来的文本编辑器, 支持代码补全、编译 及 错误跳转等方便编程的功能提别丰富, 在程序员中被广泛使用, 被称为编辑器之神
在终端中输入vim在后面跟上 文件名 即可
vim 文件名
如果文件已经存在, 会直接打开该文件
如果文件不存在, 保存且退出时 就会新建一个文件
1 vim 没有的文件名 2 编辑内容 2.1 输出一行语句 2.2 复制粘贴 2.1内容 19次 2.3 保存且退出 3 查看
注意: 本节重点是 打开 和 新建文件, 其他命令后面会一一讲解
在日常工作中, 有可能会遇到打开一个文件, 并定位到指定行的情况
例如: 在开发是, 知道某一行代码有错误, 可以 快速定位 到出错误代码的位置
这个时候, 可以使用以下命令打开文件
vim 文件名 +行数
提示: 如果只带上+ 而不指定行号, 会直接定位到文件末尾
VI有三种工作模式
命令模式
打开文件首先进入命令模式, 是使用vi的入口
通过 命令 对文件进行常规的编辑操作, 例如 定位 翻页 复制 粘贴 删除 ... ...
在其他图形编辑器下, 通过 快捷键 或者 鼠标 实现的操作, 都在 命令模式 下实现
末行模式 -- 执行 保存 退出等操作
要退出 vi 返回到控制台, 需要在莫行模式下输入命令
末行模式 是 vi 的出口
编辑模式 -- 正常的编辑文字
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存且退出(莫行模式) |
x | 保存并退出(莫行模式) | |
ZZ | 保存并退出(命令模式) |
vi命令较多, 不要期望一下子全部都记住, 个别命令忘记了, 只是会影响编辑速度而已 . 在使用vi命令时, 注意 关闭中文输入法
要熟练使用vi, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
vim中使用 空行 来区分段落
程序开发时, 通常 一段功能相关的代码会写在一起 -- 之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
在程序世界中, ()、[]、{}使用率很高, 而且 都是成对出现的.
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码
在 vi 中要选择文本, 需要显示 visual 命令切换到 可视模式
vi 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式
按 ESC 可以放弃选中, 返回到 命令模式
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
可视模式下, 可以和 移动命令 连用, 例如 ggVG 能够 选中所有的内容
在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 恢复撤销的命令 |
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以ndd删除多行 |
D | delete | 删除至行尾 |
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令:
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d0 | 从光标位置删除到一行的起始位置 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
vi 中提供有一个 被复制文本的缓冲区
复制 命令会将选中的文字保存在缓冲区
删除 命令删除的文字会被保存在缓冲区
在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
命令 | 英文 | 功能 |
---|---|---|
y(复制命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
提示:
命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x
命令 y 类似于 图形界面的 复制操作 -- Ctrl + C
命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v
vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.
注意
vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
所以在其他软件中使用 Ctrl + C
复制的内容, 不能再 vi
中通过 p
命令粘贴
可以在 编辑模式 下使用 鼠标右键粘贴
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下 ESC
可以回到 命令模式
替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
常规查找
命令 | 功能 |
---|---|
/str | 查找str |
查找到指定内容之后, 使用 Next
查找下一个出现的位置
n
: 查找下一个
N
: 查找上一个
如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过
在 vi
中查找和替换命令需要在 末行模式 下执行
记忆命令格式
:%s///g
全局替换
一次向 替换文件中的 所有出现的旧文本
命令格式如下
:%s/旧文本/新文本/g
可视区域替换
先选中 要替换文字的 范围
命令格式如下
:s/旧文本/新文本/g
确认替换
c confirm 确认
如果把末尾的 g
改成 gc
在替换的时候, 会有提示! 推荐使用
命令格式如下
:%s/旧文本/新文本/gc
y
- yes
替换
n
- no
不替换
a
- all
替换所有
q
-quit
退出替换
l
- last
最后一个, 并把光标移动到行首
^E
向下滚屏
^Y
向上滚屏
在 vi 中除了常用 i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
在开发中, 可能会遇到连续输入 N 个同样的字符
例如: **********
连续10个星号
要实现这个效果可以在 命令模式 下
输入 10
, 表示要重复10次
输入 i
进入 编辑模式
输入 *
也就是重复的文字
按下 ESC
返回 命令模式, 返回之后 vi
就会把 第 2、3
两步的操作重复 10
次
提示: 正常开发时, 在 进入编辑模式之前,不要按数字
准备工作
切换目录到 /export/ 且 清空内容
cd /export/ && rm -rf /export/* && tree
新增目录 且 切换目录 且 新增文件
mkdir -p /export/aaa/bbb/ccc/ddd/eee/ touch /export/aaa/bbb/ccc/ddd/eee/abc.txt touch /export/aaa/123.txt touch /export/aaa/312.txt
查看 /export 目录中的内容
tree /export
通过find
命令 在特定目录下(包含它的后代目录) 搜索 符合条件的文件
第一步: 搜索指定目录下, 文件是 abc.txt的文件
第二步: 搜索指定目录下, 文件名 包含 1
的文件
第三步: 搜索指定目录下,所有以.txt
为扩展名的文件
第四步: 搜索指定目录下, 以数字1
开头的文件
序号 | 命令格式 | 作用 |
---|---|---|
01 | find [路径] -name '*.txt' | 查找指定路径下扩展名是 .txt的文件, 包括子目录 |
如果省略路径, 表示在当前文件夹下查找
之前学习的通配符, 在使用find命令时同时可用
第一步: 搜索指定目录下, 文件是 abc.txt的文件
# ===================实现目标============================ # 方式一: 指定全目录 find /export/ -name 'abc.txt' # 方式二: 当前目录 find . -name 'abc.txt' # 方式三: 当前目录 可以 省略 不写 find -name 'abc.txt'
第二步: 搜索指定目录下, 文件名 包含 1
的文件
# =================准备工作=============== # 1 创建测试文件 touch /export/12.txt /export/616.txt /export/321.txt # =================实现目录=============== find /export/ -name "*1*"
第三步: 搜索指定目录下,所有以.txt
为扩展名的文件
find /export/ -name "*.txt"
第四步: 搜索指定目录下, 以数字1
开头的文件
find /export -name "1*"
通过 find [path] -name "*1*"
完成根据名称搜索文件
准备工作
# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
从第三方 下载 压缩包, 解压缩后 安装到 服务器上
通过 打包压缩 备份文件
jar : java rar java项目的压缩包
war : web rar web项目的压缩包
2.1 第一步: 打包 和 解包
2.2 第二步: 打包压缩 和 解包解压缩
3.1.1 打包
类似将 冬天的衣服 放到 袋
打包之后的大文件 需要以 .tar
结尾.
tar
打包命令格式
# 将 一系列文件 打包成 一个大文件 tar -cvf 打包名.tar 被打包的目录 tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
tar
选项说明
命令 | 英文 | 含义 |
---|---|---|
c | create | 生成档案文件, 创建打包文件 |
v | verbosely(啰嗦的) | 像 '唐僧' 一样报告进度 |
f | file | 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到左后 |
练习1: 将1.txt、2.txt、3.txt 打包成 123.tar文件 练习2: 将有内容的aaa目录 打包成 aaa.tar 文件
3.1.2 解包
类似将 冬天的衣服 从 袋子里取出来
tar
解包命令格式
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录 tar -xvf 打包名.tar # 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录 tar -xvf 打包名.tar -C 解包路径位置
命令 | 英文 | 含义 |
---|---|---|
x | extract (提取) | 解包 |
C (大写C) | directory (目录) | 默认保存到当前目录, 通过-C 更改解压目录, 注意: 解压目录必须存在 |
练习1: 将 123.tar 解压到 当前目录中 练习2: 将 aaa.tar 解包到 /export/test/a1/b1/c1/ 目录中
小结
打包: tar -cvf 打包之后的文件名.tar 被打包的目录或文件名 解包: tar -xvf 打包之后的文件名.tar [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
打包 和 压缩 是两件事
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux
中, 最常用的压缩文件格式是 xxx.tar.gz
在 tar
命令中有一个选项 -z 可以调用 gzip
, 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件 tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录 # 解压缩文件(记忆敲门: 至孝潍坊) tar -zxvf 打包文件.tar.gz # 解压缩到指定路径 tar -zxvf 打包文件.tar.gz -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.gz文件(gzip压缩格式) 练习2: 将有内容的aaa目录 打包成 aaa.tar.gz 文件(gzip压缩格式) 练习3: 将 123.tar.gz 解压到 当前目录中(gzip压缩格式) 练习4: 将 aaa.tar.gz 解包到 /export/bbb 目录中(gzip压缩格式)
打包压缩: tar -zcvf 打包之后的文件名.tar.gz 被打包压缩的目录或文件名 解包解压缩: tar -zxvf 打包之后的文件名.tar.gz [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容 cd /export/ && rm -rf * # 创建测试文件 touch 1.txt 2.txt 3.txt # 创建有内容的测试目录 mkdir -p /export/aaa/ touch /export/aaa/4.txt /export/aaa/5.txt # 查看结果 tree /export
bzip
是压缩的第二种方式
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux
中, bzip2 压缩文件格式是 xxx.tar.bz2
在 tar
命令中有一个选项 -j 可以调用 bzip2
, 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件 tar -jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录 # 解压缩文件 (绩效潍坊) tar -jxvf 打包文件.tar.bz2 # 解压缩到指定路径 tar -jxvf 打包文件.tar.bz2 -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.bz2文件(bzip2压缩格式) 练习2: 将有内容的aaa目录 打包成 aaa.tar.bz2 文件(bzip2压缩格式) 练习3: 将 123.tar.bz2 解压到 当前目录中(bzip2压缩格式) 练习4: 将 aaa.tar.bz2 解包到 /export/bbb 目录中(bzip2压缩格式)
打包压缩: tar -jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名 解包解压缩: tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
关机
halt
重启
reboot