vim
命令模式
d+enter 删除光标所在行以及下一行
dd 删除光标所在行
4dd 从光标所在行开始一共删除4行
dG 删除光标所在行,以及到文档尾
dgg 删除光标所在行,以及到文件首
s 替换,替换光标所在字符(删除光标所在字符)
S 替换,替换光标所在行 -----插入模式
G 跳转到文档末行的行首
gg 跳转到文档首行的行首
5G 跳转到文件的第五行
^ 光标跳转到行首
$ 光标跳转到行尾
yy 复制光标所在行 4yy 4,8yy
p 粘贴在光标的下一行
cc 剪切光标所在行 -----进入插入模式
u 向左撤销
ctrl+r 向右撤销
命令模式–进入插入模式
s 删除光标所在字符进入插入模式
S 删除光标所在行并进入插入模式
a 插入到光标后
A 插入到光标的所在行的行尾
o 插入到光标所在行的下一行
O 插入到光标所在行的上一行
命令模式----进入到末行模式
:w 写入保存
:w FILENAME
:q 退出
: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命令的结果显示在文档中
.*
:%s/.*#.*//g
正则符:.任意单个
*匹配前一个字符任意次
通配符:*任意长度的任意字符
?匹配任意单个字符
文本内容处理命令
echo 打印命令
#echo helloworld $引用变量
“”弱引用可以解释特殊含义字符
#echo $ ‘’强引用(不解释特殊含义符号)
``命令替换符
$()命令替换符
Linux中文件的描述符:0 标准输入
1 标准输出(正确输出)
2 错误输出
> 输出重定符(将程序的内容输出重定到指定文件内—将内容写入文件,会覆盖文件原内容;
>> 追加重定符,不会覆盖
< 输入重定符;
<< 终止结束符
#head /etc/passwd >file
#tail -2/etc/passwd >>file
#cmd 2>file 把cmd的错误结果输入到file文件
#cmd &> file &表示1和2 把cmd正确或者错输出写入到file文件==cmd 1>file1 2
文件的行进行处理,不会编辑源文件
cut 剪切;
-c 按照字符进行剪切
-d 分割字符
-f 分割字段
# cut -c 1-4 文件名
sort 文本内容排序;
默认按照文件行的字符进行比较(从小到大)
-r 降序 从大到小;
-n 按照数值大小比较 (从小到大)
-u 去重
wc 文本统计
默认统计文件的行还有单词数,字节数
-l 统计行数
-w 统计单词
-c 统计字节
-m 字符
uniq 去重
重复行需要相临才会去重
-c 标记重复次数
-d 显示具体重复的信息
-D 列出具体重复的信息
tr 字符替换命令
默认替
tr set1 set2
#tr hl 0 把hl都替换为0字符
#tr 1 001 把l字符替换成0字符
-c 反选定,需要替换的保留 1 0 除1之外的字符替换为0字符
-t 等长替换 hl 0 h替换成0
-d 删除单词 hl 删除hl单词
-s 多个连续字符重复字符替换为单个字符
grep 文本过滤
‘’ 文件
-v 反选定
-o 只显示关键字
-i 过滤关键字忽略大小写
^$ 空行
| 管道符(无名管道) 前一个命令的输出结果按照字符流的形式通过管道符
|tee T型管道横向输出将钱一个文件的标准输出作为后面文件的标准输入 > |tee == > |tee -a==>>
纵向输出将钱一个命令的标准输出直接在终端打印显示
shell三剑客 grep sed awk
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
[root@localhost ~]# cat /GIU
997
996
995
。
。
。
。
193
172
171
12
113
107
1000
100
1
0
0
0
0
0
3.通过查看时间命令将分别将年月日时分写入A文件
[root@localhost ~]# echo 当前时间是.! `date` > a
[root@localhost ~]# cat /a
nowtime .! Mon Nov 28 12:47:28 CST 2022
4.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
# wc -l /etc/passwd
[root@localhost ~]# wc -l /etc/passwd
46 /etc/passwd
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