#Linux基础(三)
###vi/vim的特点

  • vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色。
  • vi/vim正是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等。
  • 全屏显示
    ###vi/vim的三种编辑模式
  • 命令模式
  • 输入模式
  • 末行模式
    | 编辑模式 | 作用 |
    | :-------- |--------|
    | 命令模式 | 用户执行命令,vi/vim的三种编辑模式比如复制行、粘贴行等等 |
    | 输入模式 | 用于输入文本、修改文本等等 |
    | 末行模式 | 用于查找文本、保存修改等等 |
    ###vi/vim的三种编辑模式间转换的方式
  • 命令模式–>输入模式
    i:insert,在当前光标所在字符的前面,转为输入模式
# Run the Setup Agent on first boot
-- INSERT

I:大写的i,在当前光标所在行的行首转换为输入模式

(I)#version=RHEL8
# Use graphical install
graphical

a:append,在当前光标所在字符的后面转换为输入模式

%end%(a)naConda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
-- INSERT --

A:在当前光标所在行的行尾转换为输入模式

pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty()
%end
-- INSERT -

o:open,在当前光标所在行的下方新建一行并转为输入模式

%end
()
-- INSERT -

O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式

()
%end-- INSERT --

输入模式–>命令模式
ESC


%end

命令模式–>末行模式
:

%end:

末行模式–>命令模式
ESC ESC
###打开文件方式

  • 文件打开后默认处于命令模式下
    vim filename //打开文件
[root@localhost ~]# vim anaconda-ks.cfg

vim +n filename //打开文件并定位到第n行

[root@localhost ~]# vim +2  anaconda-ks.cfg

vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首

#version=RHEL8
# Use graphical install
graphical

###关闭文件方式

命令 意义
q 退出
wq 保存并退出
q! 不保存退出
w 保存但不退出
w! 强行保存
wq! 强行保存并退出
x 强行保存并退出
###关闭文件方式
命令模式下关闭文件
ZZ
###移动光标的方式
移动光标方式 移动方法
:-------- --------:
逐字符移动 h,l,j,k,#h,#l,#j,#k
以单词为单位移动 w,e,b,#w,#e,#b
行内跳转 0,^,$
行间跳转 gg,G,#gg,#G
翻屏 ctrl+f,ctrl+b,ctrl+d,ctrl+u
###字符编辑
字符编辑
编辑命令 意义
:-------- --------
x 删除光标所在处的单个字符
#x 删除光标所在处及其向后共#个字符
xp 交换光标所在处的字符及其后面字符的位置
  • x
()end
  • #x
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
(                                                                       )
end
  • xp
(%ad_dukmp --enable --kkkkkrkkkkkkkkekserve-mb='auto')

###删除命令:d

  • 命令模式下d命令常与跳转命令组合使用,如
    d$:表示删除当前光标所在位置到行尾的内容
%packages
@(我的第一个笔记本)
kexec-tools

d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容

# Keyboard layouts
(        )
# System language

d0:表示删除当前光标所在位置到绝对行首的内容

( )boot --enable

