Day 04
一.vim vi文本编辑器 重点
vim FILENAME
命令模式
d+enter 删除光标所在行以及下一行
dd 删除光标所在行
4dd 从光标所在行开始一共删除四行
dG 删除光标所在行,以及到文档尾
dgg 删除光标所在行,以及到文档首
s 替换,替换光标所在字符(删除光标所在字符)
S 替换,替换光标所在行 --进入insert模式
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
5G 跳转到文档的第五行
^ 光标跳转到行首
$ 光标跳转到行尾
yy 复制光标所在行
p 粘贴在光标下一行
cc 剪切光标所在行 —进入插入模式
u 向左撤销
ctir+r 向右撤销
命令模式–进入插入模式
s 删除光标所在字符进入插入模式
S 删除光标所在行进入插入模式
a 插入到光标后
A 插入到光标所在行后
i 插入到光标前
l 插入到光标所在行的行首
o 插入到光标所在行下一行
O 插入到光标所在行上一行
命令–末行模式
:w 写入保存
:w FILENAME
:q 退出
:q! 强制退出(不保存)
:wq ! 保存退出
:set nu 显示行号
:set nonu 取消显示行号
:%s /root/ooo/ 匹配所有行中第一次出现root关键,字替换为000
:%s /root/ooo/g 匹配所有行中所有出现root关键,字替换为000
:12,18co 40 将12到18行复制到40行
:r FILENAME 将指定文件内容读取到光标所在下一行
:.!cat /etc/passwd 将命令cat /etc/passwd 结果显示到文档中
/关键字 快速匹配关键字
:noh 取消关键字高亮显示
esc退出
二.echo 打印 标准输入输出
$ 引用变量名
$? 上一条命令的返回结果(0-255)0成功 非零失败
“ ” 弱引用 可以解析特殊字符的含义 可以显示变量的值
‘ ’ 强引用 不解析特殊字符的含义 不显示变量的值
`` 命令替换 解释命令信息 =$()
#echo $SHELLS 打印变量值
echo $x 查看变量x
echo $SHELL 查看shell
echo $? 查看上一条命令的返回值
[root@www ~]# echo $SHELL
/bin/bash
[root@www ~]# echo "$SHELL“
/bin/bash
[root@www ~]# echo ' $SHELL '
$SHELL
[root@www ~]# echo 当前系统时间是 `date`
当前系统时间是Sun NOV 27 14:30:01 CST 2022
[root@www ~]# echo当 前系统时间是$(date)
当前系统时间是Sun NoV 27 14:31:28 CST 2022
linux中的程序对于文件的描述符0 1 2 标准输入 1 标准输出 2 错误输出
> 输出重定向符,将程序的输出结果重定到指定文件
>> 追加重定向符
-----将前一-个命令的输出(正确或者错误)结果写入- ----------------
< 输入重定向符
<< 终止结束符
#echo 1234 > file
#echo 234 >> file
#cat /etc/passwd > file
#> file2 创建fi1e2文件
#cat << EOF
\>aaaa
\>bbbb
\>EOF
aaaa
bbbb
#cat << EOF > file 编辑file文件写入内容
>aaaa
\>bbbb
\>EOF
| 管道符 将前一个程序(命令)输出结果通过管道符按照字符流的形式传递个后面程序继续对字符流进行处理
|tee T型管道符 |tee -a
横向输出 将程序的输出结果重定到指定文件
纵向输出 将程序的输出结果显示到终端
三.文本内容处理相关的命令
( 1 )通过处理命令只是将处理结果显示在终端不会对源文件更改
( 2 )按照指定文件的行进行处理
cut 文本剪切
-c 字符
-d 分割符类型
-f 指定字段
sort 文本排序
默认排序 按照行的字符进行比较()
-n 数值排序 升序
-nr 数值排序 降序
-u 去重
-t 分割符
-k 字段
[root@www /]# sort -t " " -k 2 -n bbb
abc 0 line4
abc 1 line1
abc 2 line7
abc 4 1ine6
abc 6 line5
abc 8 line2
abc 9 line3
uniq 去重
重复行必须相邻
[root@www /]# sort -u ccc
12
123
34
45
[ root@www /]# sort ccc | uniq
12
123
34
45
-c 统计每一行重复次数
-d 查看重复行的内容
-D 查看重复行的内容
[ root@www /]# sort ccc| uniq -C
1 12
4 123
1 34
1 45
[root@www /]# sort ccc| uniq -d
123
[root@www /]# sort ccc| uniq -D
123
123
123
123
eg:
[root@www /]# date
sun NoV 27 15:57:51 CST 2022
[root@www /]# date| cut -d " " -f 4
15:59:02
[root@www /]# echo当前系统的时间是‘date| cut -d " "-f 4、
当前系统的时间是16:00:02
eg: /etc/passwd
[root@www /]# echo "/sbin/nologin在/etc/passwd重复出现过`cut -d : -f 7 /etc/passwd | sort l uniq -C |head -4 | tai1 -1 | cut -d " "-f 6~`"
/sbin/nologin在/etc/passwd重复出现过
41
wc word count utf-8
wc FILENAME (行数 单词书 字节 FILENAME)
-l 行数
-w 单词书
-c 字节
-m 字符
eg:显示系统有多少用户
[ root@www /] # wc -1 /etc/passwd
47 /etc/passwd
[root@www /]# cat /etc/passwd | wc -l
47
[root@www /]# wc -l /etc/passwd | cut -d " "-f 1
47
tr 字符替换命令 :%s /root/123/
tr set1 set2
-t 等长字符替换
-c 反选定
-d 删除指定字符
-s 将多个连续重复字符替换为单个字符
[root@www /]# echo 111222333| tr 123 abc
aaabbbccc
[root@www /]# echo 111222333| tr 123 abcdef
aaabbbccc
[root@www /]# echo 111222333| tr 123 ab
aaabbbbbb .
[root@www /]# echo 111222333| tr -t 123 ab
aaabbb333
[root@www /]# echo 111222333 | tr -c 1 a
111aaaaaaa [ root@www /]#
[root@www /]#
[root@www /]#
[root@www /]# echo 111222333 | tr -d 1
222333
[root@www /]# echo "1 2 3 4"|tr -s " " " "
1 2 3 4
grep 文本关键字过滤显示 文本三剑客grep
sed awk
grep '模式匹配' FILENAME
-i 忽略大小写
-o 只显示关键字
-v 反过滤
#cat /etc/1ogin. defs
查看配置文件的关键参数信息并写入a.txt
[root@www /]# grep -v '^#' /etc/ login.defs | grep -v ‘ ^$' |tee a.txt
[root@www /]# grep -v '^#' /etc/login.defs | grep -v '^$' > a.txt
课后作业
1.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
2.通过查看时间命令将分别将年月日时分写入A文件
3.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
4.不显示/etc/login.defs 文件中以#开头的行以及空白行。
1.[ 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
3.[ root@www ~]# echo 当前系统共有wc -l /etc/passwd | cut -d " " -f 1
个用户
4.[root@ww ~]# grep -v ‘^#’ /etc/login.defs I grep -v ‘^$’