Day04 cippus
vim 文本编辑器 vi
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jFPKIO1-1669517913499)(F:\桌面\src=http___www.51wendang.com_pic_cf1319cf947bf371e77eda39_3-810-jpg_6-1080-0-0-1080.jpg&refer=http___www.51wendang.webp)]
1.命令模式
d+enter 删除光标所在行以及光标下一行
dd 删除光标所在行
x 删除光标所在字符
Ndd 3dd 删除光标行开始一共三行
3,5dd 删除光标3-5行的内容
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 字符替换,替换光标所在字符
yy 复制光标所在行
p 粘贴在光标所在的下一行
cc 剪切光标所在行
G 跳转到文档尾的行首
gg 跳转到文档首的行首
^ 跳转到行首
s 跳转到行尾
crtl-u 向左撤销
crtl-r 向右撤销
2.命令模式进入插入模式的方式
a 插入到光标后
A 插入到光标所在行的尾部
i 插入到光标前
l 插入到光标所在行的首部
o 切换光标所在行的下一行
O 切换光标所在行的上一行
s 删除光标字符进入
S 删除光标字符
3.命令模式进入末行模式 按出:
:15 跳转到15行
:set nu 显示行数[当前屏幕所显示的第一行可能不是标有1的行数(只是因为当前显示的第一行是这一页的第一行),不要通过滚轮来查看第一行,用光标移动查看第一行]
:w 保存
:wq 保存退出
:q 退出
:q! 强制退出
:wq! 强制保存退出
/root 匹配关键字
:noh 取消高亮显示
:1,4 co 10 将第1-4行复制到第10行的位置
:1,4co$ ($表示末尾)将1-4行复制到到文件末尾
:1,4m$: 将1-4行移动到文件末尾
:% s/root/000/ 关键字符替换,替换的是每一行中第一次匹配的root关键字
:% s/root/000/g 关键字符替换,替换的是每一行中所有匹配的root关键字
:r FILENAME 把指定文件内容读取当前文档光标所在行的下一行
:.*
正则符: . 任意单个字符 (数据内容)
* 匹配前一个字符任意次
通配符: * 任意长度的任意字符 (文件名)
?匹配任意单个字符
4.文本内容处理命令
文件的行进行处理;将处理的结果显示在终端不会对源文件信息进行更改
cut 剪切
-c 按照字符进行剪切
-d 分割字符
-f 分割字段
[root@localhost file.txt]# echo 当前系统的时间`date | cut -d " " -f 4`
当前系统的时间16:19:38
sort 排序
默认按照文件行的字符进行比较(从小到大)
-r 降序(从大到小)对比的是首字母再对比后面的字母
[root@localhost /]# sort -r aaa
67
45
34
2345
234
23
221
2
123
1
0
-n 按照数值比较
[root@localhost /]# sort -n aaa
0
1
2
23
34
45
67
123
221
234
2345
-u unique 去重
#sort -nu aaa 将文件中的行按照数值从小到大显示,并且重复行只执行一次
echo 打印命令(标准输入输出的命令)
#echo helloworld
#echo $ $ 引用变量
[root@localhost ~]# echo $HOSTNAME
localhost.localdomain
[root@localhost ~]# echo "$HOSTNAME" "" 弱引用(可以解释特殊含义)
localhost.localdomain
[root@localhost ~]# echo '$HOSTNAME' ‘’ 强引用(不可以解释特殊含义)
$HOSTNAME
[root@localhost ~]# echo 当前主机时间`date` `` 命令替换符
当前主机时间Sat Nov 26 14:51:19 CST 2022
[root@localhost ~]# echo 当前主机时间$(date) $() 命令替换符
当前主机时间Sat Nov 26 14:51:39 CST 2022
uniq 去重
-c 显示重复次数
-d 现实文件重复出现的内容
-D 所有重复行
tr 字符替换命令
[root@localhost /]# echo helloworld | tr l 0 把l字符替换成0字符
he00owor0d
[root@localhost /]# echo hellworld | tr hl 0 把h和l字符替换成0字符
0e00owor0d
[root@localhost /]# echo hellworld | tr l 01 把l字符替换成0字符
he00owor0d
[root@localhost /]# echo hellworld | tr -t hl 0 等长字符替换,把h替换成成0字符
0elloworld
[root@localhost /]# echo hellworld | tr -c l 0 反选定 除了l字符外,其它全被替换成0字符
00ll0000l00
[root@localhost /]# echo hellworld | tr -d hl 删除字符 删除hl字符
eoword
[root@localhost /]# echo 1 2 3 | tr -s " " " " 将多个连续重复字符替换成单个空格字符
1 2 3
#df -h 查看文件系统使用情况
[root@localhost /]# df -h | tr -s " " " " | cut -d " " -f 4
Avail
867M
896M
886M
896M
13G
758M
179M
0
180M
grep 文本过滤 shell文本三剑客grep sed awk
格式:grep ‘关键字’ FILENAME
grep 'root' /etc/passwd 过滤关键字,有root关键字行打印到终端
grep -o 'root' /etc/passwd 过滤关键字,只把root关键字打印到终端
grep -i 'ROOT' /etc/passwd 过滤关键字乎略大小写
grep -v 'root' /etc/passwd 过滤关键字,把没有关键字的行显示
#cat /etc/login.defs
grep -v '^#' /etc/login.defs 不显示以#号开头的行
grep -v '^#' /etc/login.defs | grep -v '^$' ^$ 空白行
wc 文本统计
wc FILENAME 统计指定文件的行,单词数,字符数。
[root@localhost /]# vim bbb
[root@localhost /]# cat bbb
aaa
bbb
[root@localhost /]# wc bbb
2 2 8 bbb
2是行 2是单词数 8是字符数(有换行符$所以是6+2=8)
-l 统计行数
[root@localhost /]# wc -l bbb | cut -d " " -f 1
2
-w 统计单词数
[root@localhost /]# wc -w bbb | cut -d " " -f 1
2
-m 统计字符数
[root@localhost /]# wc -m bbb | cut -d " " -f 1
8
-c 统计字节数
[root@localhost /]# wc -c bbb | cut -d " " -f 1
8
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cZ8Xb2M-1669517913499)(C:\Users\86186\Pictures\screenshots\屏幕截图_20221126_165039.png)]
linux中文件的描述符: 0标注输入 1标准输出(正确输出) 2错误输出
输出重定向符(将程序的内容输出重定向到指定文件–将内容写入文件,会覆盖原文件内容)>
输出追加重定向符 >>
输入重定向相符 <
终止结束符 <<
#head /etc/passwd > file
#tail -2 /etc/passwd >> file
#cmd 2> file1 把cmd的错误结果输入到file1文件
#cmd &> file1 & 表示1和2 把cmd正确或者错误输出写入到file1文件 == cmd 1>file1 2>&1
| 管道符(无名管道)前一个命令的输出结果安装字符流的形式通过管道符链接后一个命令进行处理
|tee T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tee == > |tee -a == >>
纵向输出将前一个命令的标准输出直接在终端打印显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bhKXkwHl-1669517913500)(C:\Users\86186\Pictures\screenshots\屏幕截图_20221126_154634.png)]
作业
1.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
[root@localhost ~]# cat /etc/passwd
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -nr > UID
[root@localhost ~]# cat 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@localhost ~]# cut -d : -f 4 /etc/passwd | sort -nr > GIU
[root@localhost ~]# cat 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@localhost ~]# date | cut -d " " -f 5 --complement > A
[root@localhost ~]# cat A
Sun Nov 27 01:14:41 2022
3.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
[root@localhost /]# wc -l /etc/passwd | cut -d " " -f 1
46
4.不显示/etc/login.defs 文件中以#开头的行以及空白行
[root@localhost /]# 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