网络安全学习笔记|网络安全学习(系统文本编辑命令)

[#####成功在于你坚持了别人坚持不了的东西####]
1.1 系统基本编辑命令 vi是Linux命令行界面下的重要文字编辑器。vim是vi命令的增强版,例如高亮显示代码、自动缩进等。
【网络安全学习笔记|网络安全学习(系统文本编辑命令)】语法格式:

vim [option] [file] vim 选项文件

?
提前安装vim软件工具包
[root@xiaoQ ~]# yum install -y vim

说明:默认centos7系统中可能没有vim命令,需要通过命令方式安装vim
1.1.1 编辑命令模式概念介绍 vim分为三种模式:普通模式、编辑模式、命令模式,起作用分别如下:
普通模式:
用vim命令打开一个文件后,默认的状态就是普通模式。
在这个模式中,不能进行编辑输入操作,但可以移动光标,同时还可以执行一些操作命令进行如删除、复制、粘贴等工作。
编辑模式:
在普通模式下不能进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”等字母进入编辑模式后才可以执行编辑操作。
确定文件是否处于编辑模式状态有一个重要的特征,那就是在窗口的左下角要有插入的标记
网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

命令模式:
在普通模式下,输入”:” 或 “/” 或 “?” 时,光标会自动定位在最底行。
在这个模式中,可以执行保存、退出、搜索、显示行号等相关操作。
总结说明:三种工作模式的切换关系
网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

文件编辑基本操作步骤:
打开需要编辑文件:
[root@xiaoQ ~]# vim xiaoQ.txt

进行文件信息编辑:
首先进入编辑模式,输入小写字母 i --> insert,开始进行文件编辑
网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

结束文件编辑操作:
首先在编辑模式状态输入esc,然后在普通模式状态输入:进入命令模式,再输入wq实现文件保存退出
网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

说明:在利用vim编辑文件过程中,要注意系统的输入法状态不能是中文状态。
1.1.2 编辑命令常用快捷参数 vi/vim编辑命令在使用的过程中,也会用到一些快捷方式,实现对文件编辑的操作高效性。
普通模式:移动光标的操作
大写字母G 将光标移动到文件的最后一行
gg 将光标移动到文件的第一行,等价于1gg或1G
0 数字0,将光标从所在位置移动到当前行的开头
$ 从光标所在位置将光标移动到当前行的结尾
ngg/nG n为数字,移动到文件的第n行,可配合:set nu进行查看
进入编辑模式命令
i 在当前光标所在处插入文字
I 在当前所在行的行首的第一个非空格符处开始插入文字,与A相反
a 在当前光标所在处的下一个字符处插入文字
A 在当前所在行的行尾的最后一个字符处开始插入文字,与I相反
o 在当前所在行的下一行处插入新的一行
O 在当前所在行的上一行处插入新的一行
C 删除光标所在位置到行尾内容进入编辑状态
cc 清空当前行的所有内容信息并进入编辑状态
普通模式:复制、粘贴、删除
yy 复制光标所在的当前行
nyy n为数字,复制光标开始向下共n行
p/P p将已复制的数据粘贴到光标的下一行,P则为粘贴到光标的上一行
dd 删除(剪切)光标所在的当前行
ndd n为数字,删除从光标开始向下共n行
d1G 删除当前行至第一行
dG 删除当前行至最后一行
d0 删除当前光标文本至行首
d$ 删除当前光标文本至行尾
普通模式:搜索、替换、撤销
/xiaoQ 从光标位置开始,向下寻找名为xiaoQ的字符串
?xiaoQ 从光标位置开始,向上寻找名为xiaoQ的字符串
/xiaoQ\c 从光标位置开始,向下寻找名为xiaoQ的字符串,并且忽略大小写
n 从光标位置开始,向下重复前一个搜索的动作
N 从光标位置开始,向上重复前一个搜索的动作
:n1,n2s/A/B/g n1,n2为数字,在第n1行和n2行间寻找A并替换为B
:%s#A#B#g 将符合A的内容全部替换为B,斜线为分隔符,可以用@、#等替代
u 恢复前一个执行过的操作(进行操作撤销)
ctrl+r 恢复前一个撤销过的操作(取消操作撤销)
命令行模式:
:wq 退出并保存
:wq! 退出并强制保存,“!”为强制的意思
:q! 强制退出,不保存
:set nu 显示行号
:set nonu 与set nu相反,取消行号
:n1,n2moven3 将文件第n1行到第n2行移动到第n3行
:n1,n2copyn3 将文件第n1行到第n2行复制到第n3行
:set ic 开启忽略大小写字母的查找功能
:set noic 取消忽略大小写字母的查找功能
:noh 取消搜索信息高亮效果
:set list 显示行尾标识信息,以及部分特殊标记信息
说明:配置文件信息一致,也有可能含有特殊隐藏符号信息影响系统服务加载,最好直接在linux系统中编辑
1.1.3 企业编辑文件技巧说明 实际操作情况-01:批量删除多行指定信息
进入批量编辑模式 ctrl + v 可视块 进行批量删除操作 d 或者 x

实际操作情况-02:批量增加多列指定信息
进入批量编辑模式 ctrl + v 可视块 选择批量编辑区域 利用方向键 进入插入编辑模式 大写字母 I 或者 shift + i 开始编辑内容信息 退出批量编辑操作 按键盘 esc

网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

1.1.4 编辑操作常见异常情况 常见错误-01:需要指定编辑信息
[root@xiaoQ ~]# vim ~VIM - Vi IMproved ~ ~version 7.4.629 ~by Bram Moolenaar et al. ~Modified by ~Vim is open source and freely distributable ~ ~Help poor children in Uganda! ~type:help iccffor information ~ ~type:qto exit ~type:helporfor on-line help ~type:help version7for version info

常见错误-02:编辑路径必须存在
"/xiaoQ/xiaoQ01/xiaoQ.txt" "/xiaoQ/xiaoQ01/xiaoQ.txt" E212: Can't open file for writing Press ENTER or type command to continue

说明:以上提示错误信息,表示编辑的文件对应路径信息不存在。
提示:基础不牢地动山摇。
常见错误-03:编辑出现异常中断
网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

异常问题解决处理办法:
恢复临时文件信息方法
vi -r 需要编辑文件
显示临时文件信息方法
vi -r/-L
取消生成临时文件方法
vi -n 需要编辑文件
vim命令进行编辑文件时:
编辑指定文件信息,输入字母R,表示恢复临时文件中原有内容
利用命令查看文件内容是否正常
删除原有文件的临时文件
利用rm命令删除指定的临时文件/利用快捷方式字母D删除指定的临时文件
1.2 文件编辑命令扩展 1.2.1 文件编辑命令扩展-echo echo命令能将指定文本显示在Linux命令行上,或者通过重定向符写入到指定的文件中。
语法格式:
echo [option] [string] echo[选项][文本] 常用参数:

-n 不要自动换行
-E 不解析转义字符(默认参数)
-e 若字符串中出现以下字符,则需要进行特别处理,而不会将它当成一般文字输出
\a:发出警告声
\b:删除前一个字符
\c:最后不加上换行符号
\f:换行但光标仍旧停留在原来的位置
\n:换行且光标移至行首
\r:光标移至行首,但不换行
\t:插入tab
实践操作:
实践操作-01:使用-n参数实现不换行功能
[root@xiaoQ ~]# echo "xiaoQ01"; echo "xiaoQ02" xiaoQ01 xiaoQ02 [root@xiaoQ ~]# echo -n "xiaoQ01"; echo "xiaoQ02" xiaoQ01xiaoQ02

实践操作-02:打印输出信息到屏幕上
[root@xiaoQ ~]# echo xiaoQ Linux xiaoQ Linux [root@xiaoQ ~]# echo "xiaoQ Linux" xiaoQ Linux [root@xiaoQ ~]# echo 'xiaoQ Linux' xiaoQ Linux

实践操作-03:打印输出信息使用转义符号
最后不加上换行符:\c
[root@xiaoQ ~]# echo"xiaoQ" xiaoQ [root@xiaoQ ~]# echo -e"xiaoQ\c" xiaoQ[root@xiaoQ ~]#

?
换行且光标移至行首:\n
[root@xiaoQ ~]# echo"xiaoQ01xiaoQ02" xiaoQ01xiaoQ02 [root@xiaoQ ~]# echo -e"xiaoQ01\nxiaoQ02" xiaoQ01 xiaoQ02 [root@xiaoQ ~]# echo -e"xiaoQ01\rxiaoQ02" xiaoQ02

?
插入制表符使信息显示整齐:\t
[root@xiaoQ ~]# echo -e "01 Linux xiaoQ01\n02 python xiaoQ02\n03 mysql xiaoQ03" 01 Linux xiaoQ01 02 python xiaoQ02 03 mysql xiaoQ03 [root@xiaoQ ~]# echo -e "01\tLinux\txiaoQ01\n02\tpython\txiaoQ02\n03\tmysql\txiaoQ03" 01LinuxxiaoQ01 02pythonxiaoQ02 03mysqlxiaoQ03

实践操作-04:将输出信息写入到指定文件中
将输出内容覆盖重定向到指定文件中
[root@xiaoQ ~]# cat xiaoQ.txt xiao01 xiao02 [root@xiaoQ ~]# echo "xiaoQ" > xiaoQ.txt [root@xiaoQ ~]# cat xiaoQ.txt xiaoQ

?
将输出内容追加重定向到指定文件中
[root@xiaoQ ~]# cat xiaoQ.txt xiaoQ01 xiaoQ02 [root@xiaoQ ~]# echo xiaoQ03 >> xiaoQ.txt [root@xiaoQ ~]# echo xiaoQ04>>xiaoQ.txt [root@xiaoQ ~]# cat xiaoQ.txt xiaoQ01 xiaoQ02 xiaoQ03 xiaoQ04

说明:>>/>表示重定向符号信息,可以用于在命令执行后输出到屏幕的信息存入到指定文件中。
1.2.2 文件编辑命令扩展-cat cat命令可以理解为英文单词concatenate的缩写,其功能是连接多个文件并且打印到屏幕输出。
此命令常用于显示单个文件内容,或者将几个文件内容连接起来一起显示。
还可以从标准输入中读取内容并显示,生产环境中,它常与重定向或追加符号配合使用。
语法格式:
cat [option] [file] cat选项文件

常用参数:
-n 从第一行开始对所有输出的内容按行编号
-b 与-n选项功能类似,但忽略显示空白行行号
-s 当遇到有连续的两行以上的空白行,就替换为一行空白行
-E 在每一行的行尾显示$符号
实践操作:
实践操作-01:实现文件多行信息内容的编辑操作
使用> 或 >>主要区别在于是否覆盖还是追加新的的内容
[root@xiaoQ ~]# cat > test.txt << EOF > welcome to my Linux class, my name xiaoQ. > > if you like my class, pls support me. > > bye boys and girls > EOF [root@xiaoQ ~]# cat test.txt welcome to my Linux class, my name xiaoQ. ? if you like my class, pls support me. ? bye boys and girls

网络安全学习笔记|网络安全学习(系统文本编辑命令)
文章图片

实践操作-02:实现联合多个文件信息并重定向指定文件中
[root@xiaoQ ~]# cat xiaoQ01.txt xiaoQ01 [root@xiaoQ ~]# cat xiaoQ02.txt xiaoQ02 [root@xiaoQ ~]# cat xiaoQ01.txtxiaoQ02.txt> xiaoQ03.txt [root@xiaoQ ~]# cat xiaoQ03.txt xiaoQ01 xiaoQ02

实践操作-03:实现对指定文件内容进行清理操作
[root@xiaoQ ~]# cat xiaoQ03.txt xiaoQ01 xiaoQ02 [root@xiaoQ ~]# cat /dev/null > xiaoQ03.txt [root@xiaoQ ~]# cat xiaoQ03.txt [root@xiaoQ ~]#

功能总结:
查看文件内容 例如:cat file.txt,这是cat最基本的功能之一
把多个文件合并成一个 例如:cat file1.txt file2.txt >newfile.txt
非交互式地编辑或追加内容到文件尾部 这是生产工作中最重要的一个应用:
cat >> file1.txt << EOF I am xiaoQ Linux teacher. EOF

清空文件内容 例如:使用cat /dev/null > file1.txt命令就可以将文件内容清空,但文件还是存在的,这个功能在生产工作中也会用到。
1.3 文件查看命令扩展 1.3.1 文件查看命令扩展-more more命令的功能类似于cat,但cat命令是将整个文件的内容一次性显示在屏幕上
而more则会一页一页地显示文件内容。
语法格式:
more [option] [file] more选项文件

功能参数:
-num 指定屏幕显示大小为num行
+num 从行号num开始显示
Enter 向下显示1行
空格键 向下滚动一屏
b 返回上一屏
= 输出当前行的行号
/查找的文本 查找指定文本
v 调用vi编辑器
q 退出more查看状态
实践操作:
实践操作-01:执行more命令,后面不接任何参数
若不接任何参数,则会满屏显示文件内容
[root@xiaoQ ~]# more /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ #xiaoQ #xiaoQ # Network services, Internet style # IANA services version: last updated 2013-04-10 -- more --(0%) 操作人员可以在上面饿交互界面测试常用的功能,比如按空格键往下翻一屏。按 b 往上翻一屏;若想查找 3306,则先输入一个 / ,然后输入 3306 敲回车即可找到。

实践操作-02:只查看指定几行信息
[root@xiaoQ ~]# more -2 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ --More--(0%)

实践操作-03:只查看指定行之后的内容信息
[root@xiaoQ ~]# more +666 -3 /etc/services tacnews98/tcp# TAC News tacnews98/udp# TAC News metagram99/tcp# Metagram Relay --More--(5%)

1.3.2 文件编辑命令扩展-less less命令的基本功能类似于more命令,可以分页显示文件内容,但比more的功能更强大。
less命令在读取文件内容时,不需要一次性将整个文件加载之后再显示,而是会根据需要来加载文件内容。
并且less命令支持[page up] [page down]等按键功能,便于查看文件的内容。
语法格式:
less [option] [file] less选项文件

选项参数:
-i 搜索时忽略大小写
-m 显示类似于more命令的进度百分比
-N 显示每行的行号
-s 将连续空行压缩为一行显示
-e 当文件显示到结尾时自动退出文件,若不使用此选项则需要使用交互命令q退出less
交互操作:
在交互模式下,less命令也是基于more命令和vi命令的。
序号 子命令 解释说明
b 向前翻一页
空格键 向后翻一页
方向键 ↑ 向上滚一行
方向键 ↓/回车键 向下滚一行
/字符串 向下搜索字符串
?字符串 向上搜索字符串
n 向后查找下一个匹配的文本
N 向前查找前一个匹配的文本
v 进入vi编辑界面
G 移动到最后一行
gg 移动到第一行
h 显示帮助界面
q 退出less命令
实践操作:
实践操作-01:通过less命令查看文件
[root@xiaoQ ~]# less /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ #xiaoQ #xiaoQ # Network services, Internet style # IANA services version: last updated 2013-04-10 # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. /etc/services

实践操作-02:显示行号方法
[root@xiaoQ ~]# less -N /etc/services 1 # /etc/services: 2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $ 3 #xiaoQ 4 #xiaoQ 5 # Network services, Internet style 6 # IANA services version: last updated 2013-04-10 7 # 8 # Note that it is presently the policy of IANA to a8 ssign a single well-known 9 # port number for both TCP and UDP; hence, most ent9 ries here have two entries 10 # even if the protocol doesn't support UDP operatio/etc/services

1.3.3 文件编辑命令扩展-head head命令用于显示文件头部的内容,执行head命令默认会输出文件的开头10行内容。
语法格式:
head [option] [file] head选项文件

选项参数:
-n<行数> 指定显示的行数
-c<字节数> 指定显示的字节数
-q 不显示包含给定文件名的文件头
-v 总是显示包含给定文件名的文件头
实践操作:
实践操作-01:显示文件的指定前几行
[root@xiaoQ ~]# head -n 5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ? [root@xiaoQ ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

实践操作-02:显示文件的前几个字节
[root@xiaoQ ~]# head -c 5 /etc/passwd root:[root@xiaoQ ~]#

实践操作-03: 显示文件除最后几行之外的内容
[root@xiaoQ ~]# cat > test.txt << EOF > xiaoQ01 > xiaoQ02 > xiaoQ03 > xiaoQ04 > xiaoQ05 > EOF [root@xiaoQ ~]# head -n -2 test.txt xiaoQ01 xiaoQ02 xiaoQ03

1.3.4 文件编辑命令扩展-tail tail命令用于显示文件尾部的内容,tail命令默认输出文件的最后10行。
语法格式:
tail [option] [file] tail选项文件

选项说明:
-c<数目> 指定显示的字节数
-n<行数> 指定显示的行数
-f 实时输出文件变化后的追加的数据
-F 功能等同于 -f --retry
-retry 不停尝试打开文件直到打开为止,与-f参数合用
–pid=进程号 与-f参数连用,在进程结束后自动退出tail命令
-s秒数N 监视文件变化的间隔秒数
-q 不显示包含给定文件名的文件头
-v 总是显示包含给定文件名的文件头
实践操作:
实践操作-01:显示文件指定最后几行内容
[root@xiaoQ ~]# cat test.txt xiaoQ01 xiaoQ02 xiaoQ03 xiaoQ04 xiaoQ05 [root@xiaoQ ~]# tail -n 3 test.txt xiaoQ03 xiaoQ04 xiaoQ05 [root@xiaoQ ~]# tail -3 test.txt xiaoQ03 xiaoQ04 xiaoQ05

实践操作-02:从第几行开始显示文件内容
[root@xiaoQ ~]# tail -n +2 test.txt xiaoQ02 xiaoQ03 xiaoQ04 xiaoQ05

实践操作-03:通过tail命令实时监控文件的变化 重点
说明:为什么要实时监控文件变化?
主要用于监控日志文件信息,可以便于排查系统或服务程序的问题
[root@xiaoQ ~]# tail -f /var/log/messages Dec2 21:51:13 xiaoQ chronyd[863]: Source 193.182.111.141 online Dec2 21:51:13 xiaoQ chronyd[863]: Source 94.130.49.186 online Dec2 21:51:13 xiaoQ chronyd[863]: Source 202.118.1.130 online Dec2 21:51:13 xiaoQ nm-dispatcher: req:4 'connectivity-change': start running ordered scripts... Dec2 21:53:24 xiaoQ systemd: Started Session 67 of user root. Dec2 21:53:24 xiaoQ systemd-logind: New session 67 of user root. Dec2 21:54:27 xiaoQ chronyd[863]: Selected source 202.118.1.130 Dec2 21:54:27 xiaoQ chronyd[863]: System clock wrong by 3.146883 seconds, adjustment started Dec2 21:56:36 xiaoQ chronyd[863]: Source 94.130.49.186 replaced with 162.159.200.1 Dec2 22:01:01 xiaoQ systemd: Started Session 68 of user root.

思考:tail -F tail -f tailf这三种追踪日志信息的方法有什么区别。

1.4 文本数据处理命令 1.4.1 文本数据处理命令-grep grep命令是linux系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据,
如果配合正则表达式一起使用,功能会更加强大;此命令是Linux运维人员必须掌握的命令之一。
grep过滤就相当于是一个筛子,有可能筛子里面的东西是保留的,也有可能是筛出来的需要保留。
语法格式:
grep [option] [pattern] [file] 选项匹配模式文件

grep命令里面的匹配模式,就是你要获取的内容,既可以是普通的文字符号也可以是正则表达式。
选项参数:
-v 显示不匹配的行,或者也就是排除某些行,显示其他行信息
-n 显示匹配的行及行号
-i 不区分大小写,默认是区分大小写的
-c 只统计匹配的行数,注意不是匹配的次数
-w 以单词为单位进行过滤
-o 只输出匹配的内容
实践操作:
实践操作-01:使用grep过滤不包含xiaoQ字符串的行(-v参数实践)
[root@xiaoQ ~]# cat grep_test.txt test xiaoQ xiaoT [root@xiaoQ ~]# grep -v "xiaoQ" grep_test.txt test xiaoT

实践操作-02:使用grep命令显示过滤后的内容的行号(-n参数实践)
[root@xiaoQ ~]# cat grep_test.txt test xiaoQ xiaoQ Linux xiaoT [root@xiaoQ ~]# grep -n "xiaoQ" grep_test.txt 2:xiaoQ 3:xiaoQ Linux

实践操作-03:使用grep命令不区分大小写进行过滤(-i参数实践)
[root@xiaoQ ~]# cat grep_test.txt test xiaoQ xiaoQ Linux XiaoQ xiaoT [root@xiaoQ ~]# grep"xiaoQ" grep_test.txt xiaoQ xiaoQ Linux [root@xiaoQ ~]# grep -i "xiaoQ" grep_test.txt xiaoQ xiaoQ Linux XiaoQ

实践操作-04:计算匹配的字符串的数量(-c参数实践)
[root@xiaoQ ~]# cat grep_test.txt test xiaoQ xiaoQ Linux xiaoQ xiaoQ xiaoT [root@xiaoQ ~]# grep -c "xiaoQ" grep_test.txt 3

实践操作-05:只输出匹配的内容(-o参数实践)
[root@xiaoQ ~]# cat grep_test.txt test xiaoQ xiaoQ Linux xiaoQ xiaoQ xiaoT [root@xiaoQ ~]# grep"xiaoQ" grep_test.txt xiaoQ xiaoQ Linux xiaoQ xiaoQ [root@xiaoQ ~]# grep -o "xiaoQ" grep_test.txt xiaoQ xiaoQ xiaoQ xiaoQ

实践操作-06:利用grep搜索符合要求的用户(-w参数实践)
[root@xiaoQ ~]# cat test.txt 张三男爱好女 张三丰男爱好太极 [root@xiaoQ ~]# grep "张三" test.txt 张三男爱好女 张三丰男爱好太极 [root@xiaoQ ~]# grep -w "张三" test.txt 张三男爱好女

1.4.2 文本数据处理命令-tr tr命令可以读取数据信息进行替换,缩减或者删除字符,并将结果显示输出出来。
语法格式:
tr [option] [SET1] [SET2] tr选项字符1字符2

选项参数:
d 删除字符 ※
-s 保留连续字符的第一个字符,删除其他字符
-c 使用第一个字符串(set1)的补集,取反
实践操作:
实践操作-01:将文件中出现的“abc”替换为 “xyz”
[root@xiaoQ ~]# cat tr_test.txt I am xiaoQ teacher! I teach Linux. I like read book. [root@xiaoQ ~]# tr "teach" "12345" tr_test.txt tr: extra operand ‘tr_test.txt’ Try 'tr --help' for more information. [root@xiaoQ ~]# tr "teach" "12345" < tr_test.txt I 3m xi3oQ 123452r! I 12345 Linux. I lik2 r23d book.

说明:tr命令读取文件内容需要用到标准输入重定向符号<, 并且tr替换信息是按照字符1对1进行替换的。
实践操作-02:将文件中出现的xiaoQ过滤掉,不做输出显示
[root@xiaoQ ~]# tr -d "xiaoQ" < tr_test.txt I mtecher! I tech Lnu. I lke red bk.

说明:在特定场景下,利用tr命令可以对指定字符进行有针对的操作处理。
如有侵权,请联系删除!

    推荐阅读