文件内容相关命令:
1)介绍vi和vim
vi 相当于win记事本,默认是有的,
vim 相当于notepad++,typora(MD),默认没有需要安装。
2)安装vim工具
[root@userboy ~]# rpm -qa vim-enhanced
vim-enhanced-7.4.629-8.el7_9.x86_64
yum install vim-enhanced -y
3)VIM模式
见图:视频里
切入命令模式使用冒号的时候:
:
w 保存 write
u 撤销 undo 保存之前
q 退出 quit
! 强制
4)VIM快捷键
1)普通模式:
1.移动光标
cat /etc/passwd >userboy.txt
G 文件结尾
gg 文件开头
$ 行尾
0 行头
ngg 切换到第n行
n[回车] 移动n行
2.搜索和替换
/内容 向下搜索,此时按n继续搜索,N反向继续搜索。
?内容 向上搜索,此时按n继续搜索,N反向继续搜索。
:%s/A/B/g,把A替换成B,如果A或B中有斜线,把分割的斜线换#或@
s为替换,g全局替换
:n1,n2s/A/B/g n1、n2为数字,在第n1行和n2行间寻找A,用B替换
3.复制、粘贴 删除
yy 复制当前行
nyy 复制从当前开始的n行
p 粘贴到光标的下一行
P 粘贴到光标的上一行
dd 删除当前行
ndd 删除从当前行开始的n行
x 删除光标后字符
X 删除光标前字符
u 撤销
d1gg d1G 删除当前行至第一行
dG 删除当前行至最后一行
d0 删除当前光标文本至行首
d$ 删除当前光标文本至行尾
进入编辑模式命令
i 在当前光标所在处插入文字
A 在当前所在行的行尾最后一个字符处开始插入文字,和I相反
I 在当前所在行的行首第一个非空格符处开始插入文字,和A相反
O 在当前所在行的上一行处插入新的一行
o 在当前所在行的下一行处插入新的一行
2.命令模式
:set nu 显示行号
:set nonu 取消行号
编辑文件同时定位到102行。
vim /etc/sudoers +102
=====cat查看文件内容===========
-n 显示行号
cat /etc/passwd
========echo打印内容输出内容===========
-n 不换行
-e 支持转义字符
\n 换行
\t tab
-n实践:
[root@userboy ~]# echo "userboy";echo usergirl
userboy
usergirl
[root@userboy ~]# echo -n "userboy";echo usergirl
userboyusergirl
-e实践
[root@userboy ~]# echo "userboy\nusergirl"
userboy\nusergirl
[root@userboy ~]# echo -e "userboy\nusergirl"
userboy
usergirl
[root@userboy ~]# echo -e "userboy\tusergirl"
userboy usergirl
===more/less查看文件内容(浏览)===
less参数:
-N 显示行号
===head 头 查看文件头部,默认头10行===
-n数字 显示n行,缩写-数字
实践:
[root@userboy ~]# head -n 5 userboy.txt
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@userboy ~]# head -5 userboy.txt
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
===tail 尾 查看文件尾部,默认10行===
-n数字 显示n行,缩写-数字
userboy:x:1000:1000:userboy:/home/userboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
[root@userboy ~]# tail -2 userboy.txt
userboy:x:1000:1000:userboy:/home/userboy:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
-f 动态跟踪文件尾部的变化,查看日志文件结尾。
测试脚本:
for n in `seq 1000`;do echo "$n I am userboy.I am 30">>~/userboy.txt;sleep 2;done
[root@userboy ~]# tail -f userboy.txt
2 I am userboy.I am 30
3 I am userboy.I am 30
4 I am userboy.I am 30
5 I am userboy.I am 30
6 I am userboy.I am 30
7 I am userboy.I am 30
8 I am userboy.I am 30
===grep 过滤内容,筛选内容==== 三剑客之一,老三
按行输出
grep [选项] 内容 文件
--color-auto 过滤的内容显示颜色
1)过滤出含有root字符串的行
[root@userboy ~]# grep root userboy.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2)过滤出【不】含有root字符串的行
-v 取反
[root@userboy ~]# grep -v root userboy.txt
bin:x:1:1:bin:/bin:/sbin/nologin
3)过滤出含有root字符串(含大写)的行
-i 不区分大小写
[root@userboy ~]# grep -i root userboy.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
491 I ROOT am userboy.I am 30
4)同时过滤含有userboy和root的行。
-E 同时过滤多个字符串
[root@userboy ~]# grep -E "userboy|root" userboy.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
grep -E = egrep
扩展的grep,egrep
[root@userboy ~]# egrep "userboy|root" userboy.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
userboy:x:1000:1000:userboy:/home/userboy:/bin/bash
了解参数
-o 只输出匹配的内容
[root@userboy ~]# grep -o root userboy.txt
root
root
root
-n 过滤出的内容,在文件中的行号
[root@userboy ~]# grep -n root userboy.txt
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@userboy ~]# grep -n ".*" userboy.txt ==cat -n userboy.txt
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
特殊注意:此处过滤的点代表任意一个字符。
-w 按单词过滤
userboy和userboy123不是一个东西了,userboy123不会被过滤出来。
[root@userboy ~]# grep -w userboy userboy.txt
userboy:x:1000:1000:userboy:/home/userboy:/bin/bash
489 I am userboy.I am 30
490 I am userboy.I am 30
========touch 创建文件================
touch file1
touche file1 file2 file3
touch file{1..100}
{1..100} 一个序列
[root@userboy ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@userboy ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@userboy ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
seq输出数字序列
输出1-5
[root@userboy ~]# seq 5
1
2
3
4
5
输出2-5
[root@userboy ~]# seq 2 5
2
3
4
5
步长2,从2到10
[root@userboy ~]# seq 2 2 10
2
4
6
8
10
-s 指定空格为分隔符
[root@userboy ~]# seq -s " " 5
1 2 3 4 5
[root@userboy ~]# echo {1..5}
1 2 3 4 5
-w 补齐位数
[root@userboy ~]# seq -w -s " " 10
01 02 03 04 05 06 07 08 09 10
考题1:在/data目录下创建userboy.txt,并增加"I am studying linux."一行内容。
该题有多种解题方法。
考题2:请用一条命令完成创建目录/userboy/test,即创建/userboy目录及/userboy/test目录。
今日作业:
下节内容:
1.alias/unalias
2.cp直接覆盖知识
3.tr
4.重定向
5.第8章 linux文件类型,查找与打包命令
视频预习: 13 14
https://ke.qq.com/course/2806831?taid=9996020988171311
尖刀组;
1.yum
2.rpm
3.wget
4.curl
5.vim快捷键,命令行快捷键 整理出思维导图。