五、vi|vim文本编辑器
5.1、介绍
- VI编辑器是linux平台上最强悍的文本编辑器。主要是以命令来驱动执行。
最困难的就是命令的使用 区分3种工作模式
- VIM是VI的增强版本,功能差不多。
5.2、3种工作模式
- 命令模式
直接使用vi打开文件进入的就是命令模式 在此模式下,所敲的按键都理解为命令 以命令驱动执行不同的功能 此模型下,不能自由进行文本编辑
输入模式(左下角insert标记)
编辑文本内容 需要从命令模式按下i进入输入模式 按下esc回到命令模式
底线命令模式
: 字母 通常用于文件的保存退出 :q 退出 :w 保存 :wq 保存退出 :wq! 强制保存退出
- 还可以在命令模式下输入:shift+zz 快速的保存退出。
5.3、打开、新建
vim 文件名 #1、如果编辑的文件不存在 此时就是新建文件 new file #2、如果文件存在,就打开文件 进入命令模式
- 异常模式处理
- 情况:编辑过程中 ,VIM闪退。导致底层会生成一个swap交换文件,里面记录着未保存的数据
- 现象:再次打开文件的时候,编辑器会询问你如何处理swap交换文件。
5.4、vim基本操作命令
- 光标的移动
cp /etc/profile ./ #1、方向键控制移动 #2、命令 hjkl移动 #3、翻页 pageup pagedown #4、行首(home 0) 行尾(end $) #5、跳到文件的最后一行 G #6、跳到文件的第一行 gg
复制粘贴
#复制 yy 复制当前行 nyy 复制当前行往下n行 #粘贴 p 当前行的下一行粘贴 P 当前行的上一行粘贴 #注意 使用鼠标从window或者其他地方复制内容到vim编辑器粘贴 一定一定要在输入模式下进行 否则数据会有丢失的风险。
搜索替换
#搜索 /待搜索的内容 回车进行搜索 搜索到的结果高亮显示 使用n跳转到下一个搜索到的内容 N跳转上一个 #清除搜索匹配之后的高亮显示 :noh #替换 :2,4s/原内容/替换内容/gc 没有g的时候 替换每一行匹配的到的第一个 g表示替换这一行的所有匹配到的 c表示替换前给用户提示 #如果需要进行全局替换 所谓第一行到最后一行 :1,$s/原内容/替换内容/gc :%s/原内容/替换内容/gc hello tom hello allen hello allen tom mac apple hello allen apple hello apple spark allen hadoop spark allen allen
删除、撤销
#删除命令 dd 删除当前行 ndd 删除当前行往下n行 #撤销、反撤销 u 撤销上一步的操作 后悔药 ctrl+r 反撤销
5.5、插入模式、编辑模式(重要)
在命令模式下面输入字母进入插入模式 # i 进入到编辑模式后,定位到当前光标前面 # o 进入到编辑模式后,在当前行的后面,添加一行空行
常见的组合命令 G+o
打开文件之后 调整到最后一行 在下一行开始编辑
- 注意:在crt中,复制的内容单击鼠标右键可以进行粘贴,但是在vim编辑器中,必须在输入模式下再进行粘贴,否则内容会有丢失的风险。
5.6、可视模式( VISUAL )
- 功能:用于文本的选择
# v 基于字符选择的 # V 基于行选择的 # ctrl+v 基于文本块的选择
- 选择之后配合其他命令进行操作
5.7、扩展:notepad++ 文本编辑插件
- 功能:在windows平台联机编辑linux上的文件,保存之后,自动同步服务器上。
- 前提:notepad++ 升级到最新版本
- 安装插件:插件—>插件管理—>NppFTP
- 插件的配置
六、Linux用户与权限
6.1、用户、用户组
#用户 user linux上可以创建不同的用户 不同用户具有不同的权限 权限最高的用户叫做root 超级管理员用户 可以通过root去管理其他用户及权限 #用户组 usergroup 多个用户组成一组 同一组的用户具有相同的权限
6.2、权限
- 读read r
- 写write w
- 执行execute x
- 权限的分配和管理
- 在linux上对应文件文件夹,划分3个归属
文件的拥有者 user 拥有者所在的用户组 group 其他用户组 others
如何去查看权限 ls -l
[root@node1 linux02]# ll total 8 -rw-r--r--. 1 root root 47 May 18 11:23 1.txt -rw-r--r-- 就是权限位 第一位 -文件 d文件夹 l链接 后面每3位一组 rw- u 读写 r-- g 读 r-- o 读
6.3、用户组、用户的管理
- 必须是root用户才可以进行管理。
#1、增加一个新的用户组 groupadd 选项 用户组 可以使用的选项有: -g GID 指定新用户组的组标识号(GID)。 # groupadd group1 此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。 # groupadd -g 101 group2 此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。 #2、查看当前系统已有组信息 cat /etc/group itheima:x:1001:lisi,wangwu itheima组名
x 密码口号 一般都没有密码
1001 groupID gid 组编号
lisi,wangwu 归属该组的用户
#3、删除组
groupdel 组名
#4、修改文件归属的组
chgrp 组名 文件/目录名 针对文件夹加上-R可以实现递归修改
```shell #1、创建用户 useradd 选项 新建用户名 -g 指定用户所属的群组。值可以使组名也可以是GID -G 指定用户所属的附加群组。 #2、设置密码 [root@node1 linux02]# passwd 用户名 Changing password for user allen. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. #3、删除用户 userdel -r 用户名 此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。 #4、查看用户信息 cat /etc/passwd | grep 用户名 #5、修改文件所属的用户 chown allen 1.txt 如果是文件夹及其下面的所有要修改 加上-R参数
linux上root用户和非root用户区别
- 命令提示符不同: root# 普通用户$
- 家目录不同:
[root@node1 ~]# pwd /root [allen@node1 ~]$ pwd /home/allen
6.4、su、sudo
- su命令:用于用户之间的切换。
# su 用户 [allen@node1 ~]$ ll /root ls: cannot open directory /root: Permission denied [allen@node1 ~]$ su root #普通用户切换成为root需要输入root密码 Password: [root@node1 linux02]# su allen #root用户切换成为普通用户 不需要密码 [allen@node1 linux02]$ [allen@node1 linux02]$ exit #退出 exit #弊端:虽然通过切换可以具有root权限,但是root密码已经泄露了 不安全。 #能不能实现一种 让普通用户临时具有root权限,但是又不泄露密码
sudo
- 功能:给普通用户临时授予root权限。
- 注意:能够分配sudo的只有root。
- sudo的配置命令 visudo
- sudo具体使用
- step1:使用root用户编辑sudo配置文件
[root@node1 ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL allen ALL=(ALL) ALL allen ALL=(ALL) /usr/bin/ls #配置只允许执行指定的命令
step2:普通用户执行命令之前需要添加sudo关键字 申请sudo权限校验
[allen@node1 ~]$ ls /root ls: cannot open directory /root: Permission denied [allen@node1 ~]$ sudo ls /root We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for allen: #这里需要输入allen普通用户的密码 linux02 [allen@node1 ~]$ sudo ls /root #密码和sudo校验成功 获取一个为期5分钟的免密操作 linux02
6.5、修改文件的权限
- 核心的命令 chmod 权限 文件|文件夹 (针对文件夹-R 递归修改)
- 方式1:老百姓喜闻乐见的形式 数字
read----->r 4 write---->w 2 execute-->x 1 没有权限 0 chmod 777 -R 文件|文件夹
方式2: 字母 ±形式
user->u group->g others->o all->a + 增加权限 - 减少权限 chmod o-x 1.txt chmod a-w 1.txt
方式3: 等号赋值形式
chmod u=rwx 1.txt
- 扩展阅读: 对于文件、文件夹来说 读、写、执行权限 分为意味着什么?
比如:想要去删除一个文件夹下面的文件 需要什么权限?
比如:想切换cd进入一个文件夹 需要什么权限?
七、Linux系统命令
- 时间、日期
[root@node1 linux02]# date Sun Jan 29 16:27:37 CST 2023 [root@node1 linux02]# date +"%Y-%m-%d %H:%M:%S" 2023-01-29 16:28:22 [root@node1 linux02]# cal January 2023 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #关于时间日期的同步 同步网络授时 #大数据都是集群环境 基本要求:集群的时间同步问题
查看磁盘、内存信息
df -h #disk free 显示磁盘剩余空间 [root@node1 linux02]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 38G 1.7G 36G 5% / /dev/sda1 1014M 154M 861M 16% /boot /dev/mapper/centos-home 19G 33M 19G 1% /home tmpfs 378M 0 378M 0% /run/user/0 #内存使用情况 [root@node1 linux02]# free -h total used free shared buff/cache available Mem: 3.7G 249M 3.3G 11M 135M 3.3G Swap: 3.9G 0B 3.9G
进程信息
#在安装了jdk的情况下 有一个命令专门用于查看本机运行的java进程。 jps [root@node1 ~]# jps #必须在安装好jdk之后可以使用 -bash: jps: command not found #查看本机运行的所有进程 ps -ef | grep 进程名 #通常根据查询的进程号 结合kill -9 进程号 杀死进程
- linux完整命令参考资料