徐照宇 2022.11.27
vim 文本编辑器
eg:vim /etc/passwd
vim
命令模式
d+enter 删除光标所在行及下一行
dd 删除光标所在行
数字+dd 删除光标所在行开始向下删除行
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 替换,替换光标所在字符(删除)
S 替换,替换光标所在行
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
数字*+G 跳转到文件的第 *行
yy 复制光标所在行
p 粘贴在光标下一行
cc 剪切光标所在行
u 向左撤销
CTRL+r 向右撤销
命令模式进入插入模式
s 删除光标所在字符进入插入模式
S 删除光别所在行进入插入模式
a 插入到光标后
x 删除当前字符
A 插入到光标所在行的行尾
i 插入到光标前、
I 插入到光标所在行的行首
o 插入到光标所在下一行
O 插入到光标所在上一行
命令–末行模式
:w(write) 写入保存
:wq 退出
:q! 强制退出
:wq! 退出
:set nu 显示行号
:set nonu 取消行号
:%s/root/000/ 匹配所有行中第一出现root关键字替换为000
:%s/root/000/g 匹配所有行中出现root关键字替换为000
:12,18 co 40 将12行到18行复制到40行
:r FILENAME 将指定文件内容读取到光标所在下一行
:.! cat/etc/passwd 将cat/etc/passwd 显示到文档
echo 打印标准输入输出
$ 应用变量
$? 上一条命令的返回结果(0-255) 0成功 非零失败(退出码)
“” 弱引用 可以解析特殊字符的含义 可以显示变量的值
‘’ 强引用 不解析特殊字符的含义 不显示变量的值
“” 命令替换 $()也可以替换
echo $SHELLS 打印变量值
Linux中的文件描述符 0 1 2
0:标准输入
1:标准输出
2:错误输出
> 输出重定向符 将程序的输出结果重定到指定文件 1> 2
>> 追加重定向符
使用场景:将前一个命令的输出(正确或错误)结果写入一个文件
< 输入重定向符
<< 终止结束符
echo 1234>file
echo 234>>file
cat /etc/passwd >file
> file2 创建file2文件
#cat <<EOF
>aaa
>bbb
>EOF
aaa
bbb
#cat <<EOF >file 编辑file文件写入内容
>aaa
>bbb
>EOF
| 管道符 将前一个程序(命令)输出结果通过管道符按照字符流的形式传递给后面程序继续对字符流进行处理
| tee T型管道 |tee -a
横向输出 将程序的输出结果重定到指定文件
纵向输出 将程序的输出结果重定到终端
文本内容处理相关的命令
(1)通过处理命令只是将处理结果显示在终端不会对源文件更改
(2)按照指定文件进行处理
cut 文本剪切
-c 字符
-d 分割符类型
-f 指定字段
#cat /etc/passwd
sort 文本排列
按照行的首字符大小进行(从小到大)
-n 数值(从小到大)
-r 降序
-u 去重
-t 分隔符
-k 字段
uniq 去重
重复行必须相邻
-c 显示重复次数
-d 查看重复行内容
-D 插件所有重复行内容
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 |uniq -c |head -4 | tail -1| cut -d " " -f 6`"
/sbin/nologin在/etc/passwd重复出现过41
统计文本数据wc (word count)
wc filename(行数 单词数 字节数 filename)
-l 行数
-w 单词数
-c 字节
-m 字符
eg:显示当前用户数量
字符替换命令 tr
tr set1 set2
eg:echo 1122333 |tr 123 abcdef
结果:aabbccc
-t 等长字符替换
-c 反选定
-d 删除指定字符
-s 将多个连续字符替换为单个字符
文本关键字过滤显示 grep
文本三剑客:grep sed awk
grep ‘模式匹配’ filename
-i: 忽略大小写
-o:只显示关键字
-v:反过滤
作业题
1.课程笔记总结
2.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
[root@localhost ~]# cut -d":“ -f 3 /etc/passwd |sort -nr > UID
[root@localhost ~]# cut -d“:” -f 4 /etc/passwd |sort -nr > GIU
3.通过查看时间命令将分别将年月日时分写入A文件
[root@localhost ~]# echo 当前时间是.! `date` > A
4.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
wc -l /etc/passwd
5.不显示/etc/login.defs 文件中以#开头的行以及空白行。
[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v '^$'