| 按键 | 功能 |
|---|---|
| gg | 光标跳转到文档首行第一个字符 |
| G | 光标跳转到文档末行第一个字符 |
| 行号+gg 或行号+G | 跳转到指定的行 |
| ^ | 光标跳转到行首 |
| $ | 光标跳转到行尾 |
| w | 光标按照单词向后跳转 |
| b | 光标按照单词向前跳转 |
| 按键 | 功能 |
|---|---|
| dd | 删除光标所在行 |
| ndd | 从光标开始处 删除n行 |
| d^ | 删除光标前的所有字符 |
| d$ | 删除光标后的所有字符 |
| yy | 复制光标所在行 |
| nyy | 复制从光标开始的n行 |
| p(小写) | 粘贴内容到光标所在行的下一行 |
| P(大写) | 粘贴内容到光标所在行的上一行 |
| u | 撤销类似于window的ctrl+z |
| cc | 剪切当前行并进入插入模式 |
| 按键 | 功能 |
|---|---|
| i(小写) | 在光标前插入 |
| l(大写) | 在光标所在行行首第一个非空字符前插入 |
| a(小写) | 在光标后插入 |
| A(大写) | 在光标所在行末尾插入 |
| o(小写) | 在光标所在行下一行插入 |
| O(大写) | 在光标所在行上一行插入 |
| s(小写) | 删除光标所在字符并进入插入模式 |
| S(大写) | 删除光标当前行并进入插入模式 |
| cc | 剪切当前行并进入插入模式 |
| 按键 | 功能 |
|---|---|
| /word | 从上而下在文中查找字符串“word”,按n可以匹配下一个到的字符串 |
| 😒 /old/new | 将当前行中查找到的第一个字符“old"替换为"new" |
| 😒 /old/new/g | 将当前行中查找到的所有“old"替换为"new" |
| :n1,n2 s/old/new/g | 在行号n1到n2范围内替换所有字符串“old“为"new" |
| :% s/old/new/g | 将整个文件内的字符串"old"替换为“new” |
| 按键 | 功能 |
|---|---|
| :q | 没有操作,才能退出 |
| :q! | 不保存内容,强制退出 |
| :w | 保存文件 |
| :w /dir/file | 另存为/dir/file |
| :wq 或者ZZ | 保存文件并退出 |
| :wq! | 强制保存退出 |
| 按键 | 功能 |
|---|---|
| :r /dir/file | 在当前文件中读取其他文件内容 |
| :g/word/d | 查找有“word”的行 并删除 |
| :Set nu | 显示行号 |
| :set nonu | 关闭行号显示 |
| :n1,n2 d | 删除n1-n2行内容 |
| :n1,n2 co n | 复制n1-n2行到n行后面 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iE5gVXBz-1659365356058)(%E5%91%BD%E4%BB%A4%E6%A1%88%E4%BE%8B/%E4%B8%89%E7%A7%8D%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%88%87%E6%8D%A2.png)]
按ctrl+v进入可视化模式,该模式可以通过光标选取文本,按y可以复制文本,按c可以剪切文本,按p可以粘贴文本,按P可以粘贴到光标签
当打开一个文件的说话,输入:sp /dri/file 可分屏显示另一个文件
光标在多个文件之前的切换按ctrl+w w
[root@master test]#vim /etc/vimrc
[root@master test]#vim ~/.vimrc
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set tabstop=4 "缩进
set softtabstop=4 softtabstop是“逢4空格进1制表符”,前提是你tabstop=4
set shiftwidth=4 自动缩进空格长度
set mouse=a "使用鼠标
set selection=exclusive
set selectmode=mouse,key
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
[root@ 17:15:50 ~]vim /etc/hostname
[root@ 17:19:12 ~]vim /etc/motd
[root@localhost ~]# vi ~/.bashrc
stty intr "^b"
#中断当前进程的快捷键就会变成ctrl+b
(1) 在/目录下创建一个临时目录test;
(2)在临时目录test下创建五个文件,文件名分别为passwd,group,bashrc,profile, sshd_config;
(3)在/test创建/etc/motd的软链接,文件名为motd.soft;创建/etc/motd的硬链接为motd.hard
(1)将系统内核版本信息,发行版本信息,写入到/test/motd.soft文件中
(2)将当前主机主机名,当前用户使用的shell信息追加到/test/motd.hard文件中
(3)将根目录下的文件的文件名写入/test/file文件中
(4)查看当前工作目录是否为/test目录,将当前工作目录的详细信息追加到/test/file文件中
(1)将当前时间添加至/test目录下的passwd,group,bashrc,profile,sshd_config文件中 (2)将当前用户的用户名追加至/test目录下的passwd,group,bashrc,profile,sshd_config文件 中
(1)将/etc/passwd文件内容读入/test/passwd,并修改文件里的root字符为admin
(2)将/etc/group文件内容读入/test/group,只保留root开头的行内容
(3)将/root/.bashrc文件内容读入/test/bashrc,删除#号开头的行内容
(4)将/etc/ssh/sshd_config文件内容读入/test/sshd_config,在该文件的第17行后添加一行内容 Port 22
(5)将/test/sshd_config文件中的第40-50行的yes改为no
(6)将/test/sshd_config文件另存为/test/sshd.conf
(7)将/test目录下的passwd,group,bashrc文件中的第一行内容复制至文档最后一行
(8)将/test目录下的profile,sshd_config文件中前两行内容复制至文档倒数第二行
| 命令 | 常用选项 | 说明 |
|---|---|---|
| cat | -n 对输出内容中的所有行标注行号,-b对输出内容的非空行标注行号 | 查看文本文件的内容 |
| head | -num 指定需要显示文件num行的内容 | 默认查看文档前十行内容 |
| tail | -num 指定需要显示文件num行的内容 -f使tail不停地去读取和显示文件最新的内容,这样有实时监控的效果。tail命令更多的用于查看系统日志文件,按【Ctrl+C】终止显示可跟踪 | 默认查看文档后10行的内容 |
| more | -c 从顶部清屏然后显示文件内容 | 分页查看文件内容,按Enter键乡下逐行滑动 ,按空格键乡下翻一屏,按B键向上翻一屏,文件末尾moer会自动退出 |
| less | -c 从顶部清屏然后显示文件内容,-N 其作用是在每行前添加输出行号 | 分页查看文件内容,按Enter键乡下逐行滑动 ,按空格键乡下翻一屏,按b键向上翻一屏,按q退出 |
[root@master test]# cat /etc/ssh/sshd_config
[root@master test]# head /etc/ssh/sshd_config
[root@master test]# tail /etc/ssh/sshd_config
[root@master test]# more /etc/ssh/sshd_config
[root@master test]# less /etc/ssh/sshd_config
功能:在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用
格式: grep 选项…… 关键字符串 文件名称……
| 选项 | 说明 |
|---|---|
| -c | 仅显示找到的行数 |
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向选择———仅列出没有“关键词”的行 |
| -A | -A 2 搜索时显示匹配到的那一行以及下2行 |
| -B | -B 2 搜索时显示匹配到的那一行以及上2行 |
| -C | -C 2 搜索时显示匹配到的那一行以及上下2行 |
在Linux系统中,/etc/passwd文件是保存着所有的用户信息,而一旦用户的登录终端被设置 成/sbin/nologin,则不再允许登录系统,因此可以使用grep命令来查找出当前系统中不允许登录系统的 所有用户信息:
[root@ 17:19:55 ~]grep /sbin/nologin /etc/passwd
| 匹配模式 | 说明 |
|---|---|
| grep h 文件名 | 查找文件里有字符h的行 |
| grep ^q 文件名 | 匹配以q开始的行 |
| grep ^qf 文件名 | 匹配以q或者f开头的行 |
| grep ^^qf 文件名 | 不匹配以q或f开头的行 |
| grep ^0-9 文件名 | 匹配以数字开头的行 |
| grep q$ 文件名 | 匹配以q结束的行 |
| grep ^$ | 过滤空白行 |
| grep -r h ./* | 如果要明确搜索当前目录中的子目录有h的行 |
| grep -d skip h ./* | 忽略当前目录下的子目录下的普通文件 |
[root@ 18:14:43 ~]grep a /etc/passwd
[root@ 18:24:36 ~]grep ^q /etc/passwd
qemu:x:107:107:qemu user:/:/sbin/nologin
[root@ 18:35:25 ~]grep ^[qf] /etc/passwd
[root@ 18:35:25 ~]grep ^[^qf] /etc/passwd
[root@ 18:38:27 ~]grep ^[0-9] /etc/passwd
[root@ 18:38:03 ~]grep ^0-9 /etc/passwd
[root@ 18:39:13 ~]grep q$ /etc/passwd
[root@ 18:41:43 ~]grep ^$ /etc/passwd
cut命令用于按列提取文本内容,语法为:cut [选项] 文件名称
系统默认是按冒号来隔开
[root@localhost ~]# head -n 20 /etc/passwd^C
[root@localhost ~]# cut -d: -f1 /etc/passwd
sort命令用于对文本内容进行排序显示,语法为: sort [选项] 文件名
| 选项 | 作用 |
|---|---|
| -f | 忽略大小写 |
| -b | 忽略缩进与空格 |
| -n | 以数值型排序 |
| -r | 反向排序 |
| -u | 去除重复行 |
| -t | 指定间隔符 |
| -k | 设置字段范围 |
[root@localhost ~]# sort file
[root@localhost ~]# sort -f file
[root@localhost ~]# sort -b file
[root@localhost ~]# sort -n file
[root@localhost ~]# sort -r file
[root@localhost ~]# sort -u file
[root@localhost ~]# sort -t: file
[root@localhost ~]# sort -t: -k 3 -n file
uniq命令用于去除文本中连续的重复行,语法为: uniq [选项] 文件名称
| 选项 | 全称 | 说明 |
|---|---|---|
| -c | count | 在每行前加上表示相应行目出现次数的前缀编号 |
| -d | repeated | 只输出重复的行 |
| -f | skip-fields=N | -f忽略的段数 -f 1忽略一段 |
| -i | ignore-case | 不缺分大小写 |
| -s | skip-chars=N | 跟-f有点像,不过-s是忽略,后面n是多少就忽略多少 |
| -u | unique | 去除重复的后,全部显示出来 |
| -w | check-chars=N | 对每行第N个字符以后的内容不做对照 |
[root@localhost ~]# uniq file
1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。
[root@master ~]# uniq -c uniq.txt
4 Welcome to kongd.com
1 Red Hat certified
1 Free Linux Lessons
1 Professional guidance
1 Linux Course
tr 指令从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出。
语法: tr [OPTION]…SET1[SET2]
| 选项 | 说明 |
|---|---|
| -c | 反选设定符 |
| -d | 删除指定符 |
| -s | 缩减连续重复的字符成指定的单个字符 |
[root@localhost ~]# cat tesfile | tr a-z A-Z
( 1)查看/etc/passwd文件的第6行
[root@ 18:51:03 ~]head -6 /etc/passwd |tail -1
sync:x:5:0:sync:/sbin:/bin/sync
( 2)查看/etc/selinux/config 以 SELINUX开头的行
[root@ 18:51:37 ~]grep ^SELINUX /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
( 3)查找/etc/ssh/sshd_config 以no结尾的行
[root@ 18:59:14 ~]grep no$ /etc/ssh/sshd_config
(4)过滤/etc/ssh/sshd_config包含数字的行
[root@localhost ~]# cat /etc/ssh/sshd_config | grep -v [0-9]
查看/etc/passwd文件以":”为分隔符的第一列内容,并按字母逆序排序写入/username文件统计/etc/passwd文件一共有几行,只把行数显示。
[root@localhost ~]# cut -d : -f 1 /etc/passwd | sort -r |tee /username
[root@localhost ~]# cut -d : -f 1 /etc/passwd | sort -r > /username
[root@localhost ~]# echo 系统执行频率最高的前三个命令`history | tr -s " " " " | cut -d " " -f 3 | sort |uniq -c| sort -n | tail -10 | tr -s " " " " | cut -d " " -f 3`
系统执行频率最高的前三个命令grap uniq ll [root@localhost head grep echo cat cut sort
aster ~]# uniq -c uniq.txt
4 Welcome to kongd.com
1 Red Hat certified
1 Free Linux Lessons
1 Professional guidance
1 Linux Course
## 11.tr 替换文件中的字符显示
tr 指令从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出。
### 11.1 语法
语法: tr [OPTION]…SET1[SET2]
| 选项 | 说明 |
| ---- | ---------------------------------- |
| -c | 反选设定符 |
| -d | 删除指定符 |
| -s | 缩减连续重复的字符成指定的单个字符 |
### 11.2示例 将文件testfile中的小写字母全部转换成大写字母,
[root@localhost ~]# cat tesfile | tr a-z A-Z
## 12.练习
### 12.1文件内容查看
( 1)查看/etc/passwd文件的第6行
[root@ 18:51:03 ~]head -6 /etc/passwd |tail -1
sync: x :5:0:sync:/sbin:/bin/sync
( 2)查看/etc/selinux/config 以 SELINUX开头的行
[root@ 18:51:37 ~]grep ^SELINUX /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
( 3)查找/etc/ssh/sshd_config 以no结尾的行
[root@ 18:59:14 ~]grep no$ /etc/ssh/sshd_config
(4)过滤/etc/ssh/sshd_config包含数字的行
[root@localhost ~]# cat /etc/ssh/sshd_config | grep -v [0-9]
### 12.2、文本处理
查看/etc/passwd文件以":”为分隔符的第一列内容,并按字母逆序排序写入/username文件统计/etc/passwd文件一共有几行,只把行数显示。
[root@localhost ~]# cut -d : -f 1 /etc/passwd | sort -r |tee /username
[root@localhost ~]# cut -d : -f 1 /etc/passwd | sort -r > /username
### 12.3 统计系统执行频率最高的前十个命令
[root@localhost ~]# echo 系统执行频率最高的前三个命令 ${history | tr -s " " " " | cut -d " " -f 3 | sort |uniq -c| sort -n | tail -10 | tr -s " " " " | cut -d " " -f 3}
系统执行频率最高的前三个命令 grep uniq root@localhost head grep echo cat cut sort
``