简介
学习vi的目的
在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远程服务器上, 并且 使用 vi编辑器 进行简单的编辑即可
需要修改的文件包括
源代码
配置文件
例如: tomcat服务器的配置文件
例如: 网卡信息的配置文件
在没有图形界面的环境下, 要编辑文件, vi是最佳选择 每一个使用linux的程序员,都应该或多或少的学习一些vi的常用命令
vi 和 vim
VI
vi是 visual interface 的简称,是Linux中最经典的文本编辑器
vi的核心设计思想
让程序员的手指始终保持在键盘的 核心区域,就能完成所有的编辑操作
vi的特点
只能编辑 文本内容,不能对 字体 段落 进行排版
不支持鼠标操作
没有菜单
只有命令
vi编辑器在 系统管理 服务器管理 编辑文件时,其功能永远不是图形界面的编辑器所能比拟的
VIM
vim是从vi发展出来的文本编辑器,支持代码补全,编译,及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,被称为 编辑器之神
打开和新建文件
在终端输入vim 在后面跟上 文件名 即可
vim 文件名
如果文件已经存在,会直接打开该文件
如果文件不存在,保存且退出时 就会新建一个文件
1.vim 没有的文件名
2.编辑内容
2.1 输出一行语句
2.2 复制粘贴 2.1内容复制19次
2.3 保存且退出
3.查看
打开文件并且定位行
在日常工作中,有可能会遇到打开一个文件,并定位到指定行的情况
例如:在开发中,知道某一行代码有错误,可以 快速定位行 找到出错代码的位置
使用以下命令打开
vim 文件名 +行数
提示:如果只带上 + 而不制定行号,会直接定位到文件末尾
三种工作模式
命令模式
打开文件首先进入命令模式,是使用vi的入口
通过 命令 对文件进行常规的编辑操作,例如:定位 翻页 复制 粘贴 删除等...
在其他图形编辑器下 通过快捷键 或者 鼠标 实现的操作,都在 命令模式 下实现
末行模式
执行 保存 退出 等操作
要退出vi返回到控制台,需要在末行模式下输入命令
末行模式是vi的出口
编辑模式
正常编辑文字
末行模式命令
常用命令查询
提示
在使用vi命令时, 注意 关闭中文输入法
移动
要熟练使用vi, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用
1.上 下 左 右
2.行内移动
3.行数移动
4.屏幕移动
移动(程序)
1.段落移动
vim中使用 空行 来区分段落
程序开发时,通常 一段功能相关的代码会写在一起,之间没有空行
2.括号切换
在程序的时间中,() [] {} 使用率很高,而且都是 成对出现的
3.选中文本(可视模式)
学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码
在 vi 中要选择文本, 需要显示 visual 命令切换到 可视模式
vi 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式
按 ESC 可以放弃选中, 返回到 命令模式
可视模式下, 可以和 移动命令 连用, 例如 ggVG 能够 选中所有的内容
4.撤销和恢复撤销(保命指令)
怎样撤销之前一次 错误的 编辑操作
5.删除文本
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令:
6.复制和剪切
vi 中提供有一个 被复制文本的缓冲区
复制 命令会将选中的文字保存在缓冲区
删除 命令删除的文字会被保存在缓冲区
在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
提示:
命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x
命令 y 类似于 图形界面的 复制操作 -- Ctrl + C
命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v
vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.
注意
vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
所以在其他软件中使用 Ctrl+C复制的内容, 不能再 vi 中通过 p 命令粘贴
可以在 编辑模式 下使用 鼠标右键粘贴
替换
R 命令可以进入 替换模式,替换完成后,按下 ESC,按下 ESC 可以回到 命令模式
替换命令的作用就是不用进入编辑模式,对文件进行 轻量级的修改
8.查找
常规查找
查找到指定内容之后, 使用 Next 查找下一个出现的位置
n: 查找下一个
N: 查找上一个
如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
单词快速匹配
在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过
9.查找并替换
在 中查找和替换命令需要在 末行模式 下执行
记忆命令格式:
:%s///g
1)全局替换
一次向 替换文件中的 所有出现的旧文本
命令格式如下
:%s/旧文本/新文本/g
2)可视区域替换
先选中 要替换文字的 范围
命令格式如下
:s/旧文本/新文本/g
3)确认替换
confirm 确认
如果把末尾的 g 改成 gc 在替换的时候,会有提示!推荐使用
命令格式如下
:%s/旧文本/新文本/gc
释义
1. y -yes 替换
2. n -no 不替换
3. a -all 替换所有
4. q -quit 退出替换
5. l -last 最后一个,并把光标移动到行首
6. ^E 向下滚屏
7. ^Y 向上滚屏
10.插入命令
在 vi 中除了常用 i 进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
搜索命令
1.find 搜索
准备工作
切换目录到 /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 开头的文件
命令格式
如果省略路径, 表示在当前文件夹下查找
之前学习的通配符, 在使用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
//2.实现查询
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项目的压缩包
路径
第一步:打包 和 解包
第二步:打包压缩 和 解包压缩
实现 第一步
1.打包
类似将 冬天的衣服 放到 袋中
打包之后的大文件 需要以 .tar 结尾
tar 打包命令格式
# 将 一系列文件 打包成 一个大文件
tar ‐cvf 打包名.tar 被打包的目录
tar ‐cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
2.解包
类似将 冬天的衣服 从袋中取出来
tar 解包命令格式
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录
tar ‐xvf 打包名.tar
# 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录
tar ‐xvf 打包名.tar ‐C 解包路径位置
小结
打包: tar ‐cvf 打包之后的文件名.tar 被打包的目录或文件名
解包: tar ‐xvf 打包之后的文件名.tar [ ‐C 指定解包位置 ]
实现 第二步
压缩 和 解压缩(使用 bzip2格式)
bzip 是压缩的第二种方式
类似于 先将冬天的衣服放到压缩袋,再抽取里面的空气
在 Linux 中,bzip2 压缩文件格式:xxx.tar.bz2
在 tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件
tar ‐jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录
# 解压缩文件 (绩效潍坊)
tar ‐jxvf 打包文件.tar.bz2
# 解压缩到指定路径
tar ‐jxvf 打包文件.tar.bz2 ‐C 目录路径
小结
打包压缩: tar ‐jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名
解包解压缩: tar ‐jxvf 打包之后的文件名.tar.bz2 [ ‐C 指定解包位置 ]
关机
halt
重启
reboot
用户权限相关命令
目标
理解 用户 和 权限 的基本概念
用户管理 终端命令
组管理 终端命令
修改权限 终端命令
用户和权限的基本概念
用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理
在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限
对 文件 / 目录 的权限包括:
在 Linux中 ,可以指定 每一个用户 针对 不同的文件或者目录 的 不同权限
组
为了方便用户管理, 提出了 组 的概念, 如下图所示
ls -l 扩展
ls -l可以查看文件夹下文件的详细信息, 从左到右 依次是:
权限, 第一个字符如果是 d 表示目录
硬链接数, 通俗的讲就是有多少种方式, 可以访问当前目录和文件
拥有者, 家目录下 文件 / 木兰路 的拥有者通常都是 当前用户
组, 在linux中, 很多时候, 会出现组名 和 用户名 相同的情况
大小
时间
名称
组管理 终端命令
本质: 给 同一类型用户 分配权限
提示
组信息保存在 /etc/group 文件中
/etc 目录是专门用来保存 系统配置信息 的目录
在实际应用中, 可以预先针对 组 设置好权限, 然后 将不同的用户添加到对应的组中, 从而不用依次为每一个用户设置权限
用户管理 终端命令
1.创建用户 / 设置密码 / 删除用户
提示
创建用时, 如果忘记添加 -m 选项指定新用户的家目录 -- 最简单的方式就是删除用户,重新创建
创建用户时, 默认会创建一个和用户名同名的组名
用户信息保存在 /etc/passwd 文件中
** /ect/passwd 文件存放的是用户的信息, 由6个分好组成的7个信息, 分别是**
1.用户名
2.密码 (x, 表示加密的密码)
3.UID (用户标志)
4.GID(组标志)
5.用户全名或本地账号
6.家目录
7.登录使用的Shell, 就是登录之后, 使用的终端命令
2.查看用户信息
3.su 切换用户
因为 普通用户 不能使用某些权限, 所以需要 切换用户
su 不接用户名,可以切换到 root,但不推荐使用,因为不安全
exit 示意图如下:
4.sudo
通过 su -u root 可以切换到 root用户,但是存在严重的安全隐患
Linux系统中的 root 账户通常用于系统的维护和管理,对操作系统的所有资源具有访问权限
如果不小心使用 "rm -rf"命令,可能将系统搞瘫痪
在大多数版本的Linux中,都不推荐 直接使用 root 账号登录系统
sudo 命令用来以其他身份来执行命令,预设的身份为 root
用户使用 sudo 时,必须先输入密码,之后5分钟的有效期限,超过期限必须重新输入密码
提示
若其未经授权的用户企图使用 sudo ,则会发出警告邮件给管理员
4.1 给指定用户 授予 权限
本质:通知服务器 给 特定用户 分配 临时管理员权限
打开文件:vim /etc/sudoers
# 默认存在: root用户 具备所有的权限
root ALL=(ALL) ALL
# 授予 zhangsan 用户 所有的权限
zhangsan ALL=(ALL) ALL
4.2 使用用户 “zhangsan” 登录,操作管理员命令
本质:使用临时管理员权限
# 不切换 root 用户,也可以完成 添加用户的功能
sudo useradd -m -g dev wangwu
5.修改用户权限
方式一:修改用户权限
chmod 可以修改 用户/组 对 文件/目录 的权限
命令格式如下:
chmod +/- rwx 文件名|目录名
提示:以上方式会一次性修改 拥有者/组 的权限
方式二
虽然 方式一 直接修改 文件|目录 的 读|写|执行 权限,但不能精确到 拥有者|组|其他 的权限
命令格式如下:
(u 表示所属用户 / g 表示所属组 / o 表示其他)
chmod -R u=rwx,g=rx,o=rwx 文件|目录
方式三:简化方式二
命令格式如下:
chmod -R 755 文件|目录
说明:
第一个数字是:拥有者权限
第二个数字是:组权限
第三个数字是:其他用户权限
常用数字组合(u 表示用户/g 表示组/o 表示其他)
777 ---> u-rwx,g-rwx,o-rwx
755 ---> u-rwx,g-rx,o-rx
644 ---> u-rw,g-r,o-r
系统信息相关命令
1.时间和日期
date时间
显示当前时间
date +"%Y‐%m‐%d %H:%M:%S"
设置系统时间
date ‐s "时间字符串"
cal 日历
磁盘信息
进程信息
所谓 进程, 通俗的说就是 当前正在执行的一个进程
ps 默认只会显示当前用户通过终端启动的应用程序
ps 选项说明如下:
提示
使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 用户开启的进程,否则可能导致系统崩溃
要退出 top 直接输入 q 即可