linux基础day09

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础day09相关的知识,希望对你有一定的参考价值。

vim文本编辑器

什么是vim

vivim 命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数。

vim 编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成。

vim 其实是vi 的升级版

为什么要使用vim

vim是学习linux最重要的命令之一

vim和vi的区别

vim 能高亮显示
vi 不能高亮显示

其他功能一样

vim的三种模式

命令模式

# 光标跳转
gg  # 跳转文本行首
G   # 跳转文本行末
Ngg # N代表数字 跳转文本第n行
 例: 1gg 跳转至第一行
     2gg 跳转到第二行
^   # 跳转至行首
$   # 跳转至行末
# 复制粘贴
yy  # 复制光标所在位置的一行
Nyy # N代表数字 复制光标所在行及后N行 
p   # 粘贴复制内容至光标所在下一行(小写)
P   # 粘贴复制内容至光标所在上一行(大写)
# 剪切
dd      # 删除或者剪切 可以通过p粘贴
Ndd/dNd # 删除/剪切光标所在行及后N行 N代表数字
dG      # 删除光标所在行至结尾
x       # 删除光标所在字符(小写)
X       # 删除光标所在前的一个字符(大写)
# 撤销
u            # 撤销上一步操作
r            # 替换光标所在字符
R            # 持续替换直到按下ESC
ctrl + r     # 恢复撤销,回滚

编辑模式

# 进入编辑模式命令模式的快捷键全部失效
i # 在光标前进入编辑模式
I # 进入编辑模式,光标跳转至行首

a # 光标往后退一格,进入编辑模式
A # 进入编辑模式,光标跳转到行末

o # 跳转至光标下一行,进入编辑模式
O # 跳转至光标上一行,进入编辑模式

s # 把光标下的字符删除,并进入编辑模式
S # 删除整行并进入编辑模式

末行模式

:wq          # 保存退出
:w           # 保存
:q           # 退出

:wq!         # 强制保存退出
:q!          # 强制退出
:w!          # 强制保存

:x           # 保存退出
shift+zz     # 保存退出
:number      # 数字!!,跳转到第n行
 例  :1 跳转至第一行
     :2 跳转至第二行
     :3 跳转至第三行
     
:set nu      # 显示行号
:set ai      # 自动缩进
:set ic      # 不区分大小写
:set list    # 显示制表符,显示结尾符号和TAB符号
:set hl      # 高亮
:set no命令   # 取消命令
末行模式的查找和替换
/关键字 # 使用/匹配关键字

# 替换
%s/root/xxx/g

s search 查询
g global 全局
% 代替所有行

视图模式

ctrl + v