(#d)跳转符:删除跳转符指定范围内的#个,例如
(#dw)
(#de)
(#db)
dd:删除当前光标所在行整行

(      )autopart

(#dd):删除包括当前光标所在行在内的#行

timezone Asia(   )

D:删除当前光标所在行的内容,保留空行

%ad_dukmp --ena(    )

###删除命令:d

  • 末行模式下d命令的使用 :StartADD,EndADDd

这里的StartADD与EndADD是指一个范围,例如:
1,5d:表示删除第1到第5行

范围表示方法:

表示方法 意义
. 光标所在当前行
$ 最后一行
+# 光标所在行往后#行
$-# 倒数第#行
% 全文
###复制与粘贴
复制命令:yy

粘贴命令:p
p:小写p

若删除或复制的为整行内容,则粘贴至光标所在行的下方
若删除或复制的为非整行,则粘贴至光标所在字符的后面

P:大写p
若删除或复制的为整行内容,则粘贴至光标所在行的上方
若删除或复制的为非整行,则粘贴至光标所在字符的前面
###替换、撤销编辑与重复编辑操作
替换:r
R:替换模式,替换多个字符
r#:将当前光标的字符替换为#,这里的#可以是任何字符

撤销编辑:u
u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
(#u):直接撤销此前的#次编辑操作
ctrl+r:还原最近一次的撤销操作

重复前一次编辑操作:.
###可视化与文本查找
视化模式:可视化模式下可以对选取的内容进行前面讲的所有编辑操作
v:按字符选取内容
V:ctrl+V按矩形块(行)选取内容

文本查找:
/pattern:从上往下查找匹配的内容
?pattern:从下往上查找匹配的内容
n:从上往下查找匹配到的内容的下一条
N:从下往上查找匹配到的内容的下一条
###查找并替换与行号控制
查找并替换:s
s命令只能在末行模式下使用,语法如下:
:ADDR1,ADDR2 s/pattern/string/gi

示例:
:1,5 s/abc/def/g 表示把第一行到第五行的所有abc替换为def

末行模式下显示或取消显示行号:
set nu:显示行号
set nonu:取消显示行号
###用户和组管理

  • 用户分类
    Linux用户分为管理员和普通用户两种:
    | 用户类别 | 用户id |
    | :-------- | --------|
    |管理员|0|
    |普通用户|1-65535|
    其中普通用户又分为系统用户和登录用户两种:
    | 用户类别 | 用户id |
    | :-------- | --------|
    |系统用户|1-999(为守护类进程获取系统资源而完成权限指派的用户|
    |登录用户|1000-60000(为了完成交互式登录使用的用户|
  • Linux安全上下文

运行中的程序:进程(process)

以进程发起者的身份运行
root:cat
tom:cat
进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux通过安全上下文的概念完成用户权限的指派。

先判断用户是否是某文件的属主
再判断用户是否属于某个组
最后定其为其他用户

  • Linux用户组类别
    | 用户类别 | 特性 |
    | :-------- | --------|
    |私有组|创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组|
    |基本组|用户的默认组|
    |附加组(额外组) |默认组以外的其它组 |

Linux用户和组相关的配置文件

  • 各配置文件说明
    | 配置文件 | 作用 |
    | :-------- | --------|
    |/etc/passwd|用户及其属性信息(名称、uid、基本组id等等)|
    |/etc/group|组及其属性信息|
    |/etc/shadow|用户密码及其相关属性|
    |/etc/gshadow|组密码及其相关属性。在用户执行基本组切换时使用|
配置文件 /etc/passwd /etc/group
第一字段 用户名 组名
第二字段 密码占位符 组密码
第三字段 UID GID
第四字段 GID 以当前组为附加组的用户列表(分隔符为逗号)
第五字段 用户的描述信息
第六字段 用户家目录
第七字段 用户的登录shell
配置文件 /etc/passwd
第一字段 登录名
第二字段
第三字段 UID
第四字段 加密后的密码
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码禁用期
第八字段 帐号的过期日期
第九字段 保留字段
  sync    :x       :5 :0    :sync     :/sbin   :/bin/sync
//用户名 密码占位符 UID GID 用户描述信息 用户家目录 用户的登录shell 
ftp     :x     :50    :
//组名  组密码   GID    以当前组为附加组的用户列表 
halt       :*             :18397              :0                    :99999
//登录名 加密后的密码  最近一次更改密码的日期    密码的最小使用期限       密码的最大使用期限:7         :        :            :密码警告时间段 密码禁用期 账号的过期日期 保留字段
   root      :         :           :
// 组名    加密密码   组管理员密码   组附加用户表 
  • 密码复杂性
    密码复杂性策略:

    • 使用数字、大写字母、小写字母及特殊字符中至少3种

    • 足够长

    • 使用随机密码,不要使用有意义的单词或数字

    • 定期更换,不要使用最近曾经使用过的密码
      ###用户和组相关的管理命令

  • 用户管理
    用户创建命令useradd
    ­u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中

-u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中

[root@localhost ~]# useradd -u 1002 ll
[root@localhost ~]# id ll
uid=1002(ll) gid=1002(ll) groups=1002(ll)

-g GID //指定用户所属基本组,可为组名或GID

[root@localhost ~]# groupadd jj
[root@localhost ~]# useradd -g jj lo
[root@localhost ~]# id lo
uid=1003(lo) gid=1003(jj) groups=1003(jj)

-G groupname,… //附加组,可以有多个,用逗号隔开。组groupname必须事先存在

[root@localhost ~]# useradd -G jj vv
[root@localhost ~]# id vv
uid=1004(vv) gid=1004(vv) groups=1004(vv),1003(jj)

-c “COMMENT” //注释信息

[root@localhost ~]# cat /etc/passwd | grep yy
yy:x:1005:1005:hihi:/home/yy:/bin/bash

-d /path/to/directory //指定用户的家目录。此目录必须不能事先存在, //否则将不会从/etc/skel中复制环境设置文件

[root@localhost ~]# useradd -d /opt/tt tt
[root@localhost ~]# ll /opt/
total 28
-rw-r--r--. 1 root root 158 Jun 30 00:41 123.zip
-rw-r--r--. 1 root root   6 Jul  1 16:58 a.txt
-rw-r--r--. 1 root root   0 Jun 30 00:52 aa
-rw-r--r--. 1 root root 104 Jun 30 00:53 aa.tar.gz
-rw-r--r--. 1 root root  46 Jun 30 00:54 aaa.tar.bz2
-rw-r--r--. 1 root root  14 Jun 30 00:02 abc.bz2
-rw-r--r--. 1 root root 109 Jun 30 00:54 bb.tar.bz2
-rw-r--r--. 1 root root 160 Jun 30 00:57 cc.tar.xz
drwx------. 3 tt   tt    78 Jul  4 16:29 tt
drwxr-xr-x. 2 root root   6 Jun 30 00:39 www

-s shell //这里的shell最好使用/etc/shells里面有的shell, \ // /etc/shells指定了当前系统可用的安全shell

[root@localhost ~]# useradd -s /sbin/nologin oo
[root@localhost ~]# cat /etc/passwd |grep oo
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:979:979::/var/lib/setroubleshoot:/sbin/nologin
roo:x:1000:1000:root:/home/roo:/bin/bash
oo:x:1007:1007::/home/oo:/sbin/nologin

-M //创建用户时不给其创建家目录

[root@localhost ~]# useradd -M bb
[root@localhost ~]# cat /etc/passwd |grep bb
bb:x:1008:1008::/home/bb:/bin/bash

-r //添加一个系统用户

[root@localhost ~]# cat /etc/passwd |grep xx
xx:x:975:974::/home/xx:/bin/bash

-D //直接打印/etc/default/useradd文件的内容或配合其它选项 \ /(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost ~]# 

#Linux基础(三)相关推荐

  1. 《Linux基础三》用户和文件权限管理

    用户和文件权限管理 1,用户 管理员用户: Root用户,也称根用户.超级用户.超级管理员 可对根目录执行读写和执行操作 具有系统中的最高.所有权限 普通用户: 权限有限的用户 Root用户拥有系统的 ...

  2. Linux基础优化方法(三)———字符集编码设置优化

    Linux基础优化方法(三)---字符集编码设置优化 一.什么是字符编码 二.编码GB2312.GBK.UTF-8 三.工作时有乱码的原因 四.进行优化 1.CentOS 6 ①.查看默认编码信息: ...

  3. 生物信息入门之 linux,手把手教你学生信系列(三)-- Linux 基础入门拦路虎

    原本计划这一篇介绍基础命令的,然后我们微课学院之前已经有相关录制好的视频,而且网上的相关文章多不胜数,因此也就不在卖弄了,简单交流一下 Linux 入门过程中的几个拦路虎,具体命令等在后文具体与到时候 ...

  4. 小猿圈Linux基础面试题,看看你能答对几道?

    最近身边的很多朋友都在学习linux,从最开始的安装软件都需要百度一天的他们,现在已经成长为了,不需要百度就可以把自己弄懵圈的了,接下来的几天小猿圈linux老师会为大家准备一些实用的linux技巧分 ...

  5. 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...

    本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

  6. Linux基础第一周

    Linux基础第一周 命令的格式 command(命令)option(选项)arguments(参数)三部分组成,之间需要空格间隔 options 选项 启用命令的某项功能,从而更改命令的功能 arg ...

  7. 20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结

    20155301 滕树晨linux基础--linux进程间通信(IPC)机制总结 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在 ...

  8. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  9. 《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础

    本节书摘来异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者:华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

最新文章

  1. 学习web前端难不难
  2. 计算机aoa综合题word,AOA-word综合题操作步骤(修正版)
  3. 数据结构与算法一 - 二叉树基础
  4. 洛谷 P1469 找筷子
  5. 两层卷积网络实现手写字母的识别(基于tensorflow)
  6. 用python numpy实现幻方
  7. jenkins+pytest+allure接口自动化测试(windows环境)
  8. kill、killall 、pkill 发送信号命令
  9. 华为ensp ftp 上传下载
  10. Oracle 19c 安装步骤
  11. python 使用win32api截图全解释
  12. python里apply用法_python中apply函数是什么?
  13. 编译时内核栈溢出:the frame size of 1928 bytes is larger than 1024 bytes
  14. shell 脚本定时监控Linux内存清除缓存
  15. HMI-36-【节能模式】开搞
  16. 安科瑞智慧消防在城市综合体中的应用
  17. 【因缘际会】知乎APP的简单的产品体验报告
  18. 我爱你用计算机按出来,iPhone计算器魔法技巧 简单几步获取对方手机号
  19. IT十年人生过客-十六-再见雍和宫
  20. 克里金插值 Kriging

热门文章

  1. JSP高校信息管理系统myeclipse开发sql数据库web结构计算机java编程
  2. 在Excel中批量生成条形码,支持Code128、Code39、Jan13等等格式
  3. 不小心点了计算机一键还原怎么操作,电脑按了一键还原系统怎么办
  4. 方格走法-牛客网(排列组合和动态规划)
  5. Mysql中B树与B+树的区别
  6. 《UCD火花集2:有效的互联网产品设计 交互/信息设计 用户研究讨论》一2.4 UI和IxD...
  7. java indexeddb_IndexedDB使用与出坑指南
  8. linux gcc comand not,gcc: command not found
  9. Python爬取猫眼「碟中谍」全部评论
  10. cesium加载并聚焦glb模型