vim 文本编辑器(底层编辑器默认为vi) nano
vim进入
q退出
直接输入vim FILE 进入命令模式(没有任何信息,显示文件名)
a 进入Insert(插入)模式(终端最后一行显示Insert(中文版为插入))编辑文件内容
: 进入末行模式(:)
两个其他的模式都是通过esc返回命令模式
命令模式:
d + ENTER 删除光标所在行以及光标下一行
dd 删除光标所在行
x 删除光标所在字符
N 删除光标行(字符)开始一共N行(字符)如:Ndd 3dd删除光标行开始一共三行 Ndd 3,5dd删除3到5行的内容
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 字符替换,替换光标所在字符
yy 复制光标所在行 特:4yy复制光标所在行以下四行内容
p 粘贴在光标所在的下一行
cc 剪切光标所在行
G 跳转到文档尾的行首
gg 跳转到文档首的行首
^ 跳转到行首
$ 跳转到行尾
u 向左撤销(撤回)
ctrl加r 向右撤销(下一步)
命令模式进入插入模式的方式
a 插入光标
A 插入到光标所在行的行尾
i 插入到光标前
I 插入到光标所在行的行首
o 插入到下一行
O 插入到上一行
s 删除光标字符进入插入模式
S 删除光标所在行进入插入模式
末行模式:
:wq 保存并退出
:q 不保存并退出
:q! 强制退出
:wq! 强制保存并退出
:15
:set nu 显示行号
/root 匹配root关键词
:noh 取消高亮显示
:1,5 co 10 把1到5行的内容复制到第10行下
:% s/root/000/ 关键字符替换,替换的是每一行中第一次匹配的的root关键词
:% s/root/000/g 表示把所有root替换成000
:r FILENAME 把指定文件内容读取到当前文件光标的下一行
正则符(针对数据内容):"." 任意单个字符
"*" 匹配前一个字符任意次
通配符(针对文件名):* 任意长度的任意字符
?匹配任意单个字符
文本内容处理命令
echo 打印命令(标准输入输出的命令)
#echo helloworld
[root@peach ~]# echo $HOSTNAME $引用变量
peach
[root@peach ~]# echo "$HOSTNAME" “”弱引用符(可以结束特殊含义的字符)
peach
[root@peach ~]# echo '$HOSTNAME' ’‘强引用(不解释特殊含义的字符)
$HOSTNAME
[root@peach ~]# echo 当前主机时间`date` ··命令替换符
当前主机时间2022年 11月 26日 星期六 14:51:59 CST
[root@peach ~]# echo 当前主机时间$(date) $()命令替换符
当前主机时间2022年 11月 26日 星期六 14:52:57 CST
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
| 管道符(无名管道)前一个命令的输出结构按照字符流的形式通过管道符连接后一个命令进行处理
|tee T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tee== > |tee-a == >>
纵向输出将前一个命令的标准输出直接在终端打印显示
[root@peach ~]# head -2 /etc/passwd |tee file.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@peach ~]# head -2 /etc/passwd |tee -a file.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@peach ~]# cat file.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
文件的行进行处理;将处理的结果显示在终端
cut 剪切
-c 字符
-d 分割字符
-f 分割字段
eg1: [root@peach ~]# cat file.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@peach ~]# cut -d : -f 3 file.txt
0
1
0
1
eg2:
[root@peach ~]# date
2022年 11月 26日 星期六 16:15:56 CST
[root@peach ~]# date | cut -d " " -f 5
16:18:00
[root@peach ~]# echo 当前系统的时间`date|cut -d " " -f 5`
当前系统的时间16:20:11
sort 排序
默认按照文件行的字符进行比较(从小到大)
-r 降序(从大到小)
-n 按照数值比较
-u (unique) 去重
eg: #sort -nu aaa 将文件中的行按照数值从小到大显示,并且重复行只显示一次
uniq 去重
重复行必须相邻
-c 显示重复次数
-d 显示文件重复出现的内容
-D 所有重复行
[root@peach ~]# sort aaa | uniq -d 34
[root@peach ~]# sort aaa | uniq -D 34 34 34 34
wc 文本统计 word count
wc FILENAME 统计指定文件的行,单词数和字节数 -l 统计行数 -w 统计单词数 -m 统计字符数 -c 统计字节数
tr 字符替换命令
[root@peach ~]# echo helloworld | tr l 0 把l字符替换成0字符
he00owor0d
[root@peach ~]# echo helloworld | tr hl 0 把h以及l字符替换成0字符
[root@peach ~]# echo helloworld | tr l 01 把l字符替换成0字符
[root@peach ~]# echo helloworld | tr -t hl 0 等长字符替换 把h字符替换为0字符
[root@peach ~]# echo helloworld | tr -c l 0 反选定; 除了l字符之外的字符替换为0字符 [root@peach ~]# echo helloworld | tr -d hl 删除字符;删除hl字符
[root@peach ~]# echo 1 2 3 | tr -s " " " " 将多个连续重复字符替换为单个字符;将多个连续重复的空格字符替换成单个空格字符
[root@peach ~]# df -h | tr -s " " " " | cut -d " " -f 4
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 '^$' ^$ 空白行
2.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
3.通过查看时间命令将分别将年月日时分写入A文件
4.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
5.不显示/etc/login.defs 文件中以#开头的行以及空白行。