Vim 文本编译器 重点
Vim FLENAME
Vim
命令模式
d+enter 删除光标所在行以及下一行
dd 删除光标所在行
4dd 从光标所在行开始一共删除4行
dG 删除光标所在行,以及到文档位
dgg 删除光标所在行,以及到文档首
s 替换,替换光标所在字符(删除光标所在字符)
s 替换,替换光标所在行 ---进入插入模式
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
5G 跳转到文件的第五行
^ 光标跳转到首行
$ 光标跳转到行尾
yy 复制光标所在行 4yy 4.8yy
P 粘贴在光标下一行
cc 剪切光标所在行 ----进入插入模式
U 向左撤销
Ctrl+r 向右撤销
命令模式--进入插入模式
s 删除光标所在字符进入插入模式
S 删除光标所在行进入插入模式
a 插入到光标后
A 插入到光标所在行的行尾
i 插入到光标前
I 插入到光标所在行的行首
o 插入到光标所在行的下一行
O 插入到光标所在行的上一行
命令--末行模式
:w 写入保存
:w FILNAME
:q 退出
:q! 强制退出
: wq !
:set nu 显示行号
:set nonu 取消行号
:%s /root/000/ 匹配所有行中第一出现root关键,字替换为000
:%s /root/000/g 匹配所有行中所有root关键,字替换为000
:12.18 co 40
:r FILNAME 将指定文件内容读取到光标所在下一行
:!cat /etc/passwd 将cat /etc/passwd命令的结果显示在文件中
/关键字 快速匹配关键字
:noh 取消关键字的亮度显示
echo 打印 标准输入输出
$ 引用变量
$? 上一条命令的返回结果(0-255)0成功 非零是失败
“”弱引用 可以解析特殊字符的含义 可以显示变量的值
‘’强引用 不解析特殊字符的含义 不可以显示变量的值
`` 命令替换 $()
#echo $SHELL 打印变量值
#echo $? 查看上一条命令的返回值
linux中的文件描述符0 12 标准输入 1标准输出 2错误输出
> 输出重定向符,将程序的输出结果重定到指定文件 1> 2>
>> 追加输出重定向符
---------将前一个命令的输出(正确或者错误)结果写入一个文件--------
< 输入重定向符
<< 终止结束符
| 管道符 将前一个程序(命令)输出结果通过管道符按照字符流的形式传递给后面程序继续对字符流进行处理
|tee T型管道 |tee -a
横向输出 将程序的输出结果重定到指定文件
纵向文件 将程序的输出结果显示到终端
文本内容处理相关的命令
(1)通过处理命令只是将处理结果显示在终端不会对源文件更改
(2)按照指定文件的行进行处理
cut 文本剪切
-c 字符
-d 分隔符类型
-f 指定字段
#cat /etc/passwd
sort文本排序
-n 数值 (从小到大)
-r 降序
-u 去重
-t 分割符
-k 字段
uniq 去重(前提:重复行必须相邻)
-c 统计每一行重复次数
-d 查看重复行的内容
-D 查看所有重复行的内容
wc word count utf-8
wc FILENAME(行数 单词书 字节数 FILENAME)
-l 行数
-w 单词书
-c 字节
-m 字符
tr 字符替换命令 :%s /root/123/
tr set1 set2
-t 等长字符替换
-c 反选定
-d 删除指定字符
-s 将多个连续重复字符替换为单个字符
grep 文本关键字过滤显示 文本三剑客grep sed awk
grep ‘模式匹配’ FILENAME
-i 忽略大小写
-o 只显示关键词
-v 反过滤
作业
1.将/etc/passwd文件中3,4字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示
[root@www ~]# cat /etc/passwd | cut -d : -f 3 | sort -rn >UID
[root@www ~]# cat /etc/passwd | cut -d : -f 3 | sort -rn |tee UID
65534
1000
999
998
997
996
995
994
993
992
991
990
989
981
980
979
978
977
976
975
193
172
171
113
107
81
75
74
72
70
59
42
32
29
14
12
11
8
7
6
5
4
3
2
1
0
[root@www ~]# cat /etc/passwd | cut -d : -f 4 | sort -rn >GIU
[root@www ~]# cat /etc/passwd | cut -d : -f 4 | sort -rn |tee GIU
65534
1000
997
996
995
992
989
988
987
986
984
983
981
980
979
978
977
976
975
193
172
171
113
107
100
81
76
75
74
72
70
59
50
42
32
29
12
7
4
2
1
0
0
0
0
0
2.通过查看时间命令分别将年月日时分写入A文件
[root@www ~]# cat A
2022
[root@www ~]# date | cut -d " " -f 2,3,4,5 | cut -d : -f 1,2 > A
[root@www ~]# cat A
Dec 5 23:52
3.告诉用户当前系统有多少用户(/etc/passwd文件有多少行,一行是一个用户信息)
[root@www ~]# wc -l /etc/passwd | cut -d " " -f 1
46
4.不显示/etc/login.defs文件中以#开头的行以及空白行
[root@www ~]# grep -v '^#' /etc/login.defs | grep -v '^$'
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
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
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512