# 集体注释
ctrl + v
shift + g (G)移动至末行
shift +i (I)光标移至行首进入编辑模式
shift +3 (#)
ESC ESC

#群体取消注释
x

vim环境变量优化

~/.vimrc 个人环境变量(优先级高) /etc/vimrc 全局环境变量
# vim ~/.vimrc
syntax on
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set number
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set ruler
set incsearch
set showmatch
set matchtime=10
set ignorecase
set cursorline
set t_Co=256
colorscheme molokai
#语法检查及高亮
syntax on
#设定默认解码
set?fenc=utf-8?
set?fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
#显示行号
set?number?
#vim使用自动对齐,也就是把当前行的对齐格式应用到下一行
set?autoindent?
#依据上面的对齐格式,智能的选择对齐方式
set?smartindent?
#设置tab键为4个空格
set?tabstop=4?
#设置当行之间交错时使用4个空格
set?shiftwidth=4?
#设置在编辑过程中,于右下角显示光标位置的状态行
set?ruler?
#设置增量搜索,这样的查询比较smart
set?incsearch?
#高亮显示匹配的括号
set?showmatch?
#匹配括号高亮时间(单位为?1/10?s)
set?matchtime=10?
#在搜索的时候忽略大小写
set?ignorecase?
#禁止生成临时
#set?nobackup?
#当前行高亮
set?cursorline?
#支持256色
set?t_Co=256?
#使用molokai颜色模板
#colorscheme molokai
//如果个人vim环境没有配置, 则使用全局vim环境变量配置。
//如果个人vim环境和全局环境变量产生冲突, 优先使用个人vim环境变量。

vim拓展

# 同时编辑两个文件

# 水平分割编辑两个文件
vim -o 1.txt 2.txt

# 垂直分割编辑两个文件
vim -O 1.txt 2.txt

#切换
ctrl +ww


# 对比两个文件
vimdiff file1 file2

# 以光标在第n行进入文件
vim +n 文件

linux基础day11

用户管理拓展

用户创建流程

# 过滤用户登录配置文件不包含以#开头及空行的内容
[root@localhost ~]# cat /etc/login.defs |grep -vE ^#|^$
MAIL_DIR	/var/spool/mail
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 

/etc/login.defs文件讲解

# 过滤用户登录配置文件包含以大写字母开头的内容
[root@localhost ~]# grep ^[A-Z] /etc/login.defs
# 创建用户的时候会创建用户相关邮件所在的路径
MAIL_DIR	/var/spool/mail
# 密码最长使用天数
PASS_MAX_DAYS	99999
# 密码最少使用天数
PASS_MIN_DAYS	0
# 密码最少长度
PASS_MIN_LEN	5
# 密码到期前7天会提醒
PASS_WARN_AGE	7
# 普通用户最小UID 1000
UID_MIN                  1000
# 普通用户最大UID 60000
UID_MAX                 60000
# 系统用户最小UID 201
SYS_UID_MIN               201
# 系统用户最大UID 999
SYS_UID_MAX               999
# 普通用户最小GID 1000
GID_MIN                  1000
# 普通用户最大GID 60000
GID_MAX                 60000
# 系统用户最小GID 201
SYS_GID_MIN               201
# 系统用户最大GID 999
SYS_GID_MAX               999
# 创建家目录
CREATE_HOME	yes
# umask
UMASK           077
# 创建用户的时候,同时创建该用户的同名用户组
USERGROUPS_ENAB yes
# 密码加密格式 SHA512
ENCRYPT_METHOD SHA512 

/etc/default/useradd

## USERGROUPS_ENAB	no的情况下才会读取以下配置文件

# useradd defaults file
# 组的GID 100
GROUP=100
# 家目录的位置
HOME=/home
# 账号过期后都不会停止使用 -1=不开启
INACTIVE=-1
# 账号不过期
EXPIRE=
# 创建用户的默认shell
SHELL=/bin/bash
# 普通用户的环境变量存储位置
SKEL=/etc/skel
# 创建用户时,是否创建邮件文件
CREATE_MAIL_SPOOL=yes

用户密码管理

passwd

# 给当前登录用户设置密码
passwd

# 给普通用户设置密码
passwd user(用户名)

# root用户设置密码可以无视密码长度
# 普通用户设置密码必须遵守8位数

# 交互
类似挤牙膏,动一下挤一下

# 免交互
可以免除交互,不需要一个个点

# 安装expect(自动化交互套件)
yum install -y expect

# 生成密码
mkpasswd -l 10 -d 3 -c 4 -C 2 -s 1

-l 密码长度
-d 密码数字个数
-c 小写英文个数
-C 大写英文个数
-s 特殊符号

组的基本管理

# 组信息
/etc/group

ggg:x:1006:fff

第一列 用户名
第二列 密码占位符
第三列 组的gid
第四列 附加组,基本成员不显示
# 组密码信息
/etc/gshadow

ggg:!::fff
第一列 组名
第二列 组密码 !为空
第三列 组管理员
第四列 仅显示附加组成员,不显示基本成员

group管理

# 添加组
groupadd

# 语法
groupadd 选项 参数

# 选项
-g 指定gid
groupadd -g 555 qqq
qqq:x:555:

-r 创建系统组
# 创建系统组,gid从201-999
[root@localhost ~]# groupadd -r sys_group
[root@localhost ~]# tail -1 /etc/group
sys_group:x:996:

# 修改组的信息
groupmod

# 语法
groupmod 选项 参数

# 选项
-n 修改组名
groupmod -n lollol lol
-g 修改原有组的gid
groupmod -g 777 lol

# 参数
组名:指定要修改的工作的组名。

# 删除组,可以删除没有用户作为主组的组,如果只是附加组,删除时不会提示
groupdel

# 语法
groupdel 参数

# 参数
组:要删除的工作组名。

cat /etc/group

使用 gpasswd 设置组密码[了解即可]

[root@zls ~]# groupadd devops
[root@zls ~]# gpasswd devops
Changing the password for group devops
New Password:
Re-enter new password:

使用 newgrp命令切换基本组身份[了解即可]

//检查账户信息
[root@docker ~]# useradd zls
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls)
//切换普通用户
[root@docker ~]# su - zls
//创建新文件,并验证权限
[zls@docker ~]$ touch file_roots
[zls@docker ~]$ ll
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
//切换组信息
[zls@docker ~]$ newgrp devops
Password:
//建立文件,检查权限
[zls@docker ~]$ touch file_test
[zls@docker ~]$ ll
total 0
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
-rw-r--r-- 1 zls devops 0 Jun 13 10:08 file_test

修改命令提示符

vim /etc/motd
/**
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣴⣶⣶⣶⣶⣶⠶⣶⣤⣤⣀⠀⠀⠀⠀   
⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⠁⠀⢀⠈⢿⢀⣀⠀⠹⣿⣿⣿⣦⣄⠀⠀  
⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⠿⠀⠀⣟⡇⢘⣾⣽⠀⠀⡏⠉⠙⢛⣿⣷⡖⠀ 
⠀⠀⠀⠀⠀⣾⣿⣿⡿⠿⠷⠶⠤⠙⠒⠀⠒⢻⣿⣿⡷⠋⠀⠴⠞⠋⠁⢙⣿⣄ 
⠀⠀⠀⠀⢸⣿⣿⣯⣤⣤⣤⣤⣤⡄⠀⠀⠀⠀⠉⢹⡄⠀⠀⠀⠛⠛⠋⠉⠹⡇ 
⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣤⣤⣼⣇⣀⣀⣀⣛⣛⣒⣲⢾⡷ 
⢀⠤⠒⠒⢼⣿⣿⠶⠞⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⣼⠃ 
⢮⠀⠀⠀⠀⣿⣿⣆⠀⠀⠻⣿⡿⠛⠉⠉⠁⠀⠉⠉⠛⠿⣿⣿⠟⠁⠀⣼⠃⠀ 
⠈⠓⠶⣶⣾⣿⣿⣿⣧⡀⠀⠈⠒⢤⣀⣀⡀⠀⠀⣀⣀⡠⠚⠁⠀⢀⡼⠃⠀  
⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣷⣤⣤⣤⣤⣭⣭⣭⣭⣭⣥⣤⣤⣤⣴⣟⠁    
*/
# 保存退出
:wq

# 资源网址
https://www.bootschool.net/ascii-art/cartoons?pageNO=2

以上是关于linux基础day09的主要内容,如果未能解决你的问题,请参考以下文章

(0基础学Linux系列)1.09 Bash基础

Linux基础(优化)day-1

linux基础day09

Linux基础VI命令模式下删除拷贝与粘贴

Day1 linux基本操作

达内-linux基础-day06-分区和逻辑卷