[#####成功在于你坚持了别人坚持不了的东西####]
vi是Linux命令行界面下的重要文字编辑器。vim是vi命令的增强版,例如高亮显示代码、自动缩进等。
语法格式:
vim [option] [file]
vim 选项 文件
[root@xiaoQ ~]# yum install -y vim
说明:默认centos7系统中可能没有vim命令,需要通过命令方式安装vim
vim分为三种模式:普通模式、编辑模式、命令模式,起作用分别如下:
普通模式:
用vim命令打开一个文件后,默认的状态就是普通模式。
在这个模式中,不能进行编辑输入操作,但可以移动光标,同时还可以执行一些操作命令进行如删除、复制、粘贴等工作。
编辑模式:
在普通模式下不能进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”等字母进入编辑模式后才可以执行编辑操作。
确定文件是否处于编辑模式状态有一个重要的特征,那就是在窗口的左下角要有插入的标记
命令模式:
在普通模式下,输入”:” 或 “/” 或 “?” 时,光标会自动定位在最底行。
在这个模式中,可以执行保存、退出、搜索、显示行号等相关操作。
总结说明:三种工作模式的切换关系
文件编辑基本操作步骤:
打开需要编辑文件:
[root@xiaoQ ~]# vim xiaoQ.txt
进行文件信息编辑:
首先进入编辑模式,输入小写字母 i --> insert,开始进行文件编辑
结束文件编辑操作:
首先在编辑模式状态输入esc,然后在普通模式状态输入:进入命令模式,再输入wq实现文件保存退出
说明:在利用vim编辑文件过程中,要注意系统的输入法状态不能是中文状态。
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系统中编辑
实际操作情况-01:批量删除多行指定信息
进入批量编辑模式 ctrl + v 可视块
进行批量删除操作 d 或者 x
实际操作情况-02:批量增加多列指定信息
进入批量编辑模式 ctrl + v 可视块
选择批量编辑区域 利用方向键
进入插入编辑模式 大写字母 I 或者 shift + i
开始编辑内容信息
退出批量编辑操作 按键盘 esc
常见错误-01:需要指定编辑信息
[root@xiaoQ ~]# vim
~ VIM - Vi IMproved
~
~ version 7.4.629
~ by Bram Moolenaar et al.
~ Modified by <bugzilla@redhat.com>
~ Vim is open source and freely distributable
~
~ Help poor children in Uganda!
~ type :help iccf<Enter> for information
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version7<Enter> for 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删除指定的临时文件
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:打印输出信息使用转义符号
[root@xiaoQ ~]# echo "xiaoQ"
xiaoQ
[root@xiaoQ ~]# echo -e "xiaoQ\c"
xiaoQ[root@xiaoQ ~]#
[root@xiaoQ ~]# echo "xiaoQ01xiaoQ02"
xiaoQ01xiaoQ02
[root@xiaoQ ~]# echo -e "xiaoQ01\nxiaoQ02"
xiaoQ01
xiaoQ02
[root@xiaoQ ~]# echo -e "xiaoQ01\rxiaoQ02"
xiaoQ02
[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"
01 Linux xiaoQ01
02 python xiaoQ02
03 mysql xiaoQ03
实践操作-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
说明:>>/>表示重定向符号信息,可以用于在命令执行后输出到屏幕的信息存入到指定文件中。
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.txt xiaoQ02.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命令就可以将文件内容清空,但文件还是存在的,这个功能在生产工作中也会用到。
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
tacnews 98/tcp # TAC News
tacnews 98/udp # TAC News
metagram 99/tcp # Metagram Relay
--More--(5%)
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 a 8 ssign a single well-known
9 # port number for both TCP and UDP; hence, most ent 9 ries here have two entries
10 # even if the protocol doesn't support UDP operatio/etc/services
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
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
Dec 2 21:51:13 xiaoQ chronyd[863]: Source 193.182.111.141 online
Dec 2 21:51:13 xiaoQ chronyd[863]: Source 94.130.49.186 online
Dec 2 21:51:13 xiaoQ chronyd[863]: Source 202.118.1.130 online
Dec 2 21:51:13 xiaoQ nm-dispatcher: req:4 'connectivity-change': start running ordered scripts...
Dec 2 21:53:24 xiaoQ systemd: Started Session 67 of user root.
Dec 2 21:53:24 xiaoQ systemd-logind: New session 67 of user root.
Dec 2 21:54:27 xiaoQ chronyd[863]: Selected source 202.118.1.130
Dec 2 21:54:27 xiaoQ chronyd[863]: System clock wrong by 3.146883 seconds, adjustment started
Dec 2 21:56:36 xiaoQ chronyd[863]: Source 94.130.49.186 replaced with 162.159.200.1
Dec 2 22:01:01 xiaoQ systemd: Started Session 68 of user root.
思考:tail -F tail -f tailf这三种追踪日志信息的方法有什么区别。
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
张三 男 爱好女
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 m techer!
I tech Lnu.
I lke red bk.
说明:在特定场景下,利用tr命令可以对指定字符进行有针对的操作处理。
如有侵权,请联系删除!