day04
vim 文本编译器 vi
命令模式:
d +enter 删除光标所在行及光标下一行
dd 删除光标所在行
x 删除光标所在字符
Ndd 3dd 删除光标行开始一共三行 3,5dd删除3-5行内容
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 字符替换,替换光标所在字符
yy 复制光标所在行 4yy
p 粘贴在光标所在的下一行
cc 剪切光标所在行 进入插入模式
G 跳转到文档尾的首行 15G
gg 跳转到文档首的行首
^ 跳转到行首
$ 跳转到行尾
u 向左撤销
ctrl-r 向右撤销
命令模式进入插入模式的方式
a 插入光标后
A 插入到行尾
i 插入到光标前
I 插入到行首
o插入到下一行
O 插入到上一行
s 删除光标字符进入插入模式
S 删除光标行进入插入模式
末行模式 :
:wq保存退出
:q 退出
:q! 强制退出
:wq!
:15 跳转15行
:set nu 显示行号
/root 匹配root关键字
:noh取消高亮显示
:1,5co 10 1-5行信息复制到第10行
:% s/root/000/ 关键字符替换,替换的是每一行中第一次匹配的root关键字
:% s/root/000/g 关键字符替换,替换的是每一行中所有匹配的root关键字
:r FILENAME 把指定文件内容读取当前文件光标的下一行
(3):% s/.*#.*//g
.*
正则符:. 任意单个字符(数据内容)
* 匹配前一个字符任意次
通配符:* 任意长度的任意字符(文件名)
?匹配任意单个字符
(4):set nu
(5):5
命令模式下 o
(6):% s/timeout=5/time=30/g
(7):% s/root/admin/g
(8):1 co 213
(9):w /boot/newfile2
文本内容处理命令
echo打印命令(标准输入输出的命令)
#echo helloworld
[root@localhost ~]# echo $HOSTNAME $引用变量
localhost.localdomain
[root@localhost ~]# echo "$HOSTNAME “”弱引用符(可以解释特殊含义的字符)
localhost.localdomain
[root@localhost ~]# echo '$HOSTNAME' ‘’(不解释特殊含义的字符)
$HOSTNAME
[root@localhost ~]# echo 当前主机时间date
当前主机时间date
[root@localhost ~]# echo 当前主机时间`date` ``命令替换符
当前主机时间Mon Nov 28 14:31:20 CST 2022
[root@localhost ~]# echo 当前主机时间$(date) $()命令替换符
当前主机时间Mon Nov 28 14:32:25 CST 2022
linux中文件的描述符 0标准输入 1标准输出(正确输出)2错误输出
> 输出重定符(将程序的内容输出重定到指定文件–将内容写入文件,会覆盖源文件内容)
>> 输出追加重定向符
< 输入重定向符
<< 终止结束符
#head /etc/passwd > file
#tail -2 /etc/passwd >> file
#cmd 2> file1 把cmd的错误结果输入到file1文件
#cmd &> file1 & 表示1和2 把cmd正确或者错输出写入到file1文件 == cmd 1>file1 2>&1
| 管道符(无名管道) 前一个命令的输出结果按照字符流的形式通过管道符连接后一个命令进行处理
|tree T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tree == > | tree -a == >>;纵向输出将前一个命令的标准输出直接在终端打印显示
文件的行进行处理;将处理的结果显示在终端不会对源文件更改
cut剪切
-c 字符
-d 分割字符
-f 分割字段
[root@localhost ~]# echo 当前系统的时间`date|cut -d " " -f 4`
当前系统的时间16:32:16
sort 文本内容排序
默认按照文件行的字符进行比较(从小到大)
-r 降序 从大到小
-n 按照数值比较(从小到大)
-u unique 去重
#sort -nu aaa 将文件中的行按照数值从小到大显示,并且重复行只显示一次
uniq去重,重复行必须相邻
[root@localhost /]# sort aaa | uniq
-c 显示重复次数
-d 显示文件重复出现的内容
-D 所有重复行
wc文本统计word count
wc FILENAME 统计指定文件的行、单词数、字节数
-w 统计单词数
-m 统计字符数
-c 统计字节数
-l 统计行数
tr字符替换命令
tr set1 set2
[root@localhost ~]# echo helloword | tr l 0 把l字符替换成0字符
he00oword
[root@localhost ~]# echo helloword | tr hl 0 把h以及l字符替换为0字符
[root@localhost ~]# echo helloworld | tr l 01 把l字符替换成0字符
[root@localhost ~]# echo helloworld | tr -t hl 0 等长字符替换:把h字符替换为0字符
[root@localhost ~]# echo helloworld | tr -c l 0 反选定:除了l
[root@localhost ~]# echo helloworld | tr -d hl 删除字符:删除hl字符
[root@localhost ~]# echo 1 2 3 | tr -s " " " " 将多个连续重复字符替换为单个字符;将多个连续重复的空格字符替换为单个空格字符
#df -h 查看文件系统使用情况
grep文本过滤
格式: grep ‘关键字’ FILENAME
grep ‘root’ /etc/passwd 过滤关键字,有root关键字行打印到终端
grep -o ‘root’ /etc/passwd 过滤关键字,只把root关键字打印到终端
grep -i ‘ROOT’ /etc/passwd 过滤关键字乎略大小写
grep -v ‘root’ /etc/passwd 过滤关键字,把没有关键字的行显示
#cat /etc/login.defs
grep -v ‘^#’ /etc/login.defs ^#以#号开头
grep -v ‘^#’ /etc/login.defs | grep -v '^KaTeX parse error: Double superscript at position 5: ' ^̲ 空白行
作业题:
1.课程笔记总结
2.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
[root@localhost ~]# cat /etc/passwd | cut -d : -f 3 | sort -rn > UID
[root@localhost ~]# cat /etc/passwd | cut -d : -f 3 | sort -rn |tee
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -rn |tee UID
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -rn > UID
[root@localhost ~]# cut -d : -f 4 /etc/passwd | sort -rn > GIU
3.通过查看时间命令将分别将年月日时分写入A文件
[root@localhost ~]# date |cut -d " " -f 6 > A
[root@localhost ~]# date |cut -d " " -f 2,3,4 | cut -d : -f 1,2 >> A
[root@localhost ~]# cat A
2022
Nov 30 23:23
4.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
[root@localhost ~]# echo 当前系统共有`wc -l /etc/passwd | cut -d " " -f 1`个用户
当前系统共有46个用户
5.不显示/etc/login.defs 文件中以#开头的行以及空白行。
[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v '^$'
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